简介
NFS全称网络文件系统(Network File System),它是一种分布式协议,使客户端可以访问远程服务器上的共享文件。
服务器端安装
# 安装 NFS服务器端 apt-get install -y nfs-kernel-server # 检查服务是否启动 systemctl status nfs-server # 创建 NFS 共享目录(在/mnt目录中创建,共享目录称为 ShareFolder) mkdir -p /mnt/ShareFolder chmod -R 777 /mnt/ShareFolder
编辑 exports 配置文件
通过 vi /etc/exports
编辑配置文件,来允许哪些客户端可以访问该共享。
# /etc/exports: the access control list for filesystems which may be exported # to NFS clients. See exports(5). # # Example for NFSv2 and NFSv3: # /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check) # # Example for NFSv4: # /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check) # /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check) # # * 表示允许任何网段 IP 的系统访问该 NFS 目录 /mnt/ShareFolder *(rw,sync,no_root_squash) # 如果只允许一个客户端访问,可以只写一个客户端的IP地址 /mnt/ShareFolder 192.168.3.110(rw,sync,no_subtree_check) # 如果只允许多个客户端访问,可以向如下一样写 /mnt/ShareFolder 192.168.3.111(rw,sync,no_subtree_check) /mnt/ShareFolder 192.168.3.112(rw,sync,no_subtree_check) # 如果运行一个网段的客户端访问,可以这样写: /mnt/ShareFolder 192.168.3.*(rw,sync,no_subtree_check) #或 /mnt/ShareFolder 192.168.3.0/24(rw,sync,no_subtree_check)
配置文件中的权限解释:
- rw 允许读写
- sync 文件同时写入硬盘和内存
- no_subtree_check 即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率
# 配置好后重启 NFS 服务 systemctl restart nfs-server # 检查NFS共享目录是否生效 showmount -e
客户端安装
# Ubuntu 安装 NFS 客户端 apt-get install -y nfs-common # CentOS 安装 NFS 客户端 yum -y install nfs-utils # 192.168.3.220 上创建一个目录用于挂载 mkdir -p /mnt/ClientFolder # 192.168.3.220 上手动挂载 192.168.3.113 的NFS共享目录 ShareFolder # NFS客户端重启,手动挂载会失效 mount -o bg,hard,nolock,noatime,nointr -t nfs4 192.168.3.113:/mnt/ShareFolder /mnt/ClientFolder/ # 检查挂载是否成功 df -h
NFS客户端重启挂载会失效;NFS服务器重启,客户端的挂载还是生效的。下面客户端改用自动挂载方式:编辑 /etc/fstab
文件,添加:
192.168.3.113:/mnt/ShareFolder /mnt/ClientFolder/ nfs4 bg,hard,nolock,noatime,nointr 0 0
结果:
重要:默认情况下 fstab 下的 nfs挂载应该先启动的,但有一次使用了nfs的 docker 容器在重启电脑时始终启不了,通过显示设置 systemd 服务在 fstab 挂载后启动才得以解决,具体请看整理的文章:https://program.snlcw.com/2190.html
卸载
umount /mnt/ClientFolder