文章

配置NFS共享的要点

NFS配置要点

NFS的常用目录

  • /etc/exports NFS服务的主要配置文件
  • /usr/sbin/exportfs NFS服务的管理命令
  • /usr/sbin/showmount 客户端的查看命令
  • /var/lib/nfs/etab 记录NFS分享出来的目录的完整权限设定值
  • /var/lib/nfs/xtab 记录曾经登录过的客户端信息

需要启动的服务

rhel 6以上版本:rpcbind,nfs rhel 6以下版本:portmap ,nfs

131和132挂载过程

131:

/etc/fstab文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#
# /etc/fstab
# Created by anaconda on Mon Mar  6 02:16:59 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
#
/dev/mapper/rootvg-lv_root /                       ext4    defaults        1 1
UUID=52c40687-62c3-42ef-ac89-4d7dce6c436a /boot    ext4    defaults        1 2
/dev/mapper/rootvg-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/mapper/vg-data     /tas            ext4    defaults        0       0

配置nfs服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@c5-cw-tas-web1 etc]# chkconfig rpcbind on
[root@c5-cw-tas-web1 etc]# chkconfig nfs on
[root@c5-cw-tas-web1 etc]# cat exports
/tas/upload     10.19.111.0/24(rw)
[root@c5-cw-tas-web1 tas]# service rpcbind restart
Stopping rpcbind:                                          [  OK  ]
Starting rpcbind:                                          [  OK  ]
[root@c5-cw-tas-web1 tas]# service nfs restart
Shutting down NFS daemon:                                  [  OK  ]
Shutting down NFS mountd:                                  [  OK  ]
Shutting down NFS quotas:                                  [  OK  ]
Shutting down RPC idmapd:                                  [  OK  ]
Starting NFS services:                                     [  OK  ]
Starting NFS quotas:                                       [  OK  ]
Starting NFS mountd:                                       [  OK  ]
Starting NFS daemon:                                       [  OK  ]
Starting RPC idmapd:                                       [  OK  ]
[root@c5-cw-tas-web1 tas]# exportfs
/tas/upload     10.19.111.0/24

132:

手动挂载

1
2
mount 10.19.111.131:/tas/upload /tas/upload
mount -t nfs -o soft 192.168.100.110:/u01 /u02/test01  

自动挂载

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#
# /etc/fstab
# Created by anaconda on Mon Mar  6 02:16:59 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
#
/dev/mapper/rootvg-lv_root /                       ext4    defaults        1 1
UUID=52c40687-62c3-42ef-ac89-4d7dce6c436a /boot                   ext4    defaults        1 2
/dev/mapper/rootvg-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/mapper/vg-data     /tas                    ext4    defaults        0       0
10.19.111.131:/tas/upload       /tas/upload     nfs     defaults        0       0

修改端口及配置防火墙

修改端口

rpcbind在NFS服务启动的时候给每一个NFS服务分配了一个动态的端口,如这些服务MOUNTD_PORT、 STATD_PORT、 LOCKD_TCPPORT、 LOCKD_UDPPORT。如何才能让NFS client在使用 iptables时可以正常使用NFS服务呢?办法就是指定将上述服务的运行端口,然后在iptables中发布。相关的配置文件为 /etc/sysconfig/nfs 。

要使用iptables来控制NFS,需静态指定端口号让rpcbind(portmap)调用。NFS服务启用时会检查/etc/sysconfig/nfs文件。在此文件下来指定mountd,statd,lockd,rquotad端口号。

1
2
3
4
5
RQUOTAD_PORT=10001
LOCKD_TCPPORT=10002
LOCKD_UDPPORT=10002
MOUNTD_PORT=10003
STATD_PORT=10004

/etc/sysconfig/nfs默认安装的时候可能会不存在,5.1以上版本除外。可以手工创建此文件编写以上内容。 设定后需重启服务

1
2
service nfslock restart
service nfs restart

使用命令查看端口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#rpcinfo -p
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 10004 status
100024 1 tcp 10004 status
100011 1 udp 10001 rquotad
100011 2 udp 10001 rquotad
100011 1 tcp 10001 rquotad
100011 2 tcp 10001 rquotad
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100021 1 udp 10002 nlockmgr
100021 3 udp 10002 nlockmgr
100021 4 udp 10002 nlockmgr
100021 1 tcp 10002 nlockmgr
100021 3 tcp 10002 nlockmgr
100021 4 tcp 10002 nlockmgr
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100005 1 udp 10003 mountd
100005 1 tcp 10003 mountd
100005 2 udp 10003 mountd
100005 2 tcp 10003 mountd
100005 3 udp 10003 mountd
100005 3 tcp 10003 mountd

配置防火墙规则

接下来就是配置iptables规则了

1
2
3
4
5
6
iptables -A INPUT -p tcp --dport 111 -j ACCEPT
iptables -A INPUT -p udp --dport 111 -j ACCEPT
iptables -A INPUT -p tcp --dport 2049 -j ACCEPT
iptables -A INPUT -p udp --dport 2049 -j ACCEPT
iptables -A INPUT -p tcp --dport 10001:10004 -j ACCEPT
iptables -A INPUT -p udp --dport 10001:10004 -j ACCEPT

重新挂载NFS

1
mount -t nfs -o nolock 172.16.10.254:/opt /mnt
本文由作者按照 CC BY 4.0 进行授权