NFS共享机制

NFS共享机制

1.为什么用共享存储
2.存储有哪些工具
3.共享存储应用场景有哪些
4.部署nfs共享存储
5.客户端尝试连接共享存储

什么是NFS?

NFS 是 Network File System 的缩写及网络文件系统。 NFS 主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录。
NFS 系统和 Windows 网络共享、网络驱动器类似, 只不过 windows 用于局域网, NFS 用于企业集群架构中, 如果是大型网站, 会用到更复杂的分布式文件系统 FastDFS,glusterfs,HDFS
那么我们为什么要使用数据存储共享服务?
1.实现多台服务器之间数据共享
2.实现多台服务器之间数据一致

NFS使用场景

NFS工作原理
1.用户进程访问 NFS 客户端,使用不同的函数对数据进行处理
2.NFS 客户端通过 TCP/IP 的方式传递给 NFS 服务端
3.NFS 服务端接收到请求后,会先调用 portmap 进程进行端口映射。
4.nfsd 进程用于判断 NFS 客户端是否拥有权限连接 NFS 服务端。
5.Rpc.mount 进程判断客户端是否有对应的权限进行验证。
6.idmap 进程实现用户映射和压缩
7.最后 NFS 服务端会将对应请求的函数转换为本地能识别的命令,传递至内核,由内核驱动硬件。
注意: rpc 是一个远程过程调用,那么使用 nfs 必须有 rpc 服务

前提条件

1.nfs依赖于RPC服务来传递消息
2.NFS服务启动的端口号是随机的,启动之后会向本地的RCP注册
3.先启动RPC服务,再启动NFS服务
4.NFS和RPC之间的通讯是他们自己内部完成的,对于用户来说无感知
5.NFS客户端和服务端不会直接沟通,必须通过RPC服务传递消息
6.防火墙要开放RPC服务的端口

注意

1.防火墙关闭
2.selinux关闭

NFS服务部署

安装NFS

yum install nfs-utils rpcbind -y

参数配置

nfs 服务程序的配置文件为/etc/exports,需要严格按照共享目录的路径 允许访问的 NFS 客户端(共享权限参数)格式书写,定义要共享的目录与相应的权限,具体书写方式如下图所示


https://upload-images.jianshu.io/upload_images/14248468-78e854e15c61eb10.png
rw 读写权限
ro 只读权限
root_squash
当 NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的匿名用户(不常用)
no_root_squash
当 NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的 root 管理员(不常用)
all_squash
无论 NFS 客户端使用什么账户访问,均映射为 NFS 服务器的匿名用户(常用)
no_all_squash
无论 NFS 客户端使用什么账户访问,都不进行压缩
sync
同时将数据写入到内存与硬盘中,保证不丢失数据
async
优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据
anonuid
配置 all_squash 使用,指定 NFS 的用户 UID,必须存在系统

anongid
配置 all_squash 使用,指定 NFS 的用户 UID,必须存在系统

配置NFS服务端

root@nfs ~#: vim /etc/exports 
/video 172.16.1.0/24(rw,sync,all_squash)

创建数据目录 并授权(否则权限不足)

mkdir -p /video
chown nfsnobody:nfsnobody /video

启动服务

systemctl start rpcbind
systemctl start nfs-server.service

检查命令

root@nfs ~#: showmount -e 
/video 172.16.1.0/24

加入开机自启
在使用 NFS 服务进行文件共享之前,需要使用 RPC(Remote Procedure Call 远程过程调用服务将 NFS 服务器的IP 地址和端口号信息发送给客户端。因此,在启动 NFS 服务之前,需要先重启并启用 rpcbind 服务程序,同时都加入开机自启动

systemctl enable rpcbind nfs-server
systemctl restart rpcbind nfs-server

客户端挂载

安装

yum install nfs-utils rpcbind -y

安装完成后只需要启动rpcbind,不需要启动nfs

systemctl restart rpcbind

使用showmount命令查看nfs共享信息查询 NFS 服务器的远程共享信息,其输出格式为“共享的目录名称 允许使用客户端地址

root@backup ~#: showmount -e 172.16.1.31
/data 172.16.1.0/24 

客户端挂载
在 NFS 客户端创建一个挂载目录, 使用 mount 命令并结合-t 参数, 指定要挂载的文件系统的类型, 并在命令后面写上服务器的 IP 地址, 以及服务器上的共享目录, 最后需要写上要挂载到本地系统(客户端)的目录

root@backup ~#: mkdir /video -p
root@backup ~#: mount -t nfs 172.16.1.31:/video /video

查看是否挂载成功

root@backup ~#: df -h
文件系统           容量  已用  可用 已用% 挂载点
/dev/sda3           18G  1.9G   17G   11% /
devtmpfs           480M     0  480M    0% /dev
tmpfs              489M     0  489M    0% /dev/shm
tmpfs              489M   32M  458M    7% /run
tmpfs              489M     0  489M    0% /sys/fs/cgroupvideo
/dev/sda1         1014M  110M  905M   11% /boot
tmpfs               98M     0   98M    0% /run/user/0
172.16.1.31:/video   18G  1.9G   17G   11% /video

测试数据

root@backup ~#: echo "hello world" > /video/oldboy.txt
root@backup ~#: cat /video/oldboy.txt
hello world

写入磁盘 开机自动挂载

root@backup ~#: vim /etc/fstab
root@backup ~#: tail -1 /etc/fstab
172.16.1.31:/video              /video              nfs     defaults 
root@backup ~#: mount -a
root@backup ~#: df -h
文件系统           容量  已用  可用 已用% 挂载点
/dev/sda3           18G  1.9G   17G   11% /
devtmpfs           480M     0  480M    0% /dev
tmpfs              489M     0  489M    0% /dev/shm
tmpfs              489M   32M  458M    7% /run
tmpfs              489M     0  489M    0% /sys/fs/cgroupvideo
/dev/sda1         1014M  110M  905M   11% /boot
tmpfs               98M     0   98M    0% /run/user/0
172.16.1.31:/video   18G  1.9G   17G   11% /video 

卸载命令:注意!卸载的时候如果提示”umount.nfs: /nfsdir: device is busy”先切换到其他目录再卸载

# 卸载
umount /video/
# 强制卸载
umount -rl /video/

验证NSF权限

验证ro权限
服务端配置

root@nfs ~#: cat /etc/exports
/data 172.16.1.0/24(ro,sync,all_squash)
root@nfs ~#: systemctl restart nfs-server.service
root@nfs ~#: showmount -e 172.16.1.31
/data 172.16.1.0/24

客户端挂载

root@backup ~#: mount -t nfs 172.16.1.31:/video /video
root@backup ~#: df -h
文件系统           容量  已用  可用 已用% 挂载点
/dev/sda3           18G  1.9G   17G   11% /
devtmpfs           480M     0  480M    0% /dev
tmpfs              489M     0  489M    0% /dev/shm
tmpfs              489M   32M  458M    7% /run
tmpfs              489M     0  489M    0% /sys/fs/cgroupvideo
/dev/sda1         1014M  110M  905M   11% /boot
tmpfs               98M     0   98M    0% /run/user/0
172.16.1.31:/video   18G  1.9G   17G   11% /video

测试,写入

root@backup ~#: cat /video/oldboy.txt
hello world
root@backup ~#: echo "asrfsg" /video/oldboy.txt
-bash: /video/oldboy.txt: 权限不够

验证all_squash、 anonuid、 anongid 权限

服务端配置

root@nfs ~#: cat /etc/exports 
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

服务端创建用户及授权:

root@nfs ~#: useradd -s /sbin/nologin -M -u 666 -g 666 www
root@nfs ~#: id www
uid=666(www) gid=666(www) 组=666(www)

重启服务

systemctl restart nfs-server.service

更改目录授权

root@nfs01 ~#: chown -R www:www /video/
root@nfs01 ~#: ls -ld /video/
drwxr-xr-x 2 www www 35 7月  17 19:50 /video/

客户端操作

root@backup ~#: mount -t nfs 172.16.1.31:/video /video
root@backup ~#: ls -ld /video/
drwxr-xr-x 2 666 666 35 7月  17 19:50 /video/
root@backup ~#: ll /video/
总用量 4
-rw-r--r-- 1 666 666 0 7月  17 19:50 123
-rw-r--r-- 1 666 666 9 7月  17 19:46 oldboy.txt
root@backup ~#: echo "hello world" > /video/oldboy.txt
root@backup ~#: cat /video/oldboy.txt
hello world

我们会发现依然可以写入,但是为了避免这种情况发生,建议客户端也创建相同uid gid的用户

root@backup ~#: groupadd -g 666 www
root@backup ~#: useradd -s /sbin/nologin -M -u 666 -g 666 www
root@backup ~#: id www
uid=666(www) gid=666(www) 组=666(www)
root@backup ~#: ls -ld /video/
drwxr-xr-x 2 www www 35 7月  17 19:50 /video/
root@backup ~#: ll /video/    
总用量 4
-rw-r--r-- 1 www www 10 7月  17 21:31 oldboy.txt
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容