centos7搭建nfs

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查看是不是有效果了

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值