阿里云ECS上实现NFS挂载
1. 背景
由于项目需要,现在需要在阿里云上多台服务器上共享一些静态的文件数据。开始时选型方案有:OSS对象存储、NAS存储、自己搭建NFS;考虑成本需要,选择了自己搭建NFS。 项目在阿里金融云上,金融云上产品比公有云贵多了。 下面讲解过程。
注意:你的ECS是否在一个区,且是否在一个安全组。如果两台ECS不在同一个安全组,因此需要在各自的安全组设置规则,在内网进出方向分别添加对方的IP地址。
2. 过程
2.1 服务端
2.1.1 安装
yum install nfs-utils –y
2.1.2 修改配置文件
[root@test02 home]# vim /etc/exports
/home/nfstest 10.0.18.1(rw,sync,no_root_squash)
/home/nfstest 10.0.16.120(rw,sync,no_root_squash)
#新建目录
mkdir –p /home/nfstest
no_root_squash:登入 NFS 主机使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限!这个项目『极不安全』,不建议使用!
root_squash:在登入 NFS 主机使用分享之目录的使用者如果是 root 时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的 UID 与 GID 都会变成 nobody 那个系统账号的身份;
2.1.3 启动服务
service rpcbind start #启动端口转发
service nfs start #启动NFS
chkconfig rpcbind on #rpcbind 加入启动项
chkconfig nfs on #nfs加入启动项
启动后如果修改了目录,可执行exprotfs -rv 实现刷新
2.1.4 添加防火墙规则
iptables -I INPUT -p tcp -m multiport --dports 875,2049,111,28300,5076,39927,46286 -j ACCEPT
iptables -I INPUT -p udp -m multiport --dports 875,2049,111,37747,31166,9292,57181 -j ACCEPT
注意:由于要开放的端口较多且不连续,最好的做法是修改相应的端口。 可以参考我的另外一篇博文
http://pizibaidu.blog.51cto.com/1361909/1662428
2.2 客户端
2.2.1 安装
yum install nfs-utils –y
2.2.2 挂载
a. 立一个目录用来作挂接点
mkdir -p /home/nfs
b、进行挂接
mount -t nfs 10.0.16.122:/home/nfstest /home/nfs -o proto=tcp -o nolock
c、取消挂接
umount /home/nfs
3. 遇到的问题
3.1 如果客户端不安装nfs-utils会报如下错误:
mount: wrong fs type, bad option, bad superblock on 10.0.16.122:/home/nfstest,
missing codepage or helper program, or other error
(for several filesystems (e.g. nfs, cifs) you might
need a /sbin/mount.<type> helper program)
In some cases useful info is found in syslog - try
dmesg | tail or so
解决方法:yum install nfs-utils –y
3.2 clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
挂载时报的错误。
解决方法: 由于服务端防火墙的阻止,需要把所有的端口都加进去。需要把那些端口加入防火墙,可以执行命令: rpcinfo -p 10.0.16.122
或者关掉防火墙
# rpcinfo -p 10.0.16.122
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
100011 1 udp 875 rquotad
100011 2 udp 875 rquotad
100011 1 tcp 875 rquotad
100011 2 tcp 875 rquotad
100005 1 udp 37747 mountd
100005 1 tcp 5076 mountd
100005 2 udp 31166 mountd
100005 2 tcp 39927 mountd
100005 3 udp 9292 mountd
100005 3 tcp 28300 mountd
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 2 tcp 2049 nfs_acl
100227 3 tcp 2049 nfs_acl
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 2 udp 2049 nfs_acl
100227 3 udp 2049 nfs_acl
100021 1 udp 57181 nlockmgr
100021 3 udp 57181 nlockmgr
100021 4 udp 57181 nlockmgr
100021 1 tcp 46286 nlockmgr
100021 3 tcp 46286 nlockmgr
100021 4 tcp 46286 nlockmgr
3.3 nfs rpc.mountd: svc_tli_create: could not open connection for udp6
启动NFS报错如下:
Starting NFS mountd: rpc.mountd: svc_tli_create: could not open connection for udp6
rpc.mountd: svc_tli_create: could not open connection for tcp6
rpc.mountd: svc_tli_create: could not open connection for udp6
rpc.mountd: svc_tli_create: could not open connection for tcp6
rpc.mountd: svc_tli_create: could not open connection for udp6
rpc.mountd: svc_tli_create: could not open connection for tcp6
解决办法:
修改如下配置文件,然后重启服务即可。
[root@localhost ~]# vi /etc/netconfig
udp tpi_clts v inet udp - -
tcp tpi_cots_ord v inet tcp - -
#udp6 tpi_clts v inet6 udp - -
#tcp6 tpi_cots_ord v inet6 tcp - -
rawip tpi_raw - inet - - -
local tpi_cots_ord - loopback - - -
unix tpi_cots_ord - loopback - - -
本文出自 “技术成就梦想” 博客,请务必保留此出处http://pizibaidu.blog.51cto.com/1361909/1982748