Svolence

NFS config & mount

1.安装NFS

Server

1
server$ sudo apt-get update && apt-get install nfs-kernel-server

Client

1
client$ sudo apt-get update && apt-get install nfs-common

2.服务端创建共享目录

1
server$ sudo mkdir /var/nfs/general -p
1
2
# 修改目录所属组
server$ sudo chown nobody:nogroup /var/nfs/general -R

3.配置服务端NFS exports

1
2
3
4
5
6
7
server$ sudo vim /etc/exports
directory_to_share client(share_option1,...,share_optionN)
eg:
/var/nfs/general 10.96.23.109(rw,sync,no_subtree_check)
/var/nfs/general 10.96.23.0/24(rw,sync,no_subtree_check) # 同一网段
/home 10.96.23.109(rw,sync,no_root_squash,no_subtree_check)

NFS主要有3类选项:

访问权限选项

  • 设置输出目录只读: 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服务器也不检查其父目录的权限,这样可以提高效率

1
server$ sudo service nfs-kernel-server restart

4.服务端防火墙设置

1
2
# 查看防火墙状态
server$ sudo ufw status
1
2
# 服务端开启2049端口,防火墙允许访问
server$ sudo ufw allow from 10.96.23.109 to any port nfs

5.客户端创建挂载点

1
client$ sudo mkdir -p /nfs/general

6.在客户端上挂载服务端共享目录

1
client$ sudo mount 10.96.23.109:/var/nfs/general /nfs/general

客户端常用的指定方式

  • 指定ip地址的主机: 10.96.23.120

  • 指定子网中的所有主机: 10.96.23.0/24 10.96.0.0/255.255.255.0

  • 指定域名的主机: www.imooc.com

  • 指定域中的所有主机: *.imooc.com

  • 所有主机: *

7.测试NFS权限

  • 创建一个文件,看所属组是否和服务端当初设置的一样

8.客户端开启启动,挂载远程NFS目录

1
2
3
4
5
server$ sudo vim /etc/fstab
eg:
10.96.23.109:/var/nfs/general /nfs/general nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
10.96.23.109:/home /nfs/home nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

9.卸载NFS远程共享

1
2
client$ sudo umount /nfs/home
client$ sudo umount /nfs/general

参考链接: