linux nfs+portmap 远程磁盘映射

服务器端ip:192.168.88.125
客户端ip:192.168.88.123

1. 客户端和服务端都需要安装nfs + portmap服务
[root@localhost ~]# yum install nfs-utils.x86_64(64位系统)
[root@localhost ~]# yum install nfs-utils(32位系统)

然后安装portmap服务,portmap在centos6中改名为rpcbind
[root@localhost ~]# yum install rpcbind(centos6)
[root@localhost ~]# yum install portmap(centos5)

2. 检查服务是否安装成功
[root@localhost ~]# rpm -qa | grep nfs
nfs-utils-1.2.3-70.el6_8.2.x86_64
nfs-utils-lib-1.1.5-11.el6.x86_64
[root@localhost ~]# rpm -qa | grep rpc
rpcbind-0.2.0-12.el6.x86_64
libtirpc-0.2.1-11.el6_8.x86_64
3. 将服务加入自启动
[root@localhost ~]# chkconfig --level 35 nfs on 
[root@localhost ~]# chkconfig --level 35 rpcbind on

–level 35 表示运行级别为在命令模式和图形模式下都自启动
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
运行级别2:多用户状态(没有NFS)
运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
运行级别4:系统未使用,保留
运行级别5:X11控制台,登陆后进入图形GUI模式
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

4. 编辑服务端(被映射端)配置文件
[root@localhost ~]# vim /etc/exports 

加入:

/sharedisk 192.168.88.123(rw,sync,no_root_squash) #表示允许192.168.88.123主机挂载/sharedisk目录
#也可以写成192.168.88.0/24 表示整个网段都可以挂载

NFS主要有3类选项:

访问权限选项:
设置输出目录只读:ro
设置输出目录读写:rw

用户映射选项:
all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);
no_all_squash:与all_squash取反(默认设置);
root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置);
no_root_squash:与rootsquash取反;
anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);
anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);

其它选项:
secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);
insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
async:将数据先保存在内存缓冲区中,必要时才写入磁盘;
wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);
no_wdelay:若有写操作则立即执行,应与sync配合使用;
subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);
no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;

配置文件编辑好后,使用exportfs -rv重读配置文件或者重启rpcbind服务使之生效

5. 服务端开放端口

当我们在客户端测试nfs共享信息时发现报错

[root@localhost ~]# showmount -e 192.168.88.125
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)

由于nfs服务需要开启 mountd,nfs,nlockmgr,portmapper,rquotad(这个好像不用了)这5个服务,需要将这5个服务的端口加到iptables里面而nfs 和 portmapper两个服务是固定端口的,nfs为2049,portmapper为111。其他的3个服务是用的随机端口,那就需要先把这3个服务的端口设置成固定的

[root@localhost ~]# vim  /etc/sysconfig/nfs

打开前面的#或者在文件的最后一行添加:

LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892

保存并退出并重启下nfs服务,然后在防火墙开放这4个端口:

-A INPUT -m state --state NEW -p udp --dport 111 -j ACCEPT
-A INPUT -m state --state NEW -p tcp --dport 111 -j ACCEPT

-A INPUT -m state --state NEW -p udp --dport 2049 -j ACCEPT
-A INPUT -m state --state NEW -p tcp --dport 2049 -j ACCEPT

-A INPUT -m state --state NEW -p udp --dport 892 -j ACCEPT
-A INPUT -m state --state NEW -p tcp --dport 892 -j ACCEPT

-A INPUT -m state --state NEW -p udp --dport 32769 -j ACCEPT
-A INPUT -m state --state NEW -p tcp --dport 32803 -j ACCEPT

重启防火墙服务后,客户端再试一次

[root@localhost ~]# showmount -e 192.168.88.125
Export list for 192.168.88.125:
/sharedisk 192.168.88.123
6. 客户端挂载远程目录
mount -t nfs 192.168.88.125:/sharedisk1 /sharedisk (:/sharedisk1是文件服务器目录)
7. 客户端自动挂载

可以把挂载命令放到 /etc/rc.local

附加

查看当前所有挂载

mount -l

查看当前所有nfs挂载

mount -t nfs -l

断开挂载

umount /sharedisk

断开挂载报错device is busy

1. fuser -m -v /sharedisk
2. kill -9 占用的进程号 #-9表示强制的意思吧
    原文作者:小小机器人
    原文地址: https://www.jianshu.com/p/7289cfd1f036
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞