安装nfs
1 | yum install -y nfs-utils rpcbind |
创建共享目录
将文件所有者指定为nfsnobody。nfsnobody用户在安装nfs时会自动创建。
如果不指定共享用户,则nfs系统在分配权限时会以用户uid为主,客户端如果用root账户会在服务器被自动降级至nfsnobody。
1 | mkdir -p /data/nfs |
配置
server配置文件
格式:共享目录 指定共享对象(共享参数)
例: /data 192.168.1.0/24(rw,sync)
将 /data 共享给192.168.1.x ,客户端权限rw
其中共享对象可以用通配符,比如 * 代表所有地址。
配置参数
rw: 读写
ro :只读
sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
async:是大数据时使用,是先写到缓存区,必要时再写到磁盘里。
all_squash:所有访问用户都映射为匿名用户或用户组;
no_all_squash(默认):访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组;root_squash(默认):将来访的root用户映射为匿名用户或用户组;
no_root_squash:来访的root用户保持root帐号权限;wdelay(默认):检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率;
no_wdelay:若有写操作则立即执行,应与sync配合使用;subtree_check :若输出目录是一个子目录,则nfs服务器将检查其父目录的权限;
no_subtree_check(默认):即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;
1 | [root@localhost ~]# cat /etc/exports |
启动服务
注意先启动rpcbind再启动nfs
1 | service rpcbind start |
查询nfs挂载
1 | showmount -e |
查看共享目录参数
1 | cat /var/lib/nfs/etab |
客户端
1 | [root@localhost nova]# mount -t nfs 10.10.16.182:/data/nfs /nfs |
客户端挂载优化参数
noatime 不更新文件的inode访问时间戳,文件很多时此参数可以提高效率。
nodiratime 不更新目录的访问时间戳,同上。
nosuid 关闭挂载目录的suid
noexec 不允许执行二进制文件。shell脚本无法直接使用,但是用sh xxx.sh依然可以调用。
rsize 系统每次读取的最大字节,centos6.5默认131072,此参数过小会影响系统的I/O效率.
wsize 系统每次写入的最大字节,同上
defaults 使用默认的选项。默认选项为rw、suid、dev、exec、anto nouser与async。
例: mount -o nosuid noexec noatime -t nfs 192.168.1.240:/data/nfs /mnt
windows客户端配置
cmd里直接输入 mount 10.10.16.182:/data/nfs z:
参考: