NFS = network file system
NFS服务比较常用,用于在网络上共享储存。
服务端配置 NFS
centos 上使用 NFS 服务,需要安装两个包(nfs-utils 和 rpcbind),不过当使用 yum 安装 nfs-utils 时会把 rpcbind 一起安装上
|
|
在以前的 centos 版本中,是需要安装 portmap 包的,从 centos 6 开始,就改为rpcbind了。NFS 配置起来很简单,只需要编辑配置文件 /etc/exports 即可。先创建一个简单的 NFS 服务器。
|
|
写入一下内容:
|
|
这个配置文件就这样简单一行。共分为三部分,第一部分就是本地要共享出去的目录,第二部分为允许访问的主机(可以是一个 IP 也可以是一个 IP 段),第三部分就是小括号里面的,为一些权限选项。
rw: 读写;
ro: 只读;
sync: 同步模式,内存中数据时时写入磁盘;
async: 不同步,把内存中数据定期写入磁盘中;
no_root_squash: 加上这个选项后,root 用户就会对共享的目录拥有至高的权限控制,就像是对本机的目录操作一样。但这样不安全,不建议使用。
roo_squash: 和上面的选项对应,root 用户对共享目录权限不高,只有普通用户的权限,即限制了 root 。
all_squash: 不管使用 NFS 的用户是谁,他的身份都会被限定成一个指定的普通用户身份。
anonuid/anongid: 要和root_squash 以及 all_squash一同使用,用于指定使用 NFS 的用户限定后的 uid 和 gid ,前提是本机的 /etc/passwd 存在这个 uid 和 gid 。
现在分析一下刚才配置的那个 /etc/exports 文件。其中共享的目录为 /home ,信任的主机为 192.168.0.0/24 这个网段,权限为读写,同步,限定所有使用者,并且限定 uid 和 gid 都为501.
编辑好配置文件后,就该启动服务了 :
|
|
在启动服务以前,需要先启动 rpcbind 服务,以前的 centos 老版本中并不是 rpcbind ,而是叫做 portmap。
客户端上挂载 NFS
客户端挂载 NFS 以前,需要先查看服务端都共享了哪些目录,需要使用 showmount 命令,但这个命令是 nfs-utils 这个包带的,所以同样需要安装 nfs-utils
|
|
现在可以查看服务器端都共享了那些目录了
|
|
说明:其中 192.168.0.73 为 NFS 服务端 IP。
可以看到在服务器端配置的 nfs 共享信息。showmount -e 加 ip 就可以查看 nfs 的共享情况,可以看到 192.168.0.73 的共享目录为 /home ,信任主机为 192.168.0.0/24 这个网段。
下面的命令是在客户端上挂载 nfs :
|
|
说明: -o 后面跟挂载选项,如果不加 -o nfsvers=3 则在挂载目录下的文件属主和组都是 nobody,如果指定 nfsers=3 则显示501,所以尽量加上这个选项,避免权限混乱。
用 df -h 命令可以查看到多出来的一个 /mnt 分区,它就是 NFS 共享的目录了。
命令 exportfs
还有一个常用的命令就是 exportfs ,它的常用选项为 [-aruv]
- -a: 全部挂载或者卸载;
- -r: 重新挂载;
- -u: 卸载某一个目录;
- -v: 显示共享的目录
使用 exportfs 命令,当改变 /etc/exports 配置文件后,不用重启 nfs 服务直接用这个 exportfs 即可。
下面先更改服务端的配置:
|
|
增加一行:
|
|
然后服务端上执行命令:
|
|
在之前的命令中用到了 mount 命令来挂载 nfs ,其实 mount 这个 nfs 服务还是有些说法的。首先是用 -t nfs 来指定挂载的类型为 nfs 另外在使用 nfs 时,常用一个选项就是 -o nolock 了,即在挂载 nfs 服务时,不加锁。在客户端上执行:
|
|
还可以把要挂载的 nfs 目录写到 client 上的 /etc/fstab 文件中,挂载时只需要执行 mount -a 即可。在 /etc/fstab 里加一行:
|
|
因为刚挂载过,所以先卸载:
|
|
然后执行:
|
|
这样也可以挂载上,而且以后开机会自动挂载。