NFS介绍
- NFS ( Network File System ) 即网络文件系统 ,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样
- NFS的好处:节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问 ,那么本地终端将可以减少自身存储空间的使用
- NFS体系有两个主要部分:
- NFS服务端机器 :通过NFS协议将文件共享到网络
- NFS客户端机器 :通过网络挂载NFS共享目录到本地
- 应用场景
- 共享存储服务器:图片服务器、视频服务器等
- 家目录漫游:域用户家目录服务器
- 文件服务器:内容文件存储服务器
NFS安装
a、nfs安装
yum -y install nfs-utils
b、 nfs开机启动
systemctl enable nfs-server
// Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
c、 nfs启动
由于服务间的依赖关系,启动NFS之前先要确保rpcbind启动
systemctl is-active rpcbind
active
systemctl start nfs
d、 验证启动
systemctl is-active nfs
active
NFS共享
- /etc/exports共享文件(这个文件中定义需要将哪个文件进行共享)
- 共享格式为 :
- 共享目录绝对路径,授权访问的IP或网段(权限1,权限2)
- 权限说明
- ro 只读访问
- rw 读写访间
- sync 所有数据在请求时写入共享
- async NFS在写入数据前可以相应请求
- secure NFS通过1024以下的安全TCP/IP端口发送
- insecure NFS通过1024以上的端口发送
- wdelay 如果多个用户要写入NFS目录,则归组写入(默认)
- no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
- hide 在NF S共享目录中不共享其子目录
- 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用户具有根目录的完全管理访问权限
- anonuid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的UID
- anongid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的GID
- exportfs-:管理NFS共享文件系统列表
- -a 打开或取消所有目录共享
- -o options,..指定一列共享选项 ,与 exports(5) 中讲到的类似
- -i 忽略 /etc/exports 文件,从而只使用默认的和命令行指定的选项
- -r 重新共享所有目录。 它使 /var/lib/nfs/xtab 和 /etc/exports 同步。 它将 /etc/exports 中已删除的条目从 /var/lib/nfs/xtab 中删除,将内核共享表中任何不再有效的条目移除
- -u 取消一个或多个目录的共享
- -f 在“新”模式下,刷新内核共享表之外的任何东西,任何活动的客户程序将在它们的下次请求中得到mountd 添加的新的共享条目
- -v 输出详细信息。当共享或者取消共享时,显示在做什么,显示当前共享列表的时候,同时显示共享的选项
NFS客户端挂载
案例
- 新建目录/public:以只读的方式共享目录 /public 同时只能被 192.168.10.0 域中的系统访问
- 新建目录/protected:以读写的方式共享目录 /protected 能被 192.168.10.0 域中的系统访问
创建共享目录
mkdir /public
mkdir /protected
由于客户端挂载用户是nfsnobody ,本题要求客户端挂载后可读写,我们是用root 用户建立的目录,所以要给其他人7的权限
chmod 757 /protected/
通过/etc/exports文件定义共享目录
cat /etc/exports
在/etc/export中写入
/public 192.168.10.0/24(ro)
/protected 192.168.10.0/24(rw)
// 在另一台slave机器上进行操作,确保和NFS服务器同一网段
mkdir /mnt/public
mkdir /mnt/protected
mount -t nfs 192.168.10.110:/public /mnt/public
mount -t nfs 192.168. 10.110:/protected /mnt/protected/