在文章的开始,希望大家关注公众号Lind-Learn,在这里会分享各类计算机技术的知识。
1. NFS介绍
- NFS(Network File System)即网络文件系统,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的问就按,就像访问本地文件一样
- NFS的好处:节省本地存储空间,将常用的数据放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用。
- NFS体系有两个主要部分:
- NFS服务端机器:通过NFS协议将文件共享到网络。
- NFS 客户端机器:通过网络挂载NFS共享目录到本地。
- 应用场景
- 共享存储服务器:图片服务器、视频服务器等
- 家目录漫游:域用户家目录服务器
- 文件服务器:内容文件存储服务器
2. NFS部署
ⅠNFS安装
[root@Lind ~]# yum -y install nfs-utils
Ⅱ NFS开机启动
[root@Lind ~]# 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.
Ⅲ NFS启动
#由于服务间的依赖关系,启动NFS之前先要确保rpcbind启动
[root@Lind ~]# systemctl is-active rpcbind
active
[root@Lind ~]# systemctl start nfs
Ⅳ 验证启动
[root@Lind ~]# systemctl start nfs
active
3. NFS共享
Ⅰ相关文件
共享文件,将需要共享的文件都定义在当中
/etc/exports
共享格式为:
共享目录绝对路径 授权访问IP或网段(权限1,权限2)
示例:/test 192.168.11.0/24(ro)
Ⅱ 共享权限
ro 只读访问
rw 读写访问
sync 所有数据在请求时写入共享,内存中的数据会实时写入磁盘,确保数据一致性
async NFS在写入数据前可以响应请求
secure NFS通过1024一下的安全TCP/IP端口发送
insecure NFS通过1024以上的端口发送
wdelay 如果多个用户要写入NFS目录,则归组写入(默认)
no_wdelar 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置
hide 在NFS共享目录中不共享其子目录
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
Ⅲ exporfts命令
epxortfs 管理NFS共享文件系统列表
-a 打开或取消所有目录共享
-o options,指定该一列共享选项
-i 忽略/etx/exports文件,从而只使用默认和命令行指定的选项
-r 重新共享所有目录。它使/var/lib/nfs/xtab和/etc/exports同步。它将/etc/exports中已删除的条目从/var/lib/nfs/xtab中删除,将内核共享表中任何不再有效的条目一处
-u 取消一个或多个目录的共享
-f 在"新"模式下,刷新内核共享表之外的任何东西,任何活动的客户程序将在它们的下次请求中得到mountd添加的新的共享条目
-v 输出像下次信息。当共享或者取消共享时,显示在做什么。显示当前共享列表的时候,同时显示共享的选项。
4. NFS案例
新建目录/public
以只读的方式共享目录/public 同时只能被192.168.11.0域中的系统访问
新建目录/protected
以读写的方式共享目录/protected能被192.168.11.0域中的系统访问
# 创建目录
[root@Lind /]# mkdir /public
[root@Lind /]# mkdir /protected
# 由于客户端挂载用户是nfsnobody,本题要求客户端挂载后可读写,我们是用root用户建立的目录,所以要给其他用户7的权限
[root@Lind /]# chmod 757 /protected/
# 写入相关文件
[root@Lind /]# vim /etc/exports
/public 192.168.11.0/24(ro)
/protected 192.168.11.0/24(rw,sync)
# 重启并查看相关共享
[root@Lind /]# exportfs -r
[root@Lind /]# exportfs -v
/public 192.168.11.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash)
/protected 192.167.11.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
# (另一台机器)挂载
[root@Lind mnt]# mkdir public
[root@Lind mnt]# mkdir protected
[root@Lind mnt]# mount -t nfs 192.168.11.20:/public /mnt/public
[root@Lind mnt]# mount -t nfs 192.168.11.20:/protected /mnt/protected