NFS服务的概述
NFS最早是由Sun公司于1984年开发出来的,其目的就是让不同计算机不同操作系统之间可以彼此共享文件。由于 NFS使用起来非常方便,因此很快得到了大多数的UNIX/Linux系统的广泛支持,而且还被IETE(国际互联网工程组)制定为RFC1904、 RFC1813和RFC3010标准。
NFS服务的概述
NFS采用客户/服务器工作模式。在NFS服务器上将/nfs/public目录设置为输出目录(即共享目录) 后,其他客户端就可以将这个目录挂载到自己系统中的某个目录下,这个目录可以与服务器上的输出目录和其他客户机中的目录不相同,例如图中的客户机PC1与 PC2的挂载目录就不相同。
如果某用户登录到客户机PC1并进入/mnt/nfs目录,那么他就可以看到NFS服务器内/nfs/public 目录下的所有子目录及文件,只要具有相应的权限,就可以使用cp、cd、mv、rm和df等命令对磁盘或文件进行相应的操作。
NFS服务的概述(图1)
Remote Procedure Call
NFS 本身的服务并没有提供资料传递的协议,但是 NFS 却能让我们进行档案的分享,这其中的原因,就是 NFS 使用到一些其它相关的传输协议!而这些传输的协议,就是使用到这个所谓的 RPC ,NFS 主要在管理分享出来的目录,而至于资料的传递,就直接将他给 RPC 的协议来运作 ,主机的IP、服务的端口、与对应到的服务的PID 等等管理工作由RPC负责.
NFS服务的概述
使用NFS服务,至少需要启动以下3个系统守护进程。
(1)rpc.nfsd: nfs 为来自NFS 客户端的请求服务
(2)rpc.mountd : NFS 挂载服务,处理nfsd 递 交过来的请求
(3)portmap : 由于这个RPC服务比较过时,所以现在使用的是rpcbind服务,rpcbind 此服务允许 NFS 客户程序查询正在被 NFS 服务使用 的端口。
NFS相关进程的作用(图2)
NFS服务的安装
可使用下面的命令来检查系统中是否已经安装了这两个包
rpm -q nfs-utils portmap
下 面的命令安装portmap服务
rpm -ivh portmap
下面的命令安装NFS服务
rpm -ivh nfs-utils
现在一般不是安装portmap服务而是安装rpcbind服务
1。检查有无rpcbind套件 rpm -qa |grep rpcbind
2. 安装 yum install -y rpcbind
NFS服务的配置
exports文件的格式 (/etc/exports)
exprots文件中每一行提供了一个共享目录的设置
其命令格式为:
<输出目录> [客户端1(选项1,选项2,…)][客户端2(选项1,选项2,…)]
客户端常用的指定方式
客户端 说明
192.168.16.20 指定IP地址的主机
192.168.16.0/24(或192.168.16.*) 指定子网中的所有主机
pc1.vpn.net 指定域名的主机
*.vpn.net 指定域中的所有主机
*(或缺省) 所有主机
访问权限选项
访问权限选项 说明
ro 设置输出目录只读
rw 设置输出目录可读写
用户映射选项
用户映射选项 说明
all_squash 将远程访问的所有普通用户及所属用户组都映射为匿名用户或用户组(一般均为nfsnobody)
no_all_squash 不将远程访问的所有普通用户及所属用户组都映射为匿名用户或用户组(默认设置)
root_squash 将root用户及所属用户组都映射为匿名用户或用户组(默认设置)
no_root_squash 不将root用户及所属用户组都映射为匿名用户或用户组
anonuid=xxx 将远程访问的所有用户都映射为匿名用户,并指定该匿名用户账户为本地用户账户(UID=xxx)
anongid=xxx 将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx)
常用的其他选项
其他选项 说明
secure 限制客户端只能从小于1024的TCP/IP端口连接NFS服务器(默认设置) insecure 允许客户端从大于1024的TCP/IP端口连接NFS服务器
sync 将数据同步写入内存缓冲区与磁盘中,虽然这样做效率较低,但可以保证数据的一致性
async 将数据先保存在内存缓冲区中,必要时才写入磁盘
wdelay 检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可提高效率(默认设置)
no_wdelay 若有写操作则立即执行,应与sync配合使用
subtree_check 若输出目录是一个子目录,则NFS服务器将检查其父目录的权限(默认设置)
no_subtree_check 即使输出目录是一个子目录,NFS服务器也不检查其父目录的权限,这样做可提高效率
NFS服务配置实例
(1)/usr/local/arm/3.3.2/rootfs *(rw, no_root_squash)
表示输出/usr/local/arm/3.3.2/rootfs 目录,并且所有的 IP 都可以访问。
(2)/home/public 192.168.0.*(rw)
表示输出/home/public 目录,只允许 192.168.0.*网段的 IP 访问。
(3)/home/test 192.168.1.100(rw)
表示输出/home/test 目录,并且只允许 192.168.1.100 访问。
(4)/home/linux *.linux.org(rw, all_squash, anonuid=40, anongid=40)
表示输出/home/linux 目录,并且允许*.linux.org 主机登录。在/home/linux 下面写文件时,
文件的用户变成 UID 为 40 的使用者。
维护NFS服务的输出目录列表
如果只修改了/etc/exports 文件,并不总是要重启 NFS 服务。可以使用 exportfs 工具重新
读取/etc/exports,就可以加载输出的目录。
exportfs 工具的使用语法如下。
exportfs [-aruv]
-a:全部挂载(或卸载)/etc/exports 的设置。
-r:重新挂载/etc/exports 的设置,更新/etc/exports 和/var/lib/nfs/xtab 里面的内容。
-u:卸载某一个目录。
-v:在输出的时候,把共享目录显示出来。
在 NFS 已经启动的情况下,如果又修改了/etc/exports 文件,可以执行命令:
$ exportfs –ra
启动和停止NFS服务
1.启动NFS服务
/etc/init.d/portmap start
/etc/init.d/nfs start
同样也可以通过service nfs start来启动nfs服务
在这里我们需要启动的是rpcbind服务service rpcbind start
以下也是一样
2.停止NFS服务
/etc/init.d/nfs stop
/etc/init.d/portmap stop
3.重新启动NFS服务
/etc/init.d/nfs restart
4.检查portmap和nfs服务的状 态
/etc/init.d/portmap status
/etc/init.d/nfs status
5.设置自动启动 NFS服务
chkconfig --level 35 portmap on
chkconfig --level 35 nfs on
ntsysv启动服务配置程序,找到"nfs"和"portmap"服务,分别在其前面加上"*"
测试NFS服务
1.检查输出目录所使用的选项
在配置文件/etc/exports中,即使在命令行中只设置了一两个选项,但在真正输 出目录时,实际上还带有很多默认的选项。通过查看/var/lib/nfs/etab文件,就可以了解到真正输出目录时,到底使用了什么选项 。
2. 使用showmount命令测试NFS服务器的输出目录状态
showmount命令的基本格式为:
showmount [选项] NFS服务器名称或地址
常用的选项有:
-a:显示指定 的NFS服务器的所有客户端主机及其所连接的目录;
-d:显示指定的NFS服务器中已被客户端连接的所有输出目录;
-e:显示指定的 NFS服务器上所有输出的共享目录。
NFS客户端的使用
查看NFS服务器信息
【例】如果NFS服务器的IP地址为192.168.85.128,那么可使用下面的 命令来查看。
showmount -e 192.168.85.128
连接NFS服务器
挂载NFS服务器上的输出目录的命 令格式为:
mount -t nfs 服务器名或IP地址:输出目录 本地挂载目录
【例】将NFS服务器(192.168.85.128)上的/nfs/public共享目录挂载到本机上的/mnt/nfs目录。
具体的 步骤如下。
① 使用下面的命令来建立/mnt/nfs目录。
mkdir /mnt/nfs
② 使用下面的命令来挂载NFS服务器上的输出目录。
mount -t nfs 192.168.85.1128:/nfs/public /mnt/nfs
卸载NFS服务器
要卸载前面挂载的/mnt/nfs目录,可使用下面的命令。
umount /mnt/nfs
启动时自动连接NFS
要想让系统在启动时自动挂载NFS服务器上的输出目录,应编辑文件/etc/fstab,在该文件中加入如下格式的 语句。
NFS服务器名或IP地址:输出目录 本地挂载目录 nfs defaults 0 0
【例】要将NFS服务器(192.168.85.128)上的/nfs/public共享目录,在计算机Fedora4启动时自动挂载到该机上的/mnt /nfs目录,可在/etc/fstab文件中加入下面的语句。
192.168.85.129:/nfs/public /mnt/nfs nfs defaults 0 0