以下是NFS最显而易见的好处:
1. 节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用。
2. 用户不需要在网络中的每个机器上都建有Home目录,Home目录可以放在NFS服务器上且可以在网络上被访问使用。
3. 一些存储设备CDROM和Zip(一种高储存密度的磁盘驱动器与磁盘)等都可以在网络上被别的机器使用。这可以减少整个网络上可移动介质设备的数量。
NFS 的基本原则是“容许不同的客户端及服务端通过一组RPC分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。
NFS在文件传送或信息传送过程中依赖于RPC协议。RPC,远程过程调用 (Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER。所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输。
1.服务端配置
nfs-utils: 这个是NFS服务主程序(包含rpc.nfsd、rpc.mountd、daemons)
rpcbind: 这个是CentOS6.X的RPC主程序(CentOS5.X的为portmap)
yum install -y nfs-utils rpcbind #安装nfs服务端
systemctl start rpcbind
systemctl enable rpcbind #设置开机启动
netstat -lntup |grep rpcbind #查询rpcbind服务启动状态
rpcinfo -p localhost #查看NFS服务项rpc服务器注册的端口
由于在FNS服务过程中,必须先启动rpcbind,再启动nfs,这样才能让NFS在rpcbind上注册成功
systemctl start nfs
systemctl enable nfs #设置开机启动
rpcinfo -p localhost #查看NFS服务项rpc服务器注册的端口
为了规范化最好用rc.local来管理开机自启动
[root@NFS-server ~]# ps -ef |egrep "rpc|nfs" #查看nfs相进程
rpcuser 1303 1 0 Nov22 ? 00:00:00 rpc.statd #检查文件一致性
root 1512 2 0 Nov22 ? 00:00:00 [rpciod/0]
rpc 2723 1 0 02:43 ? 00:00:00 rpcbind
root 2896 1 0 02:56 ? 00:00:00 rpc.rquotad #磁盘配额进程
root 2901 1 0 02:56 ? 00:00:00 rpc.mountd #权限管理验证等
root 2908 2 0 02:56 ? 00:00:00 [nfsd4]
root 2909 2 0 02:56 ? 00:00:00 [nfsd4_callbacks]
root 2910 2 0 02:56 ? 00:00:00 [nfsd]
root 2911 2 0 02:56 ? 00:00:00 [nfsd]
root 2912 2 0 02:56 ? 00:00:00 [nfsd]
root 2913 2 0 02:56 ? 00:00:00 [nfsd] #NFS主进程,管理登入,身份判定
root 2914 2 0 02:56 ? 00:00:00 [nfsd]
root 2915 2 0 02:56 ? 00:00:00 [nfsd]
root 2916 2 0 02:56 ? 00:00:00 [nfsd]
root 2917 2 0 02:56 ? 00:00:00 [nfsd]
root 2948 1 0 02:56 ? 00:00:00 rpc.idmapd #名称映射
2.配置
vim /etc/sysconfig/nfs #可自定义mountd 和rquotad的端口
/etc/exports 是NFS程序的配置文件。并且默认为空
/etc/exports文件的配置格式为:
NFS共享目录 NFS客户端地址1(参数1,参数2,参数3......) 客户端地址2(参数1,参数2,参数3......)
NFS共享目录 NFS客户端地址(参数1,参数2,参数3......)
配置文件(/etc/exports)
#开头的行表示注释
格式: share_dir client_host(permission1,permission2,...,permissionn)
参数:
(1)share_dir
共享目录,必须是目录,若为文件,则在挂载时会出错.
若目录名含有空格等字符,须用双引号
(2)client_host
可以是单个主机(10.226.70.32),也可以是网络段(10.226.70.0/24),支持通配符*和?
(3)permission
ro: 只读(read-only)
rw:读和写(read-write)
root_squash:压缩root用户。当客户端以root挂载时,则NFS服务器将root视为匿名用户服务(nfsnobody)
no_root_squash:不压缩root用户。当客户端以root挂载时,则NFS服务器仍将root视为root用户,不×××全。
all_squash: 将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody)
anonuid=xxx: 将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);
anongid=xxx: 将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);
sync:同步写磁盘
async:异步写磁盘。
(1)多个权限间用逗号隔开
例如:
/testnfs 10.226.70.0/24(rw,sync,no_root_squash)
将服务器的/testnfs目录共享给10.226.70.0/24网段,属于这个网段的主机有读写、同步写磁盘和不压缩root用户的权限。
(2)修改/etc/exports后,要使修改后的文件生效,需使用exportfs命令或重新启动nfs服务
exportfs -ra
mkdir /data
chown -R nfsnobody.nfsnobody /data #使用nfs默认账户
mount /dev/sdb /data
vim /etc/exports #添加配置文件
/data 10.100.0.0/16(rw,sync)
systemctl reload nfs
showmount -e 127.0.0.1 #查看本机挂载情况
3.配置NFS客户端
客户端也需要安装rpcbind和nfs-utils软件,并且设置开机自启动。(只需要启动rpcbind即可)
yum -y install rpcbind nfs-utils
systemctl start rpcbind
systemctl enable rpcbind #设置开机启动
showmount -e 10.100.5.56 #检测挂载
mount -t nfs 10.100.5.56:/data /mnt
即可看到挂载成功
4.设置开机自动挂载
vim /etc/fatab
10.100.5.56:/data /mnt nfs defaults 0 0
原文地址:http://blog.51cto.com/13564078/2112301