阿里云ECS上实现NFS挂载

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阿里云ECS上实现NFS挂载相关的知识,希望对你有一定的参考价值。

 

1. 背景

由于项目需要,现在需要在阿里云上多台服务器上共享一些静态的文件数据。开始时选型方案有:OSS对象存储、NAS存储、自己搭建NFS;考虑成本需要,选择了自己搭建NFS。 项目在阿里金融云上,金融云上产品比公有云贵多了。 下面讲解过程。

注意:你的ECS是否在一个区,且是否在一个安全组。如果两台ECS不在同一个安全组,因此需要在各自的安全组设置规则,在内网进出方向分别添加对方的IP地址。

技术分享

 

2. 过程

2.1 服务端

 

2.1.1 安装    
yum install nfs-utils –y

 

2.1.2 修改配置文件    
[[email protected] 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

解决办法:

修改如下配置文件,然后重启服务即可。    
[[email protected] ~]# 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

以上是关于阿里云ECS上实现NFS挂载的主要内容,如果未能解决你的问题,请参考以下文章

阿里云 ECS 逻辑卷挂载数据盘

阿里云ECS服务器挂载磁盘

阿里云跨网段间执行showmount不通的解决办法

阿里云ECS的CPU100%排查

阿里云ECS服务器挂载数据盘

阿里云ECS遇到access denied by server while mountin解决办法