阿里云服务器 CentOS7 下安装和配置 NFS

爱被打了一巴掌 2023-06-22 08:25 100阅读 0赞

最近准备在kubernetes上搭建kubesphere,利用nfs做为后端存储,k8s集群搭建在ucloud机器上,还有一台配置不高的阿里云机器,顺便在上面搭建个NFS,省的占用ucloud机器太多磁盘空间。

本例演示环境如下:





















Name IP Addr Descprition
nfs服务端 47.1.1.100 服务端公网 IP,此服务器为阿里云服务器
nfs客户端 36.1.1.100 客户端公网 IP,此服务器为ucloud云服务器

服务端安装

使用 yum 安装 NFS 安装包。

  1. $ sudo yum install nfs-utils

注意:只安装 nfs-utils 即可,rpcbind 属于它的依赖,也会安装上。

  1. yum install nfs-utils -y

服务端配置

设置 NFS 服务开机启动

  1. [root@47 nfs]# systemctl enable rpcbind
  2. [root@47 nfs]# systemctl enable nfs
  3. Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.

配置共享目录

服务启动之后,我们在服务端配置一个共享目录

  1. mkdir /data
  2. chmod 755 /data

根据这个目录,相应配置导出目录

  1. vim /etc/exports

添加如下配置

  1. /data/ 192.168.0.0/24(rw,sync,no_root_squash,no_all_squash)

/data: 共享目录位置。
192.168.0.0/24: 客户端 IP 范围,* 代表所有,即没有限制(我在实验中会设置为*)。
rw: 权限设置,可读可写。
sync: 同步共享目录。
no_root_squash: 可以使用 root 授权。
no_all_squash: 可以使用普通用户授权。

:wq 保存设置。

启动 NFS 服务

  1. [root@47 nfs]# systemctl start rpcbind
  2. [root@47 nfs]# systemctl start nfs

防火墙需要打开 rpc-bind 和 nfs 的服务

  1. $ sudo firewall-cmd --zone=public --permanent --add-service={ rpc-bind,mountd,nfs}
  2. success
  3. $ sudo firewall-cmd --reload
  4. success

检查

可以检查一下本地的共享目录

  1. $ showmount -e localhost
  2. Export list for localhost:
  3. /data *

这样,服务端就配置好了。

查看端口

  1. [root@47 ~]# rpcinfo -p localhost
  2. program vers proto port service
  3. 100000 4 tcp 111 portmapper
  4. 100000 3 tcp 111 portmapper
  5. 100000 2 tcp 111 portmapper
  6. 100000 4 udp 111 portmapper
  7. 100000 3 udp 111 portmapper
  8. 100000 2 udp 111 portmapper
  9. 100024 1 udp 40535 status
  10. 100024 1 tcp 48227 status
  11. 100005 1 udp 20048 mountd
  12. 100005 1 tcp 20048 mountd
  13. 100005 2 udp 20048 mountd
  14. 100005 2 tcp 20048 mountd
  15. 100005 3 udp 20048 mountd
  16. 100005 3 tcp 20048 mountd
  17. 100003 3 tcp 2049 nfs
  18. 100003 4 tcp 2049 nfs
  19. 100227 3 tcp 2049 nfs_acl
  20. 100003 3 udp 2049 nfs
  21. 100003 4 udp 2049 nfs
  22. 100227 3 udp 2049 nfs_acl
  23. 100021 1 udp 53325 nlockmgr
  24. 100021 3 udp 53325 nlockmgr
  25. 100021 4 udp 53325 nlockmgr
  26. 100021 1 tcp 37953 nlockmgr
  27. 100021 3 tcp 37953 nlockmgr
  28. 100021 4 tcp 37953 nlockmgr

上张图可以看到,NFS启动时会随机启动多个端口并向RPC注册,这样如果使用iptables对NFS端口进行限制就会有点麻烦,可以更改配置文件固定NFS服务相关端口。

分配端口,编辑配置文件:

  1. vi /etc/sysconfig/nfs

添加:

  1. RQUOTAD_PORT=30001
  2. LOCKD_TCPPORT=30002
  3. LOCKD_UDPPORT=30002
  4. MOUNTD_PORT=30003
  5. STATD_PORT=30004

重启nfs:

  1. systemctl restart nfs

现在看看启动的端口:

  1. [root@47 data]# rpcinfo -p localhost
  2. program vers proto port service
  3. 100000 4 tcp 111 portmapper
  4. 100000 3 tcp 111 portmapper
  5. 100000 2 tcp 111 portmapper
  6. 100000 4 udp 111 portmapper
  7. 100000 3 udp 111 portmapper
  8. 100000 2 udp 111 portmapper
  9. 100024 1 udp 40535 status
  10. 100024 1 tcp 48227 status
  11. 100005 1 udp 9903 mountd
  12. 100005 1 tcp 9903 mountd
  13. 100005 2 udp 9903 mountd
  14. 100005 2 tcp 9903 mountd
  15. 100005 3 udp 9903 mountd
  16. 100005 3 tcp 9903 mountd
  17. 100003 3 tcp 2049 nfs
  18. 100003 4 tcp 2049 nfs
  19. 100227 3 tcp 2049 nfs_acl
  20. 100003 3 udp 2049 nfs
  21. 100003 4 udp 2049 nfs
  22. 100227 3 udp 2049 nfs_acl
  23. 100021 1 udp 9902 nlockmgr
  24. 100021 3 udp 9902 nlockmgr
  25. 100021 4 udp 9902 nlockmgr
  26. 100021 1 tcp 9901 nlockmgr
  27. 100021 3 tcp 9901 nlockmgr
  28. 100021 4 tcp 9901 nlockmgr

iptables设置,或者在阿里云控制台设置放行入出端口

  1. iptables -A INPUT -p tcp --dport 111 -j ACCEPT
  2. iptables -A INPUT -p tcp --dport 2049 -j ACCEPT
  3. iptables -A INPUT -p tcp --dport 9902 -j ACCEPT
  4. iptables -A INPUT -p tcp --dport 9901 -j ACCEPT
  5. iptables -A INPUT -p tcp --dport 9900 -j ACCEPT
  6. iptables -A INPUT -p tcp --dport 9903 -j ACCEPT
  7. iptables -A INPUT -p tcp --dport 9904 -j ACCEPT
  8. iptables -A INPUT -p tcp --dport 9905 -j ACCEPT
  9. iptables -A INPUT -p tcp --dport 40535 -j ACCEPT
  10. iptables -A INPUT -p tcp --dport 48227 -j ACCEPT

客户端连接 NFS

先查服务端的共享目录,两个云厂商服务器,所以需要用公网IP:

  1. $ showmount -e 47.1.1.100

执行上面这个可能会报如错:clnt_create: RPC: Port mapper failure - Timed out,网上查了好多资料还是没解决。但直接mount是没问题的,继续往下看。

在客户端创建目录

  1. $ mkdir -p /mny/nfs-data

挂载

  1. $ mount -t nfs 47.1.1.100:/data /mnt/nfs-data

挂载之后,可以使用 mount 命令查看一下

  1. $ mount
  2. 47.1.1.100:/data on /mnt/nfs-data type nfs4 (rw,relatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.0.2.175,local_lock=none,addr=47.1.1.100)

这说明已经挂载成功了。

测试 NFS

测试一下,在客户端向共享目录创建一个文件

  1. $ cd /mnt/nfs-data
  2. $ mkdir test-nfs

之后取 NFS 服务端查看一下

  1. $ cd /data
  2. $ ll
  3. drwxr-xr-x 2 root root 4096 Dec 15 15:51 test-nfs

可以看到,共享目录已经写入了。

客户端自动挂载

自动挂载很常用,客户端设置一下即可。

  1. $ vim /etc/fstab

在结尾添加类似如下配置

  1. #
  2. # /etc/fstab
  3. # Created by anaconda on Sun Oct 15 15:19:00 2017
  4. #
  5. # Accessible filesystems, by reference, are maintained under '/dev/disk'
  6. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
  7. #
  8. #....
  9. 47.1.1.100:/data /mnt/nfs-data nfs defaults 0 0

由于修改了 /etc/fstab,需要重新加载 systemctl。

  1. $ systemctl daemon-reload

参考

如何解决RPC:端口映射器故障–超时错误
固定NFS启动端口便于iptables设置
CentOS 7 下 yum 安装和配置 NFS

发表评论

表情:
评论列表 (有 0 条评论,100人围观)

还没有评论,来说两句吧...

相关阅读