NFS部署和优化

服务端配置NFS

CentOS上使用NFS服务,需要安装两个包(nfs-utils和rpcbind),不过当使用yum安装nfs-utils 时会把rpcbind一起安装上

1
yum install -y nfs-utils rpcbind
修改配置文件,默认该文件为空,现在编辑它:
1
vim /etc/exports

写入以下内容:

1
/mnt 192.168.189.0/24(rw,sync,all_squash,anonuid=501,anongid=501)

这个配置文件就这样简单一行。共分为三部分,第一部分就是本地要共享出去的目录,第二部分为允许访问的主机(可以是一个IP也可以是一个IP段)第三部分就是小括号里面的,为一些权限选项。下面简单介绍以下权限选项:

  • w :读写;
  • 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。

我们刚才配置的文件意思为:其中分享的目录为/mnt,信任的主机为:192.168.189.0/24这个网段,权限为读写,同步,限定所有使用者,并且限定的uid和gid都为501。

编辑好配置文件后,就该启动NFS服务了
1
2
/etc/init.d/rpcbind start
/etc/init.d/nfs start

客户端上挂载nfs

客户端在挂载NFS之前,我们需要先看一看服务端都共享了哪些目录

1
2
3
showmount -e 192.168.189.131         #IP为服务端IP
Export list for 192.168.189.131:
/mnt 192.168.189.0/24

可以看到共享的目录为/mnt 信任的IP为192.168.189.0/24这个网段

挂载
1
2
3
4
5
6
7
mount -t -onolock,nfsver=3 192.168.189.131:/mnt /opt #-o后面跟挂载选项,如果不加nfsver=3 则挂载目录下的文件属主和组都是nobody
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 18G 1.4G 16G 9% /
tmpfs 504M 0 504M 0% /dev/shm
/dev/sda1 194M 25M 160M 14% /boot
192.168.189.131:/mnt 18G 2.8G 14G 17% /opt

可以看到在多出来一个 /opt分区,它就是NFS的共享目录。

命令exportfs

该命令的个选项意义为:

  • -a :全部挂载或者卸载;
  • -r :重新挂载;
  • -u :卸载某一个目录;
  • -v :显示共享的目录;

当改变/etc/exports配置文件后,不用重启nfs服务而直接用exportfs -arv即可。
-o还有一个选项是-o nolock 了,即在挂载nfs服务时,不加锁。 启用这个选项后,我们可以把要挂载的nfs目录写到client上的/etc/fstab文件中:

1
192.168.189.131:/tmp/            /test        nfs       nolock  0 0

挂载时只需要执行 mount -a 即可。

1
2
3
4
5
6
7
[root@Grapedlinux ~]# mount -a
[root@Grapedlinux ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 18G 1.4G 16G 9% /
tmpfs 504M 0 504M 0% /dev/shm
/dev/sda1 194M 25M 160M 14% /boot
192.168.189.131:/tmp/ 18G 2.8G 14G 17% /test