阿里云服务器 CentOS7 下安装和配置 NFS
最近准备在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 安装包。
$ sudo yum install nfs-utils
注意:只安装 nfs-utils 即可,rpcbind 属于它的依赖,也会安装上。
yum install nfs-utils -y
服务端配置
设置 NFS 服务开机启动
[[email protected] nfs]# systemctl enable rpcbind
[[email protected] nfs]# systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
配置共享目录
服务启动之后,我们在服务端配置一个共享目录
mkdir /data
chmod 755 /data
根据这个目录,相应配置导出目录
vim /etc/exports
添加如下配置
/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 服务
[[email protected] nfs]# systemctl start rpcbind
[[email protected] nfs]# systemctl start nfs
防火墙需要打开 rpc-bind 和 nfs 的服务
$ sudo firewall-cmd --zone=public --permanent --add-service={rpc-bind,mountd,nfs}
success
$ sudo firewall-cmd --reload
success
检查
可以检查一下本地的共享目录
$ showmount -e localhost
Export list for localhost:
/data *
这样,服务端就配置好了。
查看端口
[[email protected] ~]# rpcinfo -p localhost
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 40535 status
100024 1 tcp 48227 status
100005 1 udp 20048 mountd
100005 1 tcp 20048 mountd
100005 2 udp 20048 mountd
100005 2 tcp 20048 mountd
100005 3 udp 20048 mountd
100005 3 tcp 20048 mountd
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 3 udp 2049 nfs_acl
100021 1 udp 53325 nlockmgr
100021 3 udp 53325 nlockmgr
100021 4 udp 53325 nlockmgr
100021 1 tcp 37953 nlockmgr
100021 3 tcp 37953 nlockmgr
100021 4 tcp 37953 nlockmgr
上张图可以看到,NFS启动时会随机启动多个端口并向RPC注册,这样如果使用iptables对NFS端口进行限制就会有点麻烦,可以更改配置文件固定NFS服务相关端口。
分配端口,编辑配置文件:
vi /etc/sysconfig/nfs
添加:
RQUOTAD_PORT=30001
LOCKD_TCPPORT=30002
LOCKD_UDPPORT=30002
MOUNTD_PORT=30003
STATD_PORT=30004
重启nfs:
systemctl restart nfs
现在看看启动的端口:
[[email protected] data]# rpcinfo -p localhost
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 40535 status
100024 1 tcp 48227 status
100005 1 udp 9903 mountd
100005 1 tcp 9903 mountd
100005 2 udp 9903 mountd
100005 2 tcp 9903 mountd
100005 3 udp 9903 mountd
100005 3 tcp 9903 mountd
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 3 udp 2049 nfs_acl
100021 1 udp 9902 nlockmgr
100021 3 udp 9902 nlockmgr
100021 4 udp 9902 nlockmgr
100021 1 tcp 9901 nlockmgr
100021 3 tcp 9901 nlockmgr
100021 4 tcp 9901 nlockmgr
iptables设置,或者在阿里云控制台设置放行入出端口
。
iptables -A INPUT -p tcp --dport 111 -j ACCEPT
iptables -A INPUT -p tcp --dport 2049 -j ACCEPT
iptables -A INPUT -p tcp --dport 9902 -j ACCEPT
iptables -A INPUT -p tcp --dport 9901 -j ACCEPT
iptables -A INPUT -p tcp --dport 9900 -j ACCEPT
iptables -A INPUT -p tcp --dport 9903 -j ACCEPT
iptables -A INPUT -p tcp --dport 9904 -j ACCEPT
iptables -A INPUT -p tcp --dport 9905 -j ACCEPT
iptables -A INPUT -p tcp --dport 40535 -j ACCEPT
iptables -A INPUT -p tcp --dport 48227 -j ACCEPT
客户端连接 NFS
先查服务端的共享目录,两个云厂商服务器,所以需要用公网IP:
$ showmount -e 47.1.1.100
执行上面这个可能会报如错:clnt_create: RPC: Port mapper failure - Timed out
,网上查了好多资料还是没解决。但直接mount
是没问题的,继续往下看。
在客户端创建目录
$ mkdir -p /mny/nfs-data
挂载
$ mount -t nfs 47.1.1.100:/data /mnt/nfs-data
挂载之后,可以使用 mount 命令查看一下
$ mount
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
测试一下,在客户端向共享目录创建一个文件
$ cd /mnt/nfs-data
$ mkdir test-nfs
之后取 NFS 服务端查看一下
$ cd /data
$ ll
drwxr-xr-x 2 root root 4096 Dec 15 15:51 test-nfs
可以看到,共享目录已经写入了。
客户端自动挂载
自动挂载很常用,客户端设置一下即可。
$ vim /etc/fstab
在结尾添加类似如下配置
#
# /etc/fstab
# Created by anaconda on Sun Oct 15 15:19:00 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
#....
47.1.1.100:/data /mnt/nfs-data nfs defaults 0 0
由于修改了 /etc/fstab,需要重新加载 systemctl。
$ systemctl daemon-reload
参考
如何解决RPC:端口映射器故障–超时错误
固定NFS启动端口便于iptables设置
CentOS 7 下 yum 安装和配置 NFS
上一篇: 小数点后保留2位小数的正则表达式
下一篇: 小朋友学C语言(12):判断
推荐阅读
-
阿里云linux服务器下安装Apache的简单方法
-
Linux下配置和安装Domino 服务器 2
-
在Linux下配置和安装Domino 服务器的问题
-
阿里云服务器CentOS 6.3下快速安装部署 LAMP 、vsftpd 环境的方法
-
mac下配置和访问阿里云服务器(Ubuntu系统)的图文教程
-
阿里云Linxu下的Mysql安装与配置
-
Linux下安装Python3和django并配置mysql作为django默认服务器方法
-
阿里云CentOS服务器下安装Golang1.13并配置代理
-
安装阿里云版Linux云服务器,配置软件
-
阿里云服务器安装配置redis的方法并且加入到开机启动(推荐)