《Linux实用教程》第3版课件人民邮电出版社出版第14章NFS服务器配置《Linux实用教程》第3版PPT本章内容14.1NFS简介14.2NFS服务器安装和配置14.3管理NFS共享目录14.4挂载和卸载NFS共享目录14.1NFS简介14.1.1什么是NFS14.1.2NFS协议什么是NFSNFS(NetworkFileSystem,网络文件系统)是由SUN公司发展,并于1984年推出的技术。NFS对于在同一个网络上的多个用户间共享目录和文件很有用途。通过使用NFS,用户和程序可以像访问本地文件一样访问远程系统上的文件。NFS本身的服务并没有提供文件传递的协议,但是NFS却能让我们进行文件的共享,这其中的原因,就是NFS使用RPC协议。所以只要用到NFS的地方都要启动RPC服务,不论是NFS服务器还是NFS客户端。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责信息的传输。这样NFS服务器端与NFS客户端才能由RPC协议来进行端口的对应。NFS主要管理分享出来的目录,而至于文件的传递,就直接将它交给RPC协议来运作。NFS协议客户端使用NFS可以透明地访问服务器中的文件系统,这不同于提供文件传输的FTP协议。FTP会产生文件一个完整的副本。NFS只访问一个进程引用文件部分,并且一个目的就是使得这种访问透明。这就意味着任何能够访问一个本地文件的客户端程序不需要做任何修改,就应该能够访问一个NFS文件。NFS是一个使用SunRPC构造的客户端/服务器应用程序,其客户端通过向一台NFS服务器发送RPC请求来访问其中的文件。尽管这一工作可以使用一般的用户进程来实现,即NFS客户端可以是一个用户进程,对服务器进行显式调用,而服务器也可以是一个用户进程。首先访问一个NFS文件必须对客户端透明,因此NFS的客户端调用是由客户端操作系统代表用户进程来完成的;其次,出于效率的考虑,NFS服务器在服务器操作系统中实现。如果NFS服务器是一个用户进程,每个客户端请求和服务器应答(包括读和写的数据)将不得不在内核和用户进程之间进行切换,这个代价太大。NFS协议从诞生到现在为止,已经有NFSV2、NFSV3和NFSV4等多个版本。14.2NFS服务器安装和配置14.2.1安装NFS服务器软件包14.2.2/etc/exports文件详解14.2.3控制nfs-server服务安装NFS服务器软件包安装nfs-utils软件包。[root@rhel~]#cd/run/media/root/RHEL-7.2\Server.x86_64/Packages[root@rhelPackages]#rpm-ivhnfs-utils-1.3.0-0.21.el7.x86_64.rpm/etc/exports文件详解/etc/exports文件控制着NFS服务器要导出的共享目录以及访问控制。/etc/exports文件默认是空白的,没有任何内容。也就是说NFS服务器默认是不共享任何目录,需要手工编辑添加。/etc/exports文件内容的格式如下所示。共享目录客户端(导出选项)共享目录在/etc/exports文件中添加的共享目录必须使用绝对路径,不可以使用相对路径。而且该目录必须事先创建好,该目录将作为NFS服务器上的共享目录并提供给客户端使用。客户端客户端是指可以访问NFS服务器共享目录的客户端计算机,客户端计算机可以是一台计算机,也可以是一个网段,甚至是一个域。NFS客户端指定方式客户端指定方式举例使用IP地址指定客户端192.168.0.5使用IP地址指定网段192.168.0.0/24、192.168.0.0/255.255.255.0使用IP地址指定网段192.168.0.*使用域名指定客户端linux.sh.com使用域名指定域内所有客户端*.sh.com使用通配符指定所有客户端*导出选项在/etc/exports文件中可以使用众多的选项来设置客户端访问NFS服务器共享目录的权限。常用导出选项(1)导出选项描述rw共享目录具有读取和写入的权限ro共享目录具有只读的权限root_squashroot用户的所有请求映射成如anonymous(匿名)用户一样的权限no_root_squash关闭root_squashall_squash映射所有的UID和GID为匿名用户no_all_squash保留共享文件的UID和GID(默认)anonuid指定NFS服务器/etc/passwd文件中匿名用户的UIDanongid指定NFS服务器/etc/passwd文件中匿名用户的GIDsync所有数据在请求时写入共享,在请求所做的改变被写入磁盘之前就不会处理其它请求。适合大量写请求的情况下asyncNFS在写入数据前可以响应请求,写入和读取可同时进行,由NFS保证其一致性。适合少量写请求并且对数据一致性要求不高的情况下常用导出选项(2)导出选项描述secureNFS通过1024以下的安全TCP/IP端口发送insecureNFS通过1024以上的端口发送wdelay如果多个用户要写入NFS目录,则归组写入(默认)no_wdelay如果多个用户要写入NFS目录,则立即写入,当使用async时,不需要设置subtree_check如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限no_subtree_check和subtree_check相对,不检查父目录权限hide在NFS共享目录中不共享其子目录nohide共享NFS目录的子目录mp如果它已经成功挂载,那么使得它只导出一个目录fsidNFS需要能够识别每个它导出的文件系统。通常情况下它会为文件系统使用一个UUID,或者该设备保持文件系统的设备号NFS服务器配置实例/it192.168.0.5(ro,sync)//允许来自主机192.168.0.5的用户以默认的只读权限来挂载/it目录/it192.168.0.5(rw,sync)//允许来自主机192.168.0.5的用户以读写权限来挂载/it目录/it*(ro,all_squash,anonuid=65534,anongid=65534)//允许所有客户端的用户以只读权限来挂载/it目录,使用NFS服务器共享目录的用户都将映射为匿名用户,匿名用户将使用UID和GID为65534的系统账户(必须事先存在)/it*.sh.com(ro)//允许sh.com域内的客户端的用户以只读权限来挂载/it目录/itlinux.sh.com(ro)//允许来自主机linux.sh.com的用户以只读权限来挂载/it目录/it192.168.0.0/24(ro)192.168.1.0/24(ro)//允许来自192.168.0.0和192.168.1.0网段客户端的用户以只读权限来挂载/it目录/it192.168.0.*(ro,root_squash)//允许来自192.168.0.0网段客户端的用户以只读权限来挂载/it目录,并且将root用户映射成匿名用户/itproj*.sh.com(rw)//允许sh.com域内主机名以proj开头的客户端的用户以读写权限来挂载/it目录/itcl[0-9].sh.com(rw)//允许sh.com域内主机名以cl0~cl9开头的客户端的用户以读写权限来挂载/it目录控制nfs-server服务1.启动nfs-server服务[root@rhel~]#systemctlstartnfs-server.service2.查看nfs-server服务运行状态[root@rhel~]#systemctlstatusnfs-server.service3.停止nfs-server服务[root@rhel~]#systemctlstopnfs-server.service4.重新启动nfs-server服务[root@rhel~]#systemctlrestartnfs-server.service5.开机自动启动nfs-server服务[root@rhel~]#systemctlenablenfs-server.service14.3管理NFS共享目录14.3.1维护NFS共享目录14.3.2查看NFS共享目录信息维护NFS共享目录使用exportfs命令可以导出NFS服务器上的共享目录、显示共享目录,或者不导出共享目录。命令语法:exportfs[选项][共享目录]查看NFS共享目录信息使用showmount命令可以显示NFS服务器的挂载信息。比如查看NFS服务器上有哪些共享目录,这些共享目录可以被哪些客户端可访问,以及哪些共享目录已经被客户端挂载了。命令语法:showmount[选项][NFS服务器]14.4挂载和卸载NFS共享目录14.4.1挂载和卸载NFS文件系统14.4.2开机自动挂载NFS文件系统挂载和卸载NFS文件系统1.安装nfs-utils软件包2.查看NFS服务器上的共享目录3.挂载和卸载NFS文件系统(1)挂载NFS文件系统在客户端计算机上使用mount命令可以挂载NFS服务器上的共享目录。mount-tnfs[NFS服务器IP地址或者主机名:NFS共享目录][本地挂载目录](2)卸载NFS文件系统在客户端计算机上使用以下umount命令可以卸载NFS服务器上的共享目录/it(该目录当前被挂载在本地的/mnt/it目录下)。开机自动挂载NFS文件系统挂载NFS服务器上的NFS共享的第二种方法是在/etc/fstab文件中添加内容。这样每次启动客户端计算机时都将挂载NFS共享目录。内容中必须声明NFS服务器的主机名、要导出的目录以及要挂载NFS共享的本地主机目录。