NFS部署和优化
系统环境:CentOS release 6.5 (Final)
一、啥是NFS
NFS是Network File System即网络文件系统。一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法。
二、安装NFS服务(Server端)
服务端ip地址:192.168.1.201
监听端口号:2049/tcp,2049/udp
# yum -y install nfs-utils rpcbind
在CentOS5.x叫portmap
编辑/etc/exports文件加入如下内容:
/web 192.168.1.1/24(rw,sync)
exports文件说明:
文件系统 客户端1(文件系统导出属性) 客户端2(文件系统导出属性)
- 客户端指定方式:
IP:192.168.1.202
Hostname:*.fansik.com
Network:192.168.1.0/24
- 文件系统属性
rw:读写
async:异步
sync:同步
root_squash:压缩root用户,基于imapd,将root通过网络访问时转换为nfsnobody用户
no_root_squash:不压缩用户
all_squash:压缩所有用户
anonuid,anongid:指定
启动rpcbind服务:
# /etc/init.d/rpcbind start
启动nfs服务:
# /etc/init.d/nfs start
启动后三个关键进程:
mountd:挂载守护进程,负责客户端来源认证的进程
nfsd:文件读写
idmapd:id映射进程
使用下面的命令可以查看各进程监听的端口号
# rpcinfo -p localhost
由于mountd的监听端口号是随机的可能会占用其他服务的端口号,所以要使nfs的辅助进程mountd监听在固定的端口上,可以通过/etc/sysconfig/nfs文件进行配置。
三、挂在NFS目录(Client端)
客户端IP地址:10.10.10.101
# yum -y install nfs-utils
查看Server端共享哪个目录,允许那个ip访问
# showmount -e 192.168.1.201
-e:在nfs客户端执行,探查某主机所导出的nfs文件系统,使用格式"showmount -e Server_IP";
-d:在nfs服务器端执行,显示哪个导出的文件系统已经被至少一个客户挂载使用了;
-a:在nfs服务器端显示所有挂载会话。
创建挂载目录
# mkdir /web
挂载Server端web目录到本地
# mount -t nfs 192.168.1.201:/web /web
在挂载目录创建文件时由于操作web目录的是nfsnobody所以要把其他人的写权限打开。
四、NFS指定被关在目录写入文件的用户
编辑Server端的/etc/exports文件
/web 192.168.1.1/24(rw,sync,all_squash,anonuid=502,anongid=502)
重启nfs的服务或者# exportfs -arv
不去限制root的写法如下:
/web 192.168.1.1/24(rw,sync,no_root_squash)
去Client端重新挂载目录
如果使用# mount -t nfs 192.168.1.201:/web /web命令在touch文件的时候很慢,我们可以使用下面的命令指定nfs版本重新挂载一次就好啦:
# mount -t nfs -onolock,nfsvers=3 192.168.1.201:/web /web
是用此种方法后指定的用户id和组id使用的都是本地的id:例如Server端的组和用户id是fansik那么在Server端显示所属组和所有者就是fansik,但是如果Client的组和用户id是fanjinbao,那么Client端的文件的所属组和所有者就是fanjinbao
五、exportfs重新导出文件系统
在不重启nfs服务的情况下导出文件系统属性
选项:
-a:操作所有文件系统
-ra:重新导出所有文件系统
-ua:取消导出的所有文件系统
-v:显示详细信息