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

linux nfs不在同一个网络,NFS共享机制相关推荐

  1. linux 网络部分,在 Linux(或异构)网络上共享计算机,第 1 部分

    级别: 初级 David Mertz,博士 (mertz@gnosis.cx), 程序员和作家, Gnosis Software,Inc. 2001 年 12 月 01 日 在 这两篇文章的第一篇中, ...

  2. linux 连接两个异构网,如何在Linux(或异构)网络上共享计算机?

    在有关共享计算机的这两篇文章中的第 1 部分中,我描述了我的异构本地网络以及如何使用它来比较和测试不同操作系统和体系结构上的应用程序.有几种技术使一台工作站上的用户可以运行位于另一台工作站上的应用程序 ...

  3. linux 异构 计算_在Linux(或异构)网络上共享计算机,第1部分

    linux 异构 计算 为了有效地测试和编写各种软件程序,我在本地网络上保留了相当多的计算机. 这些机器运行各种操作系统,并使用各种硬件配置. 有时我正在评估各种平台上的工具: 其他时候我正在测试和调 ...

  4. Linux实战教学笔记22:企业级NFS网络文件共享服务

    第二十二节 企业级NFS网络文件共享服务 标签(空格分隔): Linux实战教学笔记-陈思齐 ---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品,允许转载 ...

  5. NFS - MIPS架构下构建NFS共享目录服务

    文章目录 概 Lin 和 Win 共享文件 需求 原理 环境信息 检查依赖 如何找mips的rpm包 NFS服务端 上传RPM安装包 安装RPCBIND和NFSSERVER 创建共享目录 配置文件/e ...

  6. linux的常用操作——lftp、nfs、ssh和scp

    1 lftp的介绍 1.1 lftp的作用 \qquad一个ftp客户端工具,可以上传或者下载文件. 1.2 lftp的安装 \qquadUbuntu下:sudo apt-get install lf ...

  7. 嵌入式Linux交叉开发环境建立-NFS【ZT】

    本文转载于 ChineseBOY的专栏(CSDN) 一.系统配置    主机:ubuntu8.04LTS桌面版 开发板:友善之臂QQ2440V3    主机IP:192.168.1.10  子网掩码: ...

  8. 嵌入式linux开发,开机NFS文件系统启动,使用nfs挂载根文件系统

    NFS( Network File System)即网络文件系统,是 FreeBSD 支持的文件系统中的一种,它允许网络中的计算机之间通过 TCP/IP 网络共享资源.在 NFS 的应用中, NFS ...

  9. linux mount 默认端口,CentOS7下NFS服务安装及配置固定端口

    系统环境:CentOS Linux release 7.4.1708 (Core) 3.10.0-693.el7.x86_64 软件版本:nfs-utils-1.3.0-0.48.el7_4.x86_ ...

  10. Linux就该这么学--Samba NFS的配置

    SAMBA文件共享服务 Samba服务程序现在已经成为在Linux系统与Windows系统之间共享文件的选择 1.安装ansible [root@myserver ~]# yum install -y ...

最新文章

  1. 全球及中国新能源汽车产业应用现状与运营前景规划报告2022版
  2. 牛客多校6 - Binary Vector(组合数学+推公式)
  3. linux检查运行程序文件,LINUX定时检查程序运行状态
  4. 送你两个神器,关系数据库数据入湖轻松应对
  5. 智能一代云平台(九):EclipseLink返回Object转为实体的分析
  6. 根据中心点、半径长度和角度画点
  7. 优雅地关闭kubernetes中的nginx
  8. Atitit 提升用户体验 生物识别 与登录 身份验证
  9. The tough time set
  10. 笔记本安装win10+ubuntu双系统超详细教程
  11. R语言在Ubuntu环境下添加times new roman字体
  12. 卷积、线性时不变系统、因果系统
  13. 什么是sku和spu
  14. Q-learning学习的一个小例子
  15. 如何做一个基于JAVA二手交易网站系统毕业设计毕设作品(springboot框架)
  16. 软件架构入门及分类——云架构
  17. ant property总结
  18. 字体库(阿里巴巴矢量图标库)使用两三坑
  19. zabbix-proxy分布式监控站点
  20. 计算机中隐身功能,隐形电脑

热门文章

  1. ASCII、Unicode、UTF-8 和 Base64 等编码
  2. 神舟笔记本电脑win10系统不能调节亮度问题
  3. win10如何查看开机启动项
  4. Visio方向键无法移动对象的解决办法[笔记本版]
  5. 为什么打开服务器word文档是只读,以只读方式打开Word文档的方法
  6. 章文嵩坐镇淘宝双11流量作战室
  7. 章文嵩:开放与高可用是阿里云角力海外市场的关键
  8. 趣图:说一说你不知道的世界
  9. 使用 Visio 绘制卷积示意图
  10. aid learning安装应用_极致安卓—Termux/Aid Learning安装宇宙最强VS Code