1.安装nfs,需安装rpcbind(远程过程调用)
[root@xuegod63 ~]# yum -y install rpcbind nfs-utils
配置文件位置
[root@xuegod63 ~]# ls /etc/exports
/etc/exports
2.启动NFS服务
[root@xuegod63 ~]# systemctl start rpcbind
[root@xuegod63 ~]# systemctl start nfs-server.service
nfs使用2049端口:
[root@xuegod63 ~]# netstat -antpu | grep 2049
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -
tcp 0 0 :::2049 :::* LISTEN +
配置开机自动启动
[root@xuegod63 ~]# chkconfig nfs-server on
3.修改配置文件,实战举例
[root@xuegod63 ~]# vim /etc/exports
/media *(rw)
注意: * 表示对所有网段开放权限
也可以指定特定的网段
重启服务
[root@xuegod63 ~]# exportfs -rv ##重新读取配置文件,不中断服务.
客户端查看:
[root@xuegod64 ~]# showmount -e 192.168.0.63
Export list for 192.168.0.63:
/media *
挂载共享
[root@xuegod64 ~]# mount -t nfs 192.168.0.63:/media/ /opt/
[root@xuegod64 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 9.7G 4.0G 5.2G 44% /
tmpfs 996M 80K 996M 1% /dev/shm
/dev/sda1 485M 39M 421M 9% /boot
/dev/sr0 3.7G 3.7G 0 100% /mnt
192.168.0.63:/media/ 9.7G 4.0G 5.3G 43% /opt
开机自动挂载:
编辑 [root@xuegod63 ~]# vim /etc/fstab
在文件最后添加自动挂载的信息:
nfs默认使用nfsnobody用户,所以修改共享目录权限:
[root@xuegod63 ~]# grep nfs /etc/passwd
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
修改权限
[root@xuegod63 ~]# chmod 777 -R /media/
或
[root@xuegod63 ~]# chown nfsnobody.nfsnobody -R /media/
4.下面是一些NFS共享的常用参数:
ro 只读访问
rw 读写访问
sync 资料同步写入到内存与硬盘当中
async 资料会先暂存于内存当中,而非直接写入硬盘
secure NFS通过1024以下的安全TCP/IP端口发送
insecure NFS通过1024以上的端口发送
wdelay 如果多个用户要写入NFS目录,则归组写入(默认)
no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
Hide 在NFS共享目录中不共享其子目录
no_hide 共享NFS目录的子目录
subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
no_subtree_check 和上面相对,不检查父目录权限
all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
no_all_squash 保留共享文件的UID和GID(默认)
root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squash root用户具有根目录的完全管理访问权限
[root@xue63 a]# cat /etc/exports
/tmp/a/no_root_squash *(rw,no_root_squash)
/tmp/a/sync 192.168.0.0/24(rw,sync)
/tmp/a/ro 192.168.1.64(ro)
/tmp/a/all_squash 192.168.0.0/24(rw,all_squash,anonuid=500,anongid=500)
/tmp/a/async 192.168.3.0/255.255.255.0(async)
/tmp/a/rw 192.168.3.0/255.255.255.0(rw) 192.168.4.0/255.255.255.0(rw)
/tmp/a/root_squash *(rw,root_squash)
注意:在发布共享目录的格式中除了共享目录是必跟参数外,其他参数都是可选的。并且共享
目录与客户端之间及客户端与客户端之间需要使用空格符号,但是客户端与参数之间是不能有
空格的
5.NFS客户端挂载参数的优化:
NFS高并发环境下的服务端重要优化(mount -o 参数)
async 异步同步,此参数会提高I/O性能,但会降低数据安全(除非对性能要求很高,对数据可靠性不要求的场合。一般生产环境,不推荐使用)
noatime 取消更新文件系统上的inode访问时间,提升I/O性能,优化I/O目的,推荐使用。
nodiratime 取消更新文件系统上的directory inode访问时间,高并发环境,推荐显式应用该选项,提高系统性能
intr:可以中断不成功的挂载
rsize/wsize 读取(rsize)/写入(wsize)的区块大小(block size),这个设置值可以影响客户端与服
务端传输数据的缓冲存储量。一般来说,如果在局域网内,并且客户端与服务端都具有足够的内存,这个
值可以设置大一点,比如说32768(bytes),提升缓冲区块将可提升NFS文件系统的传输能力。但设置的值也不要太大,最好是实现网络能够传输的最大值为限。
内核优化:
net.core.wmem_default = 8388608 #内核默认读缓存
net.core.rmem_default = 8388608 #内核默认写缓存
net.core.rmem_max = 16777216 #内核最大读缓存
net.core.wmem_max = 16777216 #内核最大写缓存
用法:
mount -t nfs -o noatime,nodiratime,rsize=131072,wsize=131072,intr 192.168.0.63:/backup/NFS /mnt
或者写到挂载文件里:
192.168.0.63:/backup/NFS /mnt nfs noatime,nodiratime,rsize=131072,wsize=131072,intr 0 0