3.1 NFS服务的查看与安装
目前几乎所有Linux发行版本都默认安装了NFS服务,Red Hat 也不例外。
1. 检查NFS服务的软件包
启动NFS服务需要nfs-utils和portmap这两个软件包。
使用rpm –q nfs-utils portmap 查看系统是否安装nfs-utils和portmap这两个软件包。
如果未安装,则放入光盘安装。
使用rpcinfo –p命令检查NFS服务是否正常运行。如果NFS服务运行正常,就可在该命令执行结果中看到关于portmapper、nfs和mountd等守护进程的条目。
3.2 NFS服务的配置
主要配置文件
/etc/exports
设置后启动NFS服务即可
3.3.1 exports文件的格式
exports文件每一行提供了一个共享目录的设置,格式如下:
<输出目录> [ 客户端1 (选项1,选项2,…) ] [客户端2 (选项1,选项2,…) ]
3.3.2 NFS服务配置实例
下面首先给出NFS主配置文件/etc/exports的一个应用实例,然后对有关设置进行说明。
/nfs/public 192.168.1.0/24(rw,async) *(ro)
/nfs/student 192.168.16.20(rw,sync)
/nfs/root *.fjjy.net(ro,no_root_squash)
/nfs/users *.fjjy.net(rw,insecure,all_squash,sync,no_wdelay)
/mnt/cdrom 192.168.1.*(ro)
(1) /nfs/public 192.168.1.0/24(rw,async) *(ro)
输出目录/nfs/public可供子网192.168.1.0/24中的所有客户机进行读写操作,而其他网络中的客户机只能读取该目录的内容。
值得注意的是,当某用户使用子网192.168.1.0/24中的客户机访问该共享目录时,能否真正地写入,还要看该目录对该用户有没有开放Linux文件系统权限的写入权限。
² 如果该用户是普通用户,那么只有当该目录对该用户开放了写入权限时,该用户才可以在该共享目录下创建子目录及文件,且新建子目录及文件的所有者就是该用户(实际上应该是该用户的UID)。
² 如果该用户是root用户,由于默认选项中有root_squash,root用户会被映射为nfsnobody,因此只有该共享目录对nfsnobody开放了写入权限时,该用户才能在共享目录中创建子目录及文件,且所有者将变成nfsnobody。
(2) /nfs/student 192.168.16.20(rw,sync)
输出目录/nfs/student只供IP地址为192.168.16.20的客户机进行读写操作。
(3) /nfs/root *.fjjy.net(ro,no_root_squash)
对于输出目录/nfs/root,fjjy.net域中的所有客户机都具有只读权限,并且不将root用户映射到匿名用户。
(4) /nfs/users *.fjjy.net(rw,insecure,all_squash,sync,no_wdelay)
对于输出目录/nfs/users来说,fjjy.net域中的所有客户机都具有可读可写的权限,并且将所有用户及所属的用户组都映射为nfsnobody,数据同步写入磁盘。如果有写入操作则立即执行。
(5) /mnt/cdrom 192.168.1.*(ro)
对于输出目录/mnt/cdrom来说,子网192.168.1.0/24中的所有客户机都具有只读的权限。
3.3.3 维护NFS服务的输出目录列表
修改/etc/exports文件的内容后,实际上不需要重新启动NFS服务,而直接使用命令exportfs就可以使设置立即生效。
exportfs命令用于维护NFS服务的输出目录列表,命令格式如下:
exportfs [选项]
选项:
-a: 输出在/etc/exports文件中所设置的所有目录;
-r: 重新读取/etc/exports文件中的设置,并使设置立即生效,而不需重新启动NFS服务;
-u: 停止输出某一目录;
-v: 在输出目录时将目录显示到屏幕上。
1. 重新输出共享目录
修改/etc/exports文件的内容后,使用下面命令来重新输出共享目录。
exportfs -rv
2. 停止输出所有共享目录
要停止当前主机中NFS服务器的所有共享目录输出,可使用下面的命令。
exportfs -auv
3.3 启动和停止NFS服务
1. 启动NFS服务
要使NFS服务器能正常工作,需要启用portmap和nfs这两个服务。并且portmap一定要先于nfs启动,具体命令如下:
命令执行后,先启动portmap和nfs服务成功
2. 停止NFS服务
停止NFS服务,需要先停止NFS服务再停止portmap服务。如果系统中还有其他服务(如NIS)需使用portmap服务,则可以不停止portmap服务。
3. 重新启动NFS服务
重新启动命令:(使用前题是NFS服务已经启动)
4. 检查portmap和nfs服务的状态
相关命令:
5. 设置自动启动NFS服务
对于实际系统,应该设置系统在指定的运行级别(通常为 3 和 5)自动启动portmap和nfs服务,具体命令如下。
也可执行“ntsysv”命令启动服务配置程序,找到“nfs”和“portmap”,然后在其前面加“*”号,确定即可。
3.4 测试NFS服务
1. 检查输出目录所使用的选项
通过查看/var/lib/nfs/etab文件,了解真正输出目录时,到底使用了什么选项。
vi /var/lib/nfs/etab
2. 使用showmount命令测试NFS服务器的输出目录状态
showmount命令格式:showmount [选项] NFS服务器名称或地址
常用选项:
-a :显示指定的NFS服务器的所有客户端主机及其所连接的目录;
-d :显示指定的NFS服务器中已被客户端连接的所有输出目录;
-e :显示指定主机中NFS服务器上所有输出的共享目录。
3.5 NFS客户端的使用
在NFS服务器设置完成后,客户端可以先查看NFS服务器上有那些共享目录,然后使用mount命令将可用的共享目录挂载到本机的文件系统,甚至还可以实现开机自动挂载,以后用户就可像使用本地文件系统中的目录一样使用NFS挂载目录。
3.6.1 查看NFS服务器信息
在客户端,使用showmount命令查看NFS服务器上有那些共享目录。
【例】以下以另一台Red Hat 9 Linux为客户端(IP是192.168.1.10)进行为例说明。服务器的IP为192.168.1.5。
3.6.2 连接NFS服务器
得知远程NFS服务器上的共享资源后,接下来就是进行实际的挂载操作。
挂载NFS服务器上的输出目录的命令格式为:
mount –t NFS 服务器名或IP地址:输出目录 本地挂载目录
【例】将NFS服务器(IP:192.168.1.5;hostname:LinuxServer)上的/nfs/public共享目录,挂载到客户端(IP:192.168.1.10)的/mnt/nfs_public目录上。
注意:
必须在服务器的/etc/hosts文件中加上客户端的IP地址解析,如:
否则连接时,会出现:mount:RPC:超时 的错误
现观测服务器的共享目录和光驱中的内容:
客户端进行连接:
3.6.3 卸载NFS服务器
用umount命令来卸载不想再使用的已挂载NFS输出目录。
umount 要卸载的目录路径
3.6.4 启动时自动连接NFS
要想让系统在启动时自动挂载NFS服务器上的输出目录,应编辑/etc/fstab文件,在文件中加入如下格式的语句。
NFS服务器名或IP地址:输出目录本地挂载目录 nfs defaults 0 0