NFS(network file system),即网络文件系统;它用于在网络上共享存储。
这次试验准备两台虚拟机,一个作为服务端,一个为客户端。服务端共享一个目录,然后客户端挂载这个目录就可以实现共享存储了。
1、服务端配置NFS
首先需要安装两个包nfs-utils和rpcbind(用于服务端和客户端之间的通信,CentOS6版本以前都是安装portmap包,实际上是同一个东西)
[root@tpp ~]# yum install -y nfs-utils rpcbind
编辑配置文件
[root@tpp ~]# vim /etc/exports //写入以下内容
/mnt 192.168.0.104(rw,sync,all_squash,anonuid=502,anongid=502)
注:这里是共享出根目录下的mnt目录;指定只有192.168.0.104才能访问(我们也可以指定一个网段192.168.0.104/24);rw为可读写(ro只读);sync为同步模式(async非同步模式);不管使用NFS的用户是谁,他的身份都会被限定成为一个指定的普通用户身份;anonuid/anongid指定使用NFS的用户限定后的uid和gid,前提是本机的/etc/passwd中存在这个uid和gid。
启动NFS服务:
[root@tpp ~]# /etc/init.d/rpcbind start
[root@tpp ~]# /etc/init.d/nfs start
注:后期要是修改了/etc/exports这个配置文件,可以使用exportfs命令挂载不需要重启NFS服务。
[root@tpp ~]# exportfs -arv
2、客户端挂载NFS
客户端也要安装nfs-utils和rpcbind两个包
[root@tpp ~]# yum install -y nfs-utils rpcbind
在挂载之前,我们先查看共享了哪些目录
[root@tpp ~]# showmount -e 192.168.0.109 //此为服务端IP
Export list for 192.168.0.109:
/mnt 192.168.0.104
注:要关闭服务端的防火墙,要不然客户端查看不到该共享,会报如下的错:
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
然后挂载NFS
[root@tpp ~]# mount -t nfs -onolock,nfsvers=3 192.168.0.109:/mnt /opt
注:-o nolock为不加锁;nfsers=3指定为版本3,不加会默认为4;192.168.0.109:/mnt /opt为从服务端/mnt目录挂载到客户端/opt目录。
我们可以查看到增加了一个/opt分区,它就是NFS共享的目录了
[root@tpp ~]# df -h
然后我们在/opt在新建文件
[root@tpp ~]# cd /opt/
[root@tpp opt]# touch 1.txt
[root@tpp opt]# mkdir 111
[root@tpp opt]# ls -l
总用量 4
drwxr-xr-x. 2 502 502 4096 9月 13 01:24 111
-rw-r--r--. 1 502 502 0 9月 13 01:20 1.txt
注:
(1)若报新建文件没有权限,我们还需去服务端,把/mnt目录权限改为任何人都可操作
[root@tpp ~]# chmod 777 /mnt
(2)这里显示对的uid和gid都是我们之前指定的502。若客户端/etc/passwd下id为502有对应的用户,则会显示用户名,而不是ID号。
3、加入到开机启动
我们把要挂载的NFS目录写到客户端的/etc/fstab
[root@tpp opt]# vim /etc/fstab //添加下面一行
192.168.0.109:/mnt/ /opt nfs nolock 0 0
因为刚我们挂载了NFS,所以先卸载
[root@tpp opt]# cd
[root@tpp ~]# umount /opt/
然后重新挂载,只要执行如下命令即可
[root@tpp ~]# mount -a
这样操作后,以后开机都会自动挂载NFS。
4、后记
若想把新建的文件都设置为root用户。
我们在服务端配置/etc/exports文件如下:
[root@tpp ~]# vim /etc/exports
/mnt 192.168.0.104(rw,sync,no_root_squash)
[root@tpp ~]# exportfs -arv //重新加载NFS服务
exporting 192.168.0.104:/mnt
在客户端/opt目录下新建文件
[root@tpp opt]# touch 1.txt
[root@tpp opt]# touch 123
[root@tpp opt]# ls -l
总用量 0
-rw-r--r--. 1 root root 0 9月 13 02:05 123
-rw-r--r--. 1 root root 0 9月 13 02:05 1.txt
由上可知文件所属主和所属组都为root