一.系统环境
1
2
|
[root@node1 ~]
# cat /etc/redhat-release
CentOS release 6.8 (Final)
|
二.安装NFS服务
1、查看系统是否已安装NFS
1
2
|
rpm -qa |
grep
nfs
rpm -qa |
grep
rpcbind
|
2、安装NFS
1
2
|
yum -y
install
rpcbind nfs-utils
##rpcbind,是rpc主程序. nfs-utils,是nfs的主程序.
|
3.服务端配置
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
1.创建共享目录
mkdir
/nfs-data
2.编辑主要配置文件:
/etc/exports
vim
/etc/exports
/nfs-data
192.168.193.0
/24
(rw,no_root_squash,no_all_squash,
sync
)
[共享目录] [第一台主机(权限)]
3.使配置生效
exportfs -r
#每次修改配置文件,都需要加-r参数进行reload。
4.启动rpcbind、nfs服务
service rpcbind start
service nfs start
6.设置开机自启:
chkconfig rpcbind on
chkconfig nfs on
chkconfig nfslock on
7.查看端口状态
ss -tln 或
netstat
-ntulp
#rpcbind 启动在UDP,TCP的111端口
#NFS本身的服务启动在port2049上
#其他rpc.*服务启动的端口则是随机的,需要向port 111 注册。
8.查看 RPC 服务的注册状况
rpcinfo -p localhost
9. 测试:
[root@node1 ~]
# showmount -e localhost
Export list
for
localhost:
/nfs-data
192.168.193.0
/24
服务端相关配置解释:
1.相关进程:
rpc.nfsd 管理客户端是否使用NFS
rpc.mountd 管理客户端的权限
rpc.lockd 管理文件的锁定(服务端与客户端都开启)
rpc.statd 检查文件的一致性(服务端与客户端都开启)
/etc/init
.d
/nfs
与服务器相关
/etc/init
.d
/nfslock
与客户端相关
2.主要文件:
/etc/exports
主配置文件
/usr/sbin/exportfs
维护NFS共享资源的指令,一般用于NFS服务器端
/usr/sbin/showmount
查看NFS共享出来的目录资源,一般用于NFS客户端
/var/lib/nfs/
*tab NFS的日志文件
etab 记录NFS所共享的目录的完整权限设置值
xtab 主要记录曾经连入NFS服务器端的客户端信息
3.
/etc/exports
详解
/etc/exports
文件是NFS主要的配置文件,该文件用于设置服务器的共享目录,以及目录允许访问的主机,访问权限,和其他选项,NFS安装后会在
/etc/
目录下创建一个空文件,用户需要自定编辑.
共享目录 [客户端1(选项1,选项2…)] [客户端2(选项1,选项2…)]
举例:
/tmp
192.168.209.129(rw,no_root_squash)
/root
192.168.209.130(rw,no_root_squash)
共享目录:即提供了NFS客户端使用的目录
客户端:可以访问共享目录的计算机,可以通过IP地址和主机名进行指定,也可以使用子网掩码指定网段
选项:指定该共享目录的访问权限
一些常见权限参数:
ro 该主机对该共享目录有只读权限
rw 该主机对该共享目录有读写权限,要注意是针对nfs之外还有目录自己权限
root_squash 客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户
no_root_squash 客户机用root访问该共享文件夹时,不压制root用户身份
all_squash 客户机上的任何用户访问该共享目录时都映射成匿名用户
anonuid 将客户机上的用户映射成指定的本地用户ID的用户
anongid 将客户机上的用户映射成属于指定的本地用户组ID
sync
资料同步写入到内存与硬盘中
async 资料会先暂存于内存中,而非直接写入硬盘
insecure 允许从这台机器过来的非授权访问
#rw ro ——该目录分享的权限是可读写(read-write) 或只读 (read-only),但最终能不能读写,还是与文件系统的 rwx 及身份有关。
#sync async ——sync 代表数据会同步写入到内存与硬盘中,async 则代表数据会先暂存于内存当中,而非直接写入硬盘。
#no_root_squash root_squash ——客户端使用 NFS 文件系统的账号若为 root 时,系统该如何判断这个账号的身份?预设的情况下,客户端 root 的身份会由 root_squash 的设定压缩成 nfsnobody, 如此对服务器的系统会较有保障。但如果你想要开放客户端使用 root 身份来操作服务器的文件系统,那么这里就得要开 no_root_squash 才行!
all_squash ——不论登入 NFS 的使用者身份为何, 他的身份都会被压缩成为匿名用户,通常也就是 nobody(nfsnobody) 。
4.修改
/etc/exports
配置文件后,需要使用exportfs命令。
exportfs [-aruv]
-a 全部文件系统挂载(或者卸载)
/etc/exports
文件中的设置
-r 重新挂载
/etc/exports
文件中的设置
-u 卸载某一目录
-
v
显示详细信息
|
4.客户端配置
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
29
30
|
1.查询软件是否安装
rpm -qa |
grep
nfs
2.安装nfs-utils客户端
yum -y
install
nfs-utils
3.创建挂载目录
mkdir
/nfsdata
4.查看服务器端挂载信息:
[root@node2 /]
# showmount -e 192.168.193.128
Export list
for
192.168.193.128:
/nfs-data
192.168.193.0
/24
5.进行挂载
#为了提高NFS的稳定性,使用TCP协议挂载,NFS默认用UDP协议
mount
-t nfs 192.168.101.128:
/nfs-data
/nfsdata
-o tcp,nolock
6.进行查看
[root@node2 /]
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_node2-lv_root
18G 790M 16G 5% /
tmpfs 743M 0 743M 0%
/dev/shm
/dev/sda1
477M 39M 413M 9%
/boot
/dev/sr1
3.7G 3.7G 0 100%
/mnt
/dev/sr0
2.1G 2.1G 0 100%
/media
192.168.193.128:
/nfs-data
18G 1.4G 15G 9%
/nfsdata
#挂载成功!
|
5.固定nfs服务端口(为了方便配置防火墙,若防火墙关闭,则忽略该步骤)
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
NFS启动时会随机启动多个端口并向RPC注册,这样如果使用iptables对NFS端口进行限制就会有点麻烦,可以更改配置文件固定NFS服务相关端口。
#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 59175 status
100024 1 tcp 36247 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 43725 nlockmgr
100021 3 udp 43725 nlockmgr
100021 4 udp 43725 nlockmgr
100021 1 tcp 45552 nlockmgr
100021 3 tcp 45552 nlockmgr
100021 4 tcp 45552 nlockmgr
编辑配置文件:
vim
/etc/sysconfig/nfs
RQUOTAD_PORT=30001
LOCKD_TCPPORT=30002
LOCKD_UDPPORT=30002
MOUNTD_PORT=30003
STATD_PORT=30004
重启服务:
systemctl start nfs.service
再次查看,端口已固定:
rpcinfo -p localhost
|
6.mount常见挂载参数
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
29
30
31
32
33
34
35
36
37
38
39
40
|
linux系统:
mount
-t nfs -o hard,intr,nolock,nfsvers=3,tcp,rsize=1048600,wsize=1048600,
bg
192.168.1.1:
/data/
/XXX
-t:指定文件系统的类型,通常不必指定,
mount
会自动选择正确的类型。
光盘或光盘镜像:iso9660
DOS fat16文件系统:msdos
Windows 9x fat32文件系统:vfat
Windows NT ntfs文件系统:ntfs
Mount Windows文件网络共享:smbfs
UNIX(LINUX) 文件网络共享:nfs
-o:主要用来描述设备或档案的挂接方式
hard:两者有一台主机脱机,则RPC会持续的呼叫,直到恢复连接。(默认hard)
soft:RPC会在timeout后重复呼叫。使用软挂载的方式挂载系统,若Client的请求得不到回应,则重新请求并传回错误信息
intr:如果是hard方式挂载,加上intr,则当RPC持续呼叫时,该次呼叫是可以被中断的。(interrupted)
允许NFS中断文件操作和向调用它的程序返回值,默认不允许文件操作被中断。
rsize:在NFS服务器读取文件时NFS使用的字节数,默认值是1024个字节。
wsize:向NFS服务器写文件时NFS使用的字节数,默认值是1024个字节。
fg
:前台执行,
mount
会持续的尝试挂载,直到成功或
time
out (默认
fg
)
bg
:后台执行,
mount
会在后台持续多次进行
mount
,不会影响到前台的程序的运行。
tcp:对文件系统的挂载使用TCP,而不是默认的UDP。
solaris系统:
mount
-F nfs -o hard,intr,llock,vers=3,proto=tcp,timeo=1200,sec=sys,rsize=1048600,wsize=1048600 192.168.1.1:
/data/
/XXX/
-F:指定文件类型。
vers:3 由于默认情况下Linux下挂载nfs使用的是nfs version3,而solaris10下挂载nfs使用的是nfs version4。所以改成3
timeo:暂停时间:一秒的十分之1200
|
7.客户端nfs实现自动挂载
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
方式1:添加进fstab中实现开机自动挂载
vim /etc/fstab
添加:
192.168.193.128: /nfs-data /data nfs defaults 0 0
chkconfig netfs on
#网络文件系统由netfs服务来挂载,所以必须保证netfs为开机启动
方式2:添加进 /etc/rc .d /rc . local
mount -t nfs -o nosuid,noexec,nodev,rw, bg ,soft,rsize=32768,wsize=32768 192.168.193.128: /nfs-data /data
#方式1与方式2的区别:
理解为将磁盘挂载写进 /etc/fstab ,表示启动过程中就挂载上去。
如果把 mount .nfs命令写在 /etc/rc . local 里,就是表示在加载了shell之后(系统启动后)才挂载NFS
方式3:使用autofs服务,实现自动挂载,自动卸载
### cd 到挂载的目录,实现自动挂载
1.安装必要软件包
yum install autofs -y
2.编辑配置文件
vim /etc/auto .master ##主配置文件,指定检测的特定目录
/nfsdata /etc/auto .nfs
[需要监控的目录,挂载的目录]
vim /etc/auto .nfs ##子配置文件
temp -rw 192.168.44.128: /nfs-data ###实际上nfs是挂载在这个目录下/nfsdata/temp
[挂载后的目录]
3.启动服务autofs
/etc/init .d /autofs start
4.检查
df -h #没有挂载
cd /nfsdata #没有挂载
cd /nfsdata/temp
df -h #自动进行挂载
如果长时间不进入,就会自动断开,默认是300秒
在 /etc/sysconfig/autofs 配置.
|