1、概述:
NFS(Network File System)意为网络文件系统,它最大的功能就是可以通过网络,让不同的机器不同的操作系统可以共享彼此的文件。简单的讲就是可以挂载远程主机的共享目录到本地,就像操作本地磁盘一样,非常方便的操作远程文件。本文将给大家讲解怎么在CentOS7上安装和配置NFS服务器。
1.1 准备
用虚拟机做测试,分别做NFS服务器和客户端,配置如下:
Centos虚拟机三台
NFS服务器ip:192.168.180.48
客户端ip:192.168.180.47
客户端ip:192.168.180.46
我们要实现的目标是:在NFS服务器上共享一个目录,在客户端上可以直接操作NFS服务器上的这个共享目录下的文件。
2、NFS服务器配置
2.1 安装NFS服务
首先使用yum安装nfs服务:
[root@test3 nfs]# yum -y install rpcbind nfs-utils
在服务器上创建共享目录,并设置权限。
[root@test3 nfs]# mkdir /home/simon/nfs/share/
2.2 配置NFS
nfs的配置文件是 /etc/exports ,vim /etc/exports后在配置文件中加入一行:
/home/simon/nfs/share/47share/ 192.168.180.47(rw,no_root_squash,no_all_squash,sync)
/home/simon/nfs/share/46share/ 192.168.180.46(rw,no_root_squash,no_all_squash,sync)
这行代码的意思是把共享目录/home/simon/nfs/share/47share/ 共享给1192.168.180.47这个客户端
注:ip可以为192.168.180.1/24 #表示整个192.168.180网段都可以访问,也可以指定单个地址如:192.168.180.47,也可以用*号表示所有用户都可以访问你所共享的目录
ip 后面括号里的内容是权限参数,其中:
rw 表示设置目录可读写。
sync 表示数据会同步写入到内存和硬盘中,相反 async 表示数据会先暂存于内存中,而非直接写入到硬盘中。
no_root_squash NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。
no_all_squash 不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都不会拥有匿名用户权限。
其他参数说明:
secure: 这个选项是缺省选项,它使用了 1024 以下的 TCP/IP 端口实现 NFS 的连接。指定 insecure 可以禁用这个选项。
rw: 这个选项允许 NFS 客户机进行读/写访问。缺省选项是只读的。
async: 这个选项可以改进性能,但是如果没有完全关闭 NFS 守护进程就重新启动了 NFS 服务器,这也可能会造成数据丢失。
no_wdelay: 这个选项关闭写延时。如果设置了 async,那么 NFS 就会忽略这个选项。
nohide: 如果将一个目录挂载到另外一个目录之上,那么原来的目录通常就被隐藏起来或看起来像空的一样。要禁用这种行为,需启用 hide 选项。
no_subtree_check: 这个选项关闭子树检查,子树检查会执行一些不想忽略的安全性检查。缺省选项是启用子树检查。
no_auth_nlm: 这个选项也可以作为 insecure_locks 指定,它告诉 NFS 守护进程不要对加锁请求进行认证。如果关心安全性问题,就要避免使用这个选项。缺省选项是 auth_nlm 或 secure_locks。
mp (mountpoint=path): 通过显式地声明这个选项,NFS 要求挂载所导出的目录。
fsid=num: 这个选项通常都在 NFS 故障恢复的情况中使用。如果希望实现 NFS 的故障恢复,请参考 NFS 文档
wdelay 如果多个用户要写入nfs目录,则归组写入(默认)
no_wdelay 如果多个用户要写入nfs目录,则立即写入,当使用async时,无需此设置。
all_squash: 这个选项对于公共访问的 NFS 卷来说非常有用,它会限制所有的 UID 和 GID,只使用匿名用户。缺省设置是 no_all_squash。
all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
no_all_squash 保留共享文件的UID和GID(默认)
root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squash root用户具有根目录的完全管理访问权限
anonuid=xxx指定nfs服务器/etc/passwd文件中匿名用户的UID
anongid=xxx指定nfs服务器/etc/passwd文件中匿名用户的GID
如果有多个共享目录配置,则使用多行,一行一个配置。保存好配置文件后,需要执行以下命令使配置立即生效:
[root@test3 nfs]# exportfs -r
2.3 设置防火墙
如果你的系统没有开启防火墙,那么此步骤可以省略。
NFS的防火墙除了固定的port111、2049外,还有其他服务如rpc.mounted等开启的不固定的端口,因此我们需要设置NFS服务的端口配置文件。
vim /etc/sysconfig/nfs文件,将下列内容的注释去掉,如果没有则添加:
RQUOTAD_PORT=1001
LOCKD_TCPPORT=30001
LOCKD_UDPPORT=30002
MOUNTD_PORT=1002
保存好后,将端口加入到防火墙允许策略中。执行:
[root@test3 nfs]# firewall-cmd --zone=public --add-port=111/tcp --add-port=111/udp --add-port=2049/tcp --add-port=2049/udp --add-port=1001/tcp --add-port=1001/udp --add-port=1002/tcp --add-port=1002/udp --add-port=30001/tcp --add-port=30002/udp --permanent
[root@test3 nfs]# firewall-cmd --reload
注:若只为测试操作,也可直接关闭防火墙
2.4 启动服务
按顺序启动rpcbind和nfs服务:(此顺序不能颠倒,否则后续会报错)
[root@test3 nfs]# systemctl start rpcbind
[root@test3 nfs]# systemctl start nfs ##(centos7)
[root@test3 nfs]# systemctl start nfs-server ##(centos8)
加入开机启动:
[root@test3 nfs]# systemctl enable rpcbind
[root@test3 nfs]# systemctl enable nfs ##(centos7)
[root@test3 nfs]# systemctl enable nfs-server ##(centos8)
nfs服务启动后,可以使用命令 rpcinfo -p 查看端口是否生效。
我们可以使用 showmount 命令来查看服务端(本机)是否可连接:
[root@test3 nfs]# showmount -e localhost
Export list for localhost:
/home/simon/nfs/share 192.168.180.46,192.168.180.47
[root@test3 nfs]#
出现上面结果表明NFS服务端配置正常。
3、客户端配置
3.1 安装rpcbind服务
客户端只需要安装rpcbind服务即可,一般无需安装nfs或开启nfs服务。
[root@test3 nfs]# yum -y install rpcbind
(注:若后续操作无法使用showmount命令则此步骤建议使用命令yum -y install rpcbind nfs-utils因为有些虚拟机可能会内置showmount命令,同时若安装nfs,需确保与nfs服务器端版本一致)
3.2 挂载远程nfs文件系统
查看服务端已共享的目录:
[root@test2 ~]# showmount -e 192.168.180.48
Export list for 192.168.180.48:
/home/simon/nfs/share 192.168.180.46,192.168.180.47
建立挂载目录,执行挂载命令:
[root@test2 simon]# mount -t nfs 192.168.180.48:/home/simon/nfs/share/47share /home/simon/nfsclient -o nolock,nfsvers=3,vers=3
如果不加 -onolock,nfsvers=3 则在挂载目录下的文件属主和组都是nobody,如果指定nfsvers=3则显示root。
如果要解除挂载,可执行命令:
[root@test2 simon]# umount /home/simon/nfsclient
3.3 开机自动挂载
如果按本文上面的部分配置好,NFS即部署好了,但是如果你重启客户端系统,发现不能随机器一起挂载,需要再次手动操作挂载,这样操作比较麻烦,因此我们需要设置开机自动挂载。我们不要把挂载项写到/etc/fstab文件中,因为开机时先挂载本机磁盘再启动网络,而NFS是需要网络启动后才能挂载的,所以我们把挂载命令写入到/etc/rc.d/rc.local文件中即可。
[root@test2 nfsclient]# vim /etc/rc.d/rc.local
在文件最后添加一行:
mount -t nfs 192.168.180.48:/home/simon/nfs/share/47share /home/simon/nfsclient -o nolock,nfsvers=3,vers=3
保存并重启机器看看。
3.4 测试验证
root@test2 simon]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 7.9G 0 7.9G 0% /dev
tmpfs 7.9G 0 7.9G 0% /dev/shm
tmpfs 7.9G 710M 7.2G 9% /run
tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 57G 8.2G 49G 15% /
/dev/sda1 10G 282M 9.8G 3% /boot
/dev/mapper/vg1-lv1 118G 76G 37G 68% /home
overlay 118G 76G 37G 68%
tmpfs 1.6G 0 1.6G 0% /run/user/0
192.168.180.48:/home/simon/nfs/share 118G 21G 92G 19% /home/simon/nfsclient
看到最后一行,就说明已经挂载成功了。接下来就可以在客户端上进入目录/mnt/share下,新建/删除文件,然后在服务端的目录/data/share查看是不是有效果了
————————————————
原文链接:https://blog.csdn.net/lihongbao80/article/details/119869383
网友评论