NFS网络文件共享服务
NFS(network file system)网络文件系统
可以把对方主机资源直接挂载到自己电脑上,比FTP更加方便
明文传输 没有认证机制 安全性很差 只在局域网使用
依赖RPC(远程过程调用)
需要安装nfs-utils(提供NFS服务),rpcbind(提供RPC服务)软件包
系统服务:nfs、rpcbind
共享配置文件:/etc/exports
Windows 共享存储服务 CIFS
Linux 共享存储服务 NFS存储类型
块存储: 硬盘 LVM RAID
文件存储: NFS
对象存储: OSSNFS服务流程
- 服务器将/dev/sdb1磁盘进行分区并格式化,挂载到/data目录(根据需求自定义)
- 服务器开启rpcbind远程调用服务
- 服务器开启NFS服务,注册到rpcbind上。NFS通过/etc/exports配置文件将文件共享
- 客户端启动rpcbind服务,并挂载到本地目录(mount -t nfs)
保证RPCbind先启动 NFS再启动!
配置NFS服务
1)安装软件,启动服务
rpm -q nfs-utils rpcbind #查看是否安装 yum install -y nfs-utils rpcbind #服务端 yum install -y rpcbind #客户端
保证RPCbind先启动 NFS再启动!
##########服务端########## systemctl start rpcbind systemctl start nfs # 保证RPCbind先启动 NFS再启动! systemctl enable rpcbind systemctl enable nfs #设置开机自启 ##########客户端########## systemctl start rpcbind
服务端口 nfs (2049) rpcbind (111) [面试题]
2)准备共享目录
先准备硬盘/LVM/RAID,格式化后挂载到需要共享的目录(比如/share),并设置相应的权限
mount -t xfs /dev/sdb1 /share
chmod 777 /share #如果无需客户端写入文件则省略
3)修改共享配置文件
vim /etc/exports 共享目录 客户端地址/网段(共享参数选项,...) /share 192.168.80.0/24(rw) #客户端挂载默认使用匿名方式 #root默认降权到nobody匿名(other其他用户权限) #无法进行目录创建等操作(视文件夹设定的权限而定) /share2 192.168.80.0/24(rw,no_root_squash) #加上no_root_squash,客户机root不会降权 /share1 192.168.80.0/24(ro) #与上方软件级别的设置不同 这里直接使用系统级别的read only #会显示无法创建 只读文件系统 /share4 192.168.80.102(rw) 192.168.80.103(ro) #102主机可读可写 103主机只能读取 /share3 192.168.80.0/24(rw,all_squash,anonuid=1001,anongid=1001) #客户端访问用户全部降价为服务端UID 1001的用户
共享参数选项 rw 读写 ro 只读 sync 数据同步写入内存与硬盘(不先写入缓存在写入硬盘,更安全,但是损耗IO) async 数据先保存在内存缓冲区,必要才写入磁盘(写入性能高,但是不安全) no_root_squash 客户机用root访问时赋予本地root权限(默认为root_squash) root_squash 客户机用root访问时降级为匿名用户 all_squash 客户机所有访问用户都降级为匿名用户匿名组 anonuid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的UID anongid=xxx 指定NFS服务器/etc/group文件中匿名用户的GID #anonuid=1001 1001为zhangsan的UID 匿名用户默认被降权为zhangsan用户 #anonuid=1001,anongid=1001 1001为zhangsan的UID与GID 匿名用户默认被降权为zhangsan用户 no_subtree_check 即使输出的目录是一个子目录 NFS服务器也不检查父目录的权限,可以提高效率
服务端修改配置文件,重启服务systemctl restart nfs.会需要一定时间设置。
客户端仍然在挂载状态可能会卡死,若需要马上刷新可以客户端umount解挂再挂载
4)发布共享目录
systemctl restart nfs #或者 exportfs -avr #在线发布,可以避免服务端重启服务后客户端的卡死 showmount -e #查看共享目录情况
服务端需要关闭防火墙!
5)客户端挂载使用
showmount -e 192.168.80.101 #服务端IP #查看共享目录情况 mkdir /data mount -t nfs 192.168.80.101:/share /data #可以不用[-t nfs]会自动识别 #mount [-t nfs] 服务端IP:共享目录 本地挂载点
vim /etc/fstab #写入fstab实现开机挂载 #服务端IP:共享目录 本地挂载点 nfs defaults,_netdev 0 0 #如果是通过网络必须加_netdev 192.168.80.101:/share /data nfs defaults,_netdev 0 0
若服务端nfs服务停止或重启导致客户端挂载目录出现卡死现象,umount /share无法解挂
umount -lf 强制解挂