【UOS运维学习笔记】- NFS网络文件系统

一、简介

1、NFS 的详解
NFS 是 Network File System 的缩写,中文意思是网络文件系统。它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录。NFS 客户端(一般为应用服务器,例如 web)可以通过挂载(mount)的方式将 NFS 服务器端共享的数据目录挂载到NFS 客户端本地系统中(就是某一个挂载点下)。从客户端本地看,NFS 服务器端共享的目录就好像是客户端自己的磁盘分区或者目录一样,而实际上却是远端的 NFS 服务器的目录。

NFS 网络文件系统很像 Windows 系统的网络共享,安全功能,网络驱动器影射,这也和 Linux系统里的 samba 服务类似。只不过一般情况下,Windows 网络共享服务或 samba 服务用于办公局域网共享,而互联网中小型网站集群架构后端常用 NFS 进行数据共享这里通过图解给大家展示以下集群架构需要共享存储服务的理由。例如:A 用户上传图片到Web1 服务器,然后让 B 用户访问这张图片,结果 B 用户访问的请求分发到了 Web2,因为Web2 上没有这张图片,这就导致它无法看到 A 用户上传的图片,如果此时有一个共享存储,A 用户上传图片的请求无论是分发到 Web1 还是 Web2 上,最终都会存储到共享存储上,而在 B 用户访问图片时,无论请求分发到 Web1 还是 Web2 上,最终也都会去共享存储上找,这样就可以访问到需要的资源了。这个共享存储的位置可以通过开源软件和商业硬件实现,互联网中小型集群架构会用普通 PC 服务器配置 NFS 网络文件系统实现。

2、什么是 RPC
虽然 NFS 可以在网络中进行文件共享,但 NFS 在设计时并没有提供数据传输的功能。需要借助 RPC(Remote Procedure Calls,远程过程调用)。RPC 定义了一种进程间通过网络进行交互通信的机制,它允许客户端进程通过网络向远程服务进程请求服务,而不需要了解服务器底层的通信协议详细信息。
RPC 和 NFS 的关系:NFS 是一个文件系统,而 RPC 是负责负责信息的传输。
当一个 RPC 连接建立开始阶段,客户端建立过程调用,将调用参数发送到远程服务器进程,并等待相应。请求到达时,服务器通过客户端请求的服务,调用指定的程序。并将结果返回客户端。当 RPC 调用结束,客户端程序将继续进行下一步的通信操作。
rpcinfo -p 192.168.100.1 #每次重启 nfs 服务,端口会随机变化

NFS 依赖 RPC 与外部通信,为保证 NFS 服务正常工作,其需要在 RPC 注册相应的服务端口信息,这样客户端向服务器的 RPC 提交访问某个服务的请求时,服务器才能够正确作出相应。
注册 NFS 服务时,需要先开启 RPC,才能保证 NFS 注册成功。并且如果 RPC 服务重新启动,其保存的信息将丢失,需重新启动 NFS 服务以注册端口信息,否则客户端将无法访问 NFS服务器。
nfs-kernel-server NFS 服务端
rpcbind 支持安全 NFS RPC 服务的连接

就拿房屋中介打个比喻吧:假设我们要找房子,这里的我们就相当于 NFS 客户端,中介介绍房子,中介就相当于 RPC 服务,房子所有者房东就相当于 NFS 服务,租房的人找房子,就要找中介,中介要预先存有房子主人房东的信息,才能将房源信息告诉租房的人。
3、NFS 系统守护进程
nfsd: 它是基本的 NFS 守护进程,主要功能是管理客户端是否能够登录服务器;
mountd:它是 RPC 安装守护进程,主要功能是管理 NFS 的文件系统。当客户端顺利通过nfsd 登录 NFS 服务器后,在使用 NFS 服务所提供的文件前,还必须通过文件使用权限的验证。它会读取 NFS 的配置文件/etc/exports 来对比客户端权限。
rpcbind: 主要功能是进行端口映射工作。当客户端尝试连接并使用 RPC 服务器提供的服务(如 NFS 服务)时,rpcbind 会将所管理的与服务对应的端口提供给客户端,从而使客户可以通过该端口向服务器请求服务。
4、客户端常用的指定方式
指定 ip 地址的主机: 192.168..
指定子网中的所有主机: 192.168../24 192.168../255.255.255.0
指定域名的主机: nfs.uos.com
指定域中的所有主机: *.uos.com
所有主机: *

选项:
选项用来设置输出目录的访问权限、用户映射等。
NFS 主要有 3 类选项:访问权限选项
设置输出目录只读:ro
设置输出目录读写:rw
用户映射选项
all_squash: 将远程访问的所有普通用户及所属组都映射为匿名用户或用户组
(nfsnobody);
no_all_squash: 与 all_squash 取反(默认设置);
root_squash: 将 root 用户及所属组都映射为匿名用户或用户组(默认设置);
no_root_squash:与 rootsquash 取反;
anonuid=xxx: 将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);
anongid=xxx: 将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组
账户为本地用户组账户(GID=xxx);

其它选项
secure: 限制客户端只能从小于 1024 的 tcp/ip 端口连接 nfs 服务器(默认设置);
insecure: 允许客户端从大于 1024 的 tcp/ip 端口连接服务器;
sync: 将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
async: 将数据先保存在内存缓冲区中,必要时才写入磁盘;
wdelay: 检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);
no_wdelay: 若有写操作则立即执行,应与 sync 配合使用;
subtree: 若输出目录是一个子目录,则 nfs 服务器将检查其父目录的权限(默认设置);
no_subtree: 即使输出目录是一个子目录,nfs 服务器也不检查其父目录的权限,这样可以提高效率;

第二章 挂载 NFS

(1)普通挂载
在 uos1 上面操作
apt -y install rpcbind nfs-kernel-server rpcbind
mkdir /uos1 /uos2 /uos3
touch /uos1/file{1..9}
touch /uos2/file{10..19}
touch /uos3/file{100..109}
useradd -m nfsuser #nfsuser 对应 uid 为 1001
chmod o+w /uos1
vim /etc/exports
/uos1 *(rw,anonuid=1001,anongid=1001,sync,no_wdelay) #所有远程连接用户获得nfsuser 身份
/uos2 192.168.200.0/24(ro)
/uos3 192.168.200.2(rw,no_root_squash,sync,no_wdelay) #不压制 root 权限
systemctl restart nfs-kernel-server.service
systemctl restart rpcbind

在 uos2 客户端上面操作
sudo apt -y install nfs-common
sudo showmount -e 192.168.200.201
Export list for 192.168.200.201:
/share1 *
/share2 192.168.200.0/24
/share3 192.168.200.2
mkdir /mnt/nfs1 /mnt/nfs2 /mnt/nfs3
mount 192.168.200.201:/uos1 /mnt/nfs1
mount 192.168.200.201:/uos2 /mnt/nfs2
mount 192.168.200.201:/uos3 /mnt/nfs3
touch /mnt/nfs1/uostest #返回 uos1 上查看文件属主为 nfsuser
touch /mnt/nfs2/uostest #不能写
touch /mnt/nfs3/uostest #返回 uos1 上查看文件属主为 root


(2)fstab 开机自动挂载

umount /mnt/nfs1
vim /etc/fstab
192.168.200.201:/uos1 /mnt/nfs1 nfs defaults 0 0
mount -a


(3)aotufs 自动挂载

apt install -y autofs
systemctl start autofs
vim /etc/auto.master

/mnt/nfs2 /etc/auto.nfs2
cp /etc/auto.misc /etc/auto.nfs2
vim /etc/auto.nfs2

nfs2 -fstype=nfs 192.168.200.201:/share2
systemctl restart autofs.service
cd /mnt/nfs2
ls -l

关于软件资源类分享的免责声明:
本站为个人博客非盈利性站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并未做任何贩卖软件信息等行为,不存在任何商业目的及用途。
根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。"
您需知晓本站所有分享内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任。
如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇