forked from guoxuce/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnfs
87 lines (66 loc) · 4.51 KB
/
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
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
NFS用于在网络上共享存储
服务端配置NFS
CentOS上使用NFS服务,需要安装两个包(nfs-utils和rpcbind), 不过当使用yum安装nfs-utils时会把rpcbind一起安装上:
[root@localhost ~]# yum install -y nfs-utils
在之前的CentOS版本中,是需要安装portmap包的,从CentOS6开始,就改为rpcbind了。
NFS配置起来还是蛮简单的,只需要编辑配置文件/etc/exports即可。
首先是修改配置文件,默认该文件为空,现在编辑它:
[root@localhost ~]# vim /etc/exports
写入如下内容:
/home/ 192.168.137.0/24(rw,sync,all_squash,anonuid=501,anongid=501)
这个配置文件就这样简单一行。
共分为三部分,第一部分就是本地要共享出去的目录,第二部分为允许访问的主机(可以是一个IP也可以是一个IP段)
第三部分就是小括号里面的,为一些权限选项。关于第三部分,简单介绍一下:
rw :读写;
ro :只读;
sync :同步模式,内存中数据时时写入磁盘;
async :不同步,把内存中数据定期写入磁盘中;
no_root_squash :加上这个选项后,root用户就会对共享的目录拥有至高的权限控制,就像是对本机的目录操作一样。不安全,不建议使用;
root_squash:和上面的选项对应,root用户对共享目录的权限不高,只有普通用户的权限,即限制了root;
all_squash:不管使用NFS的用户是谁,他的身份都会被限定成为一个指定的普通用户身份;
anonuid/anongid :要和root_squash 以及all_squash一同使用,用于指定使用NFS的用户限定后的uid和gid,
前提是本机的/etc/passwd中存在这个uid和gid。
介绍了上面的相关的权限选项后,再来分析一下刚刚配置的那个/etc/exports文件。
其中要共享的目录为/home,信任的主机为192.168.137.0/24这个网段,权限为读写,同步,限定所有使用者,并且限定的uid和gid都为501。
编辑好配置文件后,就该启动NFS服务了:
[root@localhost ~]# /etc/init.d/rpcbind start; /etc/init.d/nfs start
在启动nfs服务之前,需要先启动rpcbind服务,之前CentOS老版本中并不是rpcbind, 而是叫做portmap.
客户端上挂载nfs
客户端在挂载NFS之前,我们需要先看一看服务端都共享了哪些目录,
这需要使用showmount命令,但是这个命令是nfs-utils这个包所带的,所以同样需要安装nfs-utils:
[root@localhost ~]# yum install -y nfs-utils
现在可以看看服务器端都共享了哪些目录了:
[root@localhost ~]# showmount -e 192.168.137.10
Export list for 192.168.137.10:
/home 192.168.137.0/24
可以看到刚才我们在服务端配置的nfs共享信息。
showmount -e 加IP就可以查看NFS的共享情况,上例中,就可以看到192.168.137.10的共享目录为/home,信任主机为192.168.137.0/24这个网段。
在客户端上挂载服务端的nfs:
[root@localhost ~]# mount -t nfs 192.168.137.10:/home/ /mnt/
还有一个常用的命令那就是exportfs,它的常用选项为[-aruv].
-a :全部挂载或者卸载;
-r :重新挂载;
-u :卸载某一个目录;
-v :显示共享的目录;
使用exportfs命令,当改变/etc/exports配置文件后,不用重启nfs服务直接用这个exportfs即可。接下来阿铭做一个实验,先改一下服务端的配置文件:
[root@localhost ~]# vim /etc/exports
增加一行:
/tmp/ 192.168.137.0/24(rw,sync,no_root_squash)
然后服务端上执行命令:
[root@localhost ~]# exportfs -arv
exporting 192.168.137.0/24:/tmp
exporting 192.168.137.0/24:/home
在之前的命令中用到了mount命令来挂载nfs,其实mount这个nfs服务还是有些说法的。
首先是用-t nfs 来指定挂载的类型为nfs。另外在使用nfs时,常用一个选项就是 -o nolock 了,即在挂载nfs服务时,不加锁。
在客户端上执行:
[root@localhost ~]# mkdir /test
[root@localhost ~]# mount -t nfs -o nolock 192.168.137.10:/tmp/ /test/
我们还可以把要挂载的nfs目录写到client上的/etc/fstab文件中,挂载时只需要执行 mount -a 即可。在 /etc/fstab里加一行:
192.168.137.10:/tmp/ /test nfs nolock 0 0
注意:
1.在挂载时可能会出现如下情况:
mount.nfs: access denied by server while mounting 192.168.1.104:/home/nfsshare
可能是权限问题,将所在目录及上一级目录权限修改,755即可。
2.nfs在centos6上可能有卡顿现象,原因可能是不兼容
在挂载时指定nfs的版本即可,默认为4,指定为3
mount -t nfs -onolock,nfsvers=3 192.168.1.104:/mnt /opt