Linux文件共享之NFS
简介
NFS(Network File
System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。功能: 可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。 2、NFS的好处
节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用。
用户不需要在网络中的每个机器上都建有Home目录,Home目录可以放在NFS服务器上且可以在网络上被访问使用。
一些存储设备如软驱、CDROM和Zip(一种高储存密度的磁盘驱动器与磁盘)等都可以在网络上被别的机器使用。这可以减少整个网络上可移动介质设备的数量。
NFS参数
ro | 只读访问 |
rw | 读写访问 |
sync | 所有数据在请求时写入共享 |
async | NFS在写入数据前可以相应请求 |
secure | NFS通过1024以下的安全TCP/IP端口发送 |
insecure | NFS通过1024以上的端口发送 |
wdelay | 如果多个用户要写入NFS目录,则归组写入(默认) |
no_wdelay | 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。 |
Hide | 在NFS共享目录中不共享其子目录 |
no_hide | 共享NFS目录的子目录 |
subtree_check | 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认) |
no_subtree_check | 和上面相对,不检查父目录权限 |
all_squash | 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。不管客户端以哪个身份建立文件,都会被映射成服务端匿名用户,如果指定了,就是指定的1001的用户 |
no_all_squash | 保留共享文件的UID和GID(默认) |
root_squash | root用户的所有请求映射成如anonymous用户一样的权限(默认) |
no_root_squas | root用户具有根目录的完全管理访问权限 ,客户端以哪个身份建立文件,文件就属于客户端哪个用户的 |
anonuid=xxx | 指定NFS服务器/etc/passwd文件中匿名用户的UID ,指定客户端的用户身份为服务端已经存在的用户身份 |
前期准备
server1-172.25.70.11 | 服务端 |
server2-172.25.70.12 | 客户端 |
部署NFS
server1
yum install nfs-utils -y
systemctl start nfs-server 开启服务nfs
vim /etc/exports 编辑该服务的配置文件
/mnt 172.25.70.0/24(ro,sync)
将这台nfs服务器的/mnt这个目录挂载在本地这个网段的任何一个主机上面,并且只读,而且同步
exportfs -rv 刷新
systemctl stop firewalld
firewall-cmd --list-all 或者查看防火墙的nfs和rpc服务是否启动
server2
yum install nfs-utils -y
systemctl start nfs-server
exportfs -rv刷新
showmount -e 172.25.70.11 快速查看126远程服务器共享出来的东西
mount 172.25.70.11:/mnt/ /mnt/ 挂载服务端的目录到本地
客户端可读写
server1
vim /etc/exports
/mnt 172.25.70.0/24(rw,sync)
exportfs -rv刷新更改
在服务端,vim /etc/exports 修改成为读写方式共享,让客户端可以建立和删除文件
server2
服务端指定文件所有者
vim /etc/exports
/mnt 172.25.70.0/24(rw,async,anonuid=1001,anonugid=1001)使得在客户端本地建立文件属于服务端的指定的1001用户
exportfs -rv刷新更改
chmod 777 /mnt
其中
设定参数 all_squash表示,转变所有客户端的用户身份为服务器用户,
all_squash也就是说不管客户端是以什么样的身份来进行访问的,都会被压缩成为anonuid、anongid 指定的id
客户端访问服务端默认是使用nfsnobody这个用户来进行访问的。
服务器默认共享时,也是加上了all_squash这个参数
no_root_squash参数,在客户端建立文件file3,在服务端的/mnt文件中file3的所有者和所有组都变为root
server2
自动挂载和卸载
前面当一个用户注册信息的时候放在一台主机里面,当主机坏了,这个用户就登陆不了,
当由有多个用户分别对应多台主机的时候,每个用户的信息都在自己的服务器里面放着,但是这样很不好,当其中一个服务器挂了,那个主机的信息就没了,
实际在企业当中,主机系统和存储数据是分离的,客户通过主机注册系统,然后放到存储数据的地方,
每台主机和存储设备相连但是当主机不用的时候,没有必要和存储系统连接,浪费资源。
现在想实现客户端,用的时候自动挂载,不用的时候自动卸载。
server2
yum install autofs -y 安装可以实现自动挂载文件系统的服务
systemctl start autofs
systemctl enable autofs 设置开机启动
开启autofs这个服务后,系统就会有/net这个目录
vim /etc/sysconfig/autofs 更改退出目录时自动卸载的时间,默认为300s,更改为3秒
timeout=3
systemctl restart autofs.services
cd /net/172.25.70.11/mnt
更改自动挂载目录
server2
mkdir /westos_nfs建立共享目录
vim /etc/auto.master
/mnt /etc/auto.nfs
vim /etc/auto.nfs
westos 172.5.70.11:/mnt
systemctl restart autofs.services
指定挂载类型
server2
vim /etc/auto.nfs
westos -ro,vers=3 172.25.254.11:/mnt
systemctl restart autofs