您的位置:首页 > 运维架构 > Linux

linux下共享文件系统的服务NFS(Network File System)网络文件系统

2019-05-30 23:58 1441 查看

1.什么是NFS?

NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

2.使用共享文件系统的好处

  1. 节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用。
  2. 用户不需要在网络中的每个机器上都建有Home目录,Home目录可以放在NFS服务器上且可以在网络上被访问使用。
  3. 一些存储设备如软驱、CDROM和Zip(一种高储存密度的磁盘驱动器与磁盘)等都可以在网络上被别的机器使用。这可以减少整个网络上可移动介质设备的数量。
    文件系统属于内核空间里面的,内核调用到内存当中使用
    文件系统是磁盘在内核上面的一个映射
    把远程主机的东西挂载到本地,直接在本地修改,并且同步到远程主机上面
    nfs网络文件系统

4.以下是搭建nfs系统,实现本地可以挂载

实验步骤:

在205主机上面搭建nfs文件系统:
yum install nfs-utils 安装服务


vim /etc/exports编辑该服务的配置文件
/mnt 172.25.254.0/24(ro,sync)
exportfs -rv 刷新


systemctl status nfs-server 查看服务是否开启


在105主机上面测试:

yum install nfs-utils -y


showmount -e 172.25.254.111快速查看111远程服务器共享出来的东西(错误)因为服务端的火墙开着

在205主机上面

systemctl status firewalld
systemctl stop firewalld

在105主机上面:

showmount -e 172.25.254.111快速查看111远程服务器共享出来的东西(正确)
但是看不到/mnt这个目录 因为服务器的nfs服务没有开启



在205主机上面:

systemctl start nfs-server
exportfs -rv刷新

在105主机上面:

showmount -e 172.25.254.111可以看到/mnt

mount 172.24.254.111:/mnt/ /mnt/挂载服务端的目录到本地

df查看挂载

cd /mnt/进入这个目录 实际上进入了服务器的目录
ls查看服务器的这个目录里面的内容
touch file失败

在105上面:

umount /mnt卸载
df查看是否卸载

在205主机上面:

vim /etc/exports编辑改服务的配置文件
/mnt 172.25.254.0/24(ro,async)不同步
exportfs -rv刷新



在105上面:

mount 172.25.254.111:/mnt/ /mnt/
df

cd /mnt
ls
touch file(虽然不允许,但是响应比较快)

5.怎样将nfs服务器的目录可以挂载,并且可以在本地对它修改

在服务端:

vim /exports
改为:/mnt 172.25.254.0/24(rw,async)(可以写)
exportfs -rv



在客户端:

mount 172.25.254.111:/mnt/ /mnt/
dfcd /mnt
touch file不行(虽然服务允许了,但是文件系统的权限不允许)


在服务端:

ls -ld /mnt/查看nfs服务器的这个目录的权限
chmod 777 /mnt/改文件系统的权限


在客户端:

touch file
ls



在服务端:

ls 有了 ls -l file(文件属于服务端匿名用户的)

6.在本地建立东西所属用户的身份设置:

anonuid=1001(指定客户端的用户身份为服务端已经存在的用户身份)
就是客户端建立文件的身份是服务端指定的服务端自己存在的用户,客户端不存在这个用户

no_root_squash (指定沿用客户端挂载的用户身份) 客户端以哪个身份建立文件,文件就属于客户端哪个用户的

all_squash(转变所有的客户端的用户身份为服务端的用户身份)
不管客户端以哪个身份建立文件,文件的所有人所有组均为服务器指定转换为服务器自己存在的用户身份
都会被映射成服务端匿名用户,如果指定了,就是指定的1001的用户
优先级由低到高

实验步骤:
在客户端

cd
umount /mnt

在服务端:

useradd westos新建一个普通用户
id westos查看他的id

vim /etc/exports 编辑nfs服务的配置文件
/mnt 172.25.254.0/24(rw,async,anonuid=1001,anonugid=1001)使得在客户端本地建立文件
属于服务端的指定的用户
exportfs -rv刷新



客户端:

touch file1
ls -l 发现file1的文件的属于1001的
id westos 发现客户端westos不存在



在服务端:

ll发现file1属于westos

vim /etc/exports
/mnt 172.25.254.0/24(rw,async,anonuid=1001,anonugid=1001,no_root_squash)让文件属于客户端谁建立就属于谁
exportfs -rv


客户端:

touch file2
ll 发现file2 属于root(客户端的root)


服务端:

客户端:

chmod 777 /mnt
ls -ld /mnt

su - student切换用户
cd /mnt进入nfs服务器的目录
ls
touch file3 建立文件
ll 发现file3属于student属于student自己

在服务端;

ll发现file3属于student

在客户端多建立两个用户
切换到用户,建立一个文件试试
useradd  yyh
su - yyh
cd /mnt
touch file4
ll 属于yyh

在服务端:

ll file4属于westos
因为westos和yyh的id一样


vim /etc/exports
/mnt 172.25.254.0/24(rw,async,anonuid=1001,anonugid=1001,no_root_squash,all_squash)使得客户端建立的文件均属于服务端的用户
exportfs -rv



在客户端:

touch file5
ll 发现属于yyh(1001)

在服务端

ll 发现属于westos(1001)

7.nfs在企业里面的自动挂载和卸载

企业当中系统和存储分离
集群:具有相同功能的一群主机
前面当一个用户注册信息的时候放在一台主机里面,当主机坏了,这个用户就登陆不了了
当由有多个用户分别对应多台主机的时候,每个用户的信息都在自己的服务器里面放着
但是这样很不好,当其中一个服务器挂了,那个主机的信息就没了
实际在企业当中,主机系统和存储数据是分离的,客户通过主机注册系统,然后放到存储数据的地方
每台主机和存储设备相连
但是当主机不用的时候,没有必要和存储系统连接,浪费资源
现在想实现客户端用的时候自动挂载,不用的时候自动卸载
之前mount umount很麻烦

以下的操作都在客户端进行:

df查看上一个实验有没有卸载
umount /mnt卸载

yum install autofs -y安装可以实现自动挂载文件系统的服务

systemctl start autofs开启服务
systemctl enable autofs设置开机启动

cd /net 进入
ls查看什么都没有
cd  172.25.254.111进入服务器
pwd

cd /mnt进入修改目录
df查看有没有自动挂载
(cd /net/172.25.254.111/mnt ls也可以,这样不容易出错)
cd退出
df 依然挂载,没有自动卸载,因为默认停留时间是300s
改配置文件
rpm -qc autofs 查看配置文件,版本不一样,配置文件不一样

rpm -qa | grep autofs
vim /etc/sysconfig/autofs
改等待时间
systemctl restart autofs.services


cd /net/172.25.254.111/mnt
df
cd
df
(可看到已经自动挂载)


注意:不要一直df查看,查看一次就会被读取一次
下面想改变自动挂载的目录

现在不想通过/net 这个目录自动挂载
172.25.254.111:/mnt/ /mnt/westos
现在想改变挂载策略,将服务端的目录 挂载到 我的客户端我想挂载的任何目录上
实际上客户端/mnt/westos是不存在的
以下所有的实验都在客户端进行:
cd /mnt/westos不存在
172.25.254.111:/mnt /mnt/westos 想自动挂载在/mnt/westos上面
vim /etc/auto.master
写入:/mnt(目的挂载目录的上一级目录) /etc/auto.nfs(在这个文件里面编写)
vim /etc/auto.nfs

westos(目的挂载目录) 172.25.254.111:/mnt服务端被挂载的目录
systemctl restart autofs


cd /mnt/westos
ls
df
可以看到:172.25.254.111:/mnt挂载在我指定的/mnt/westos上面
cd
df 自动卸载

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: