NFS 和 RPC

NFS(Network File System)允许在多个用户之间共享网络文件系统,服务器端共享的目录在客户端就好像自己的磁盘分区和目录一样

NFS 属于服务器/客户端传输方式,其依赖于 RPC/XDR(将数据类型转换为服务器架构)协议,需要安装这两个软件。

1、nfs-utils:NFS的主程序,包含rpc.nfsd  rpc.mount两个deamons

2、portmap:RPC主程序,可以将NFS视为RPC下的一个子程序

服务器端共享的目录在客户端就好像自己的磁盘分区和目录一样

-----------------------------------------------
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

-----------------------------------------------



https://baike.baidu.com/item/%E7%BD%91%E7%BB%9C%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F/9719420?fromtitle=NFS&fromid=812203&fr=aladdin

https://blog.51cto.com/yooke/931987

https://blog.csdn.net/sdgihshdv/article/details/79491680

http://blog.chinaunix.net/uid-31524171-id-5795063.html

卸载停止 NFS

注释掉开机挂载的盘
vim /etc/fstab
ip:/home /home/netdisk nfs defaults 0 0
查看挂载的盘
mount
卸载挂载的盘
umount /home/netdisk
停止NFC
service portmap stop
service nfs stop
如果有必要卸载 nfs-utils
yum -y autoremove nfs-utils

发表评论