在上一篇的SAMBA篇中介绍了linux系统和windows系统之间共用的网络文件系统CIFS,主要用于客户端是windows的情况。在linux系统之间,所用的网络文件系统是NFS。下文将对NFS的一些配置及用法进行介绍。
1、NFS的安装以及配置
"yum install nfs-utils -y"。安装NFS服务,"systemctl start nfs"、"systemctl enable nfs-server",开启服务且设置开机自动启动。"systemctl stop firewalld",关闭防火墙或者配置防火墙。
"vim /etc/exports"。这是编写共享目录的文件,这个文件是空的,需要自己填写。如下图所示,建立一个共享目录"/sharedir",在里面建立三个文件"sharefile{1..3}",在"/etc/exports"文件中写入"/sharedir *(sync)",表示共享"/sharedir","*"表示,所有主及均可使用,(sync)是共享权限为文件同步。保存退出后输入"exportfs -rv"刷新,建议不要重启服务,因为重启速度比较慢。
"showmount -e IP"。可以查看这个IP是否有共享文件,例如输入"showmount -e 172.25.254.202"就可以看到上述设置的共享目录"/sharedir"。
"mount 172.25.254.202/sharedir /mnt"。与CIFS网络文件系统不同,NFS不能通过登陆来查看共享内容,只能进行挂载。
2、权限及文件所有人
在配置文件"vim /etc/exports",可以设置某个或者某些主机可以进行共享目录挂载,如下图所示,输入"/sharedir 172.25.254.2(sync)"表示只有"172.25.254.2"这台主机可以进行挂载。
配置文件中输入"sync"代表文件同步,还可以输入"rw"代表开启读写权限,"ro"表示只读。更多的权限设置可以通过"man 5 exports"查看。
如下图所示,在挂载了共享目录后,在其中建立一个文件"file1",这个文件的所有人是"nfsnobody",这是NFS的匿名用户。
可以对配置文件做以下设置来改变建立文件的所有人:
a、将文件的所有人改为root。
在配置文件中的权限内输入"no_root_squash",如下图所示,挂载后建立一个文件"file2",可以看到,文件"file2"的所有人和所有组都为root。
b、指定文件的所有人和所有组
在配置文件中的权限内输入"anonuid=xxxx,anongid=xxxx",列入输入"anonuid=1000,anongid=1001"。刷新后挂载,建立文件"file4",在客户端可以看到,文件的所有人为"1000",所有组为"kiosk",因为kiosk用户组的gid为1001。在服务端可以看到文件的所有人为"uid=1000"的student用户,所有组为"gid=1001"的class组。
3、客户端的自动挂载和自动取消
挂载一般是需要手动挂载和取消挂载的,在使用完后需要取消挂载,这无疑增加了操作的复杂程度,如果忘记取消挂载也会占用系统资源,带来麻烦。如果可以自动挂载和取消就可以避免这个问题了。
在客户端装载软件可以实现这个功能。"yum install autofs",在客户端安装autofs软件可以实现共享目录的自动挂载和自动取消挂载。
"systemctl start autofs",开启这个服务后,会自动生成一个"/net"目录,"cd /net/172.25.254.202"可以直接看到共享目录。而且也可以看到自动挂载在了这个目录"/net"下。
"vim /etc/sysconfig/autofs"。第15行的"timeout"后面的值表示自动取消挂载的时间,如下图所示,将其设置为"3",则表示退出这个目录3秒后自动取消挂载。
4、客户端的指定挂载目录
客户端的自动挂载不仅仅可以挂载在"/net"下,也可以自己设置目录挂载点。
例如欲将共享目录"/sharedir"挂载在客户端的"/nfs/sharedir"目录下。先建立一"/nfs"目录,在配置文件"/etc/auto.master"中编辑"/nfs /etc/auto.nfs",如下图所示,"/nfs"目标挂载点的上级目录,"/etc/auto.nfs"为记录配置共享目录目标挂载点文件。
"vim /etc/auto.nfs"。在这个文件中写入"sharedir 172.25.254.202:/sharedir"。这是配置共享目录目标挂载点。重启服务后进入"/nfs/sharedir"就可以自动挂载了,离开这个目录3秒之后会自动取消挂载。
5、存储分离
存储分离是将共享目录挂载在客户端上,将文件存储在共享目录中,这样如果客户端的主机出现问题,也不会导致数据丢失。
例如将共享目录挂载在客户端的student用户家目录下,那么student用户登陆时,会自动挂载这个共享目录,且student用户所储存的文件会存在这个共享目录下,退出student用户时也可以看到这些文件。具体做法为:
在服务端建立一个"/sharedir/student"的共享目录。在配置文件"/etc/exports"中编辑"/sharedir/student 172.25.254.0/24(rw,anonuid=1000,anongid=1000)"。将这个目录共享出去。
在客户端编辑"/etc/auto.master",在其中编辑"/home /etc/auto.home"。
"vim /etc/auto.home"。编辑"student 172.25.254.202:/sharedir/student"。也可以编辑"* 172.25.254.202:/sharedir/&","*"代表任意共享目录,"&"代表与"*"匹配的目录,用于共享目录下有许多目录时使用。
重启服务后,切换到student用户,则自动挂载到家目录下,建立"file{1..5}"5个文件,退出后3秒自动取消挂载,在服务端的共享目录里就可以看到这5个文件。