NFS 是一种基于 TCP/IP 传输的网络文件系统协议,通过使用 NFS协议,客户机可以像访问本地目录一样访问远程 NFS 服务器中的共享资源。同时NFS 也是 NAS存储设备必然支持的一种协议,但是因为没有用户认证机制,而且数据在网络上明文传输,安全性很差,所以一般只能在局域网中使用。
NFS 服务的实现依赖于 RPC (Remote Process Call,远端过程调用)机制,以完成远程到本地的映射过程。在Linux操作系统中,需要安装 nfs-utils、rpcbind 软件包来提供 NFS 共享服务,前者用于 NFS 共享发布和访问,后者用于 RPC 支持。
关闭防火墙和SELinux:
systemctl disable firewalld
systemctl stop firewalld
sed -ri '#^SELINUX=#cSELINUX=Disabled' /etc/selinux/config
setenforce 0
df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 8.5M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/vda1 20G 1.6G 18G 9% /
/dev/vdb1 985G 77M 935G 1% /wangzynfs # 使用一块单独的硬盘充当共享存储空间
tmpfs 379M 0 379M 0% /run/user/0
vim /etc/fstab
UUID=d92f2371-9009-4fc9-bd60-7c468c780ce1 / ext4 defaults 1 1
/dev/vdb1 /wangzynfs ext4 defaults 1 1
安装nfs-utils和rpcbind软件包:
yum install -y nfs-utils rpcbind
说明: 手动加载NFS共享服务时,应该先启动/停止rpcbind,再启动/停止nfs,一定要按顺序启动和停止。
启动rpcbind和nfs服务:
systemctl start rpcbind
systemctl start nfs
systemctl enable rpcbind
systemctl enable nfs
设置共享目录:
NFS的配置文件为 /etc/exports,文件内容默认为空,即无任何共享。
在exports文件中设置共享资源时,记录格式为“目录位置 客户机地址(权限选项)
cat /etc/exports
/wangzynfs 192.168.24.0/24(rw,sync,no_root_squash,insecure)
重启NFS服务并验证:
systemctl stop rpcbind
systemctl stop nfs
systemctl start rpcbind # 注意先启动rpcbind服务
systemctl start nfs
exportfs -v
/wangzynfs 192.168.24.xxx/32(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
showmount -e localhost
Export list for localhost:
/wangzynfs 192.168.24.xxx/32
打开控制面板—程序—找到“启用或关闭Windows功能”—启用NFS服务,完成之后不需要重启Windows操作系统
说明:NFS服务默认关闭,家庭中文版不支持该功能奥
接下来需要修改注册表,在注册表中添加匿名用户的默认UID和GID
yum install -y nfs-utils rpcbind
showmount -e 172.26.xxx.xxx
Export list for 172.26.xxx.xxx:
/wangzynfs 172.26.xxx.xxx/32
yum install -y httpd
mount -t nfs 172.26.xxx.xxx:/wangzynfs /var/www/html/
# NFS 共享的访问使用 mount 命令来进行挂载,对应的文件系统类型为 nfs
手动挂载NFS共享目录:
mount -t nfs 172.26.xxx.xxx:/wangzynfs /var/www/html
df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 486M 0 486M 0% /dev
tmpfs 496M 0 496M 0% /dev/shm
tmpfs 496M 6.7M 489M 2% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/vda1 20G 1.7G 17G 9% /
tmpfs 100M 0 100M 0% /run/user/0
172.26.xxx.xxx:/wangzynfs 985G 76M 935G 1% /var/www/html
自动挂载NFS共享目录:
修改 /etc/fstab 配置文件,加入NFS共享目录的挂载设置,文件系统类型为nfs
vim /etc/fstab
172.26.xxx.xxx:/wangzynfs /var/www/html nfs defaults,_netdev 1 1
NFS客户端与服务器端的耦合度是非常高的,如果客户端正在挂载使用,服务器端NFS服务突然间停掉了,那么在客户端就会出现执行df -h命令卡死的现象。
这个时候使用umount命令是无法直接卸载的,需要加上-lf 选项才能卸载。
当出现卡死现象时,要重新开一个终端,执行cat /etc/rc.local命令,查看挂载点。然后使用umount命令卸载,其中-l 选项表示解除正在繁忙的文件系统,-f 选项表示强制。
模拟NFS服务端故障
systemctl stop nfs
客户端执行如下命令都会卡住
umount /var/www/html
df -h
需要在客户端强制解除挂载
umount -lf /var/www/html