搭建nfs服务器

使用centos 7系统作为安装环境

yum -y install nfs-utils

修改nfs的配置文件/etc/exports(默认不存在)

$ vi exports

/home/nfs_share 172.16.187.0/24(insecure,ro,no_root_squash)

使配置文件生效

exportfs -r

/home/nfs_share 为共享目录 172.16.187.0/24 客户端的ip,网段或者域名(域名支持通配符 如 *.qq.com) 如果需要共享多个文件夹,则添加多个记录 访问权限选项

* 这里输入引用文本设置输出目录只读:ro
* 设置输出目录读写:rw

用户映射选项

* all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);
* no_all_squash:与all_squash取反(默认设置);
* root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置);
* no_root_squash:与rootsquash取反;
* anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);
* anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);

其它选项

* secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);
* insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
* sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
* async:将数据先保存在内存缓冲区中,必要时才写入磁盘;
* wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);
* no_wdelay:若有写操作则立即执行,应与sync配合使用;
* subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);
* no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;

nfs服务器启动

systemctl start  nfs.service

查看服务状态

# systemctl status nfs.service
● nfs-server.service - NFS server and services
   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled)
   Active: active (exited) since Sat 2017-02-04 16:25:42 CST; 1min 21s ago
  Process: 3252 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)
  Process: 3251 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=1/FAILURE)
 Main PID: 3252 (code=exited, status=0/SUCCESS)
   Memory: 0B
   CGroup: /system.slice/nfs-server.service

Feb 04 16:26:39 localhost.localdomain systemd[1]: Started NFS server and services.
Hint: Some lines were ellipsized, use -l to show in full.
# rpcinfo -p
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  45763  status
    100024    1   tcp  34424  status
    100005    1   udp  20048  mountd
    100005    1   tcp  20048  mountd
    100005    2   udp  20048  mountd
    100005    2   tcp  20048  mountd
    100005    3   udp  20048  mountd
    100005    3   tcp  20048  mountd
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    3   tcp   2049  nfs_acl
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100227    3   udp   2049  nfs_acl
    100021    1   udp  52967  nlockmgr
    100021    3   udp  52967  nlockmgr
    100021    4   udp  52967  nlockmgr
    100021    1   tcp  44023  nlockmgr
    100021    3   tcp  44023  nlockmgr
    100021    4   tcp  44023  nlockmgr

服务已经启动成功,往里面创建添加一个文件测试

touch /home/nfs_share/hello

搭建nfs客户端

安装nfs,同服务端

yum -y install nfs-utils

查看可用的挂载

# showmount -e 172.16.187.191
Export list for 172.16.187.191:
/home/nfs_share 172.16.187.0/24

客户端挂载

# mount -t nfs 172.16.187.191:/home/nfs_share /home/client_nfs/
# cd /home/client_nfs/
# ls
hello

到此结束,自己动手试试吧

客户端在挂载的时候遇到的一个问题如下,可能是网络不太稳定,NFS默认是用UDP协议,换成TCP协议即可:

mount -t nfs 192.168.1.97:/opt/test /mnt -o proto=tcp -o nolock