NFS
1、依赖关系
需要内核编译了NFS模块
portmap 软件包,nfs服务启动依赖rpc服务,该服务通过portmap安装
2、安装nfs-utils软件包
# yum install nfs-utils
3、启动nfs服务
nfs服务启动依赖于RPC服务,因此在启动nfs服务前必须启动portmap
# service portmap start
# service nfs start
nfs服务会生成以下三个进程:
nfsd:nfs服务守护进程,监听2049/tcp和2049/udp
rpc.mountd:处理客户端的挂载请求并初始化,基于IP认证是否允许挂载,监听端口半随机由RPC服务分配
rpc.quotad:nfs配额相关,监听端口半随机由RPC服务分配
另外还有两个进程由nfslock脚本控制:
rpc.statd:通知客户端持有锁文件
lockd:处理客户端的锁请求
4、编辑配置文件
nfs服务有两个配置文件:
/etc/sysconfig/nfs //定义各个服务监听的端口,这里可以指定rpc.mountd等监听半随机端口的进程监听指定的固定端口
/etc/exports
//定义共享目录,其格式如下:
共享目录 客户端(共享选项)
共享目录:为本机目录的绝对路径,如果路径中包含空格用“”引起来
客户端:有以下几种表示方法:
FQND:完全合格域名
*.example.com:某个域
net:某个网段,例如:172.16.0.0/16
host:某单个主机,例如:172.16.100.1
共享选项:有以下几种选项:
ro:只读共享,默认选项
rw:读写共享
async:异步写入,默认选项
sync:同步写入
root_squash:当客户端使用root访问时映射为匿名用户,默认选项
no_root_squash:与上相反,非常不安全,不建议启用
all_squash:客户端的所有用户访问时都映射为匿名用户
5、相关命令
exportfs命令:
exportfs -rav //重新导出所有共享文件
exportfs -uav //取消导出所有共享文件
showmount命令:
-a :在服务端使用,查看本地主机目录被谁挂载了
-d :在服务器端使用,仅显示哪个目录被挂载了
-e :在客户端使用跟上server IP,查看共享内容
客户端挂载命令:
mount -t nfs 172.16.100.1:/data /mnt
6、实例演示
1>在服务端192.168.56.102使用NFS共享/mysql/data目录,只有192.168.56.103才能访问,且只有student用户(uid为500)才能对该目录进行写操作。
服务端操作:
# vim /etc/exports //编辑该文件添加如下行
/mysql/data 192.168.56.103(rw)
# chmod 755 /mysql/data
//设置该目录权限为只有属主可以写
# chown 500 /mysql/data
//设置uid为500的用户为该目录属主
# exportfs -rav
//导出共享文件
客户端操作:
# mount -t nfs 192.168.56.102:/mysql/data /mnt
//挂载至/mnt
2>在服务端192.168.56.102使用NFS共享/mysql/data目录,只有192.168.56.0/24网段可以访问权限为只读,只有192.168.56.103可以写。
服务端操作:
# vim /etc/exports //编译该文件添加如下行
/mysql/data 192.168.56.103(rw)
/mysql/data 192.168.56.0/24(ro)
# chmod o+w /mysql/data //设置其他用户可写
# exportfs -rav
//重新导出共享文件
客户端操作:
# mount -t nfs 192.168.0.102:/mysql/data /mnt
//挂载至/mnt