目录
频道首页
📚 存储和NFS共享
收藏
0
xy20118 最近修改于 2024-05-09 19:22:58

前言

带着问题思考 image

存储类型

在计算机系统中,存储是指用于存储数据和程序的设备或介质。 1.直连式存储:Direct-Attached Storage,简称DAS 存储和主机是直连的,家用电脑,服务和硬盘直连,存储和主机在一台机器上 使用场景:适合数据 量不大,对磁盘访问速度要求较高的中小企业 2.网络附加存储:Network-Attached Storage,简称NAS 存储在远程,文件系统也在远程,这块空间,你可以直接访问上面的文件,你只能看到文件,文件共享NFS FTP 等都是NAS 通俗可以理解为:通过网络公用一个设备 且设备的数据仅存一份,节省资源. 适用场景:适用于文本服务器,用来存储非结构化数据,虽然受限于以太网速度,但是部署灵活,成本低. 3.存储区域网络:Storage Area Network,简称SAN 有一定距离,主机和存储设备距离相对较远,只提供空间不提供文件系统,管理等其他软件服务,只相当于多了一块硬盘.比如gfs ceph等. 适用场景:大型应用或者数据库系统 成本高 复杂.

NFS简介

NFS(Network File System 网络文件服务)文件系统(软件)文件的权限,基于内核的网络文件系统,是一种基于 TCP/IP 传输的网络文件系统协议 通过使用 NFS 协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源 . nfs的端口号是不固定的,随机产生.依赖于 RPC(Remote Process Call,远端过程调用)机制,通过nfs协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源.

工作原理

image !!#ffff00 服务端!!-nfs开启后 服务段自己的rpc会注册相关信息 !!#ffff00 客户端!!-想要去连接服务器,需要知道端口号. 通过rpc获取服务端随机产生的端口号,进行访问.

NFS特点

  • 端口号随机产生
  • 节省本地存储空间
  • 使用tcp/ip协议传输文件

NFS相关软件

软件包:nfs-utils(包括服务器端和客户端) 相关软件包:rpcbind(必须) rpc端口号 1111 kenel 支持 :nfs.ko NFS服务主要进程:

  • rpc.nfsd 最主要的NFS进程,管理客户端是否可登录 基本的nfs守护进程
  • rpc.mountd 挂载和卸载NFS文件系统,包括权限管理
  • rpc.lockd 非必要,管理文件锁,避免同时写出错
  • rpc.statd 非必要,检查文件一致性,可修复文件 日志位置:日志:/var/lib/nfs/

NFS配置文件 格式

NFS配置文件: /etc/exports.d/*.exports

配置格式

!!#ffff00 nfs服务端!!

[root@xyy1 /]# vim /etc/exports

#共享目录         主机 (权限) 
/share             *            #*代表任意主机  
/share           192.168.64.16/24    #网段                               

image !!#ffff00 修改配置文件之后 重启服务。!!

[root@xyy1 /]# systemctl start rpcbind  #启动rpc
[root@xyy1 /]# systemctl restart nfs  #重启nfs
[root@xyy1 /]# systemctl status nfs   #查看服务nfs状态 
● nfs-server.service - NFS server and services
   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled)
   Active: active (exited) since Sun 2024-05-05 16:19:34 CST; 16s ago

!!#ffff00 exportfs 管理nfs!! !!#ffff00 exportfs -v!! 显示本机的共享情况 !!#ffff00 exportfs -r!! 重新加载nfs服务配置

[root@xyy1 /]# exportfs -vr  #重启nfs 会有提示 是否有错误
exportfs: No options for /share *: suggest *(sync) to avoid warning
exporting *:/share
[root@xyy1 /]# exportfs -v     #查看nsf的详细信息。
/share            <world>(ro,sync,wdelay,hide,no_subtree_check,sec=sys,secure,root_squash,no_all_squash)

NFS权限参数详解

| nfs共享参数 | 参数含义 | | ------ | ------ | | rw| 读写权限 (常用) | | ro| 只读权限 | | rootsquash(默认) | 当nfs客户端以超级管理员访问时,映射为nfs服务器的匿名用户 | | norootsquash |当nfs客户端以超级管理员访问时 映射为nfs服务器的管理员 | |allsquash | 无论nfs客户端以什么身份访问,nfs服务器端均映射为匿名用户(常用) | | noallsquash(默认) |无论nfs客户端 以什么账户访问,权限不改变 默认文件权限 | |sync | 数据同时写入硬盘和内存中 性能低 安全性高 | |async |现将数据保存内存,再写入硬盘 性能高,安全性低| | anonuid |可配合allsquash使用,指明匿名用户映射为特定用户UID(常用) | |anongid|可配合allsquash使用,指明匿名用户映射为特定用户GID

!!#ffff00 在生产环境中 权限建议统一管理 all_squash 调整uid统一 anonuid 使用setfacl进行限定 比较安全。!!

用法: setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...
-m,       --modify-acl 更改文件的访问控制列表
-M,       --modify-file=file 从文件读取访问控制列表条目更改
-x,       --remove=acl 根据文件中访问控制列表移除条目
-X,       --remove-file=file 从文件读取访问控制列表条目并删除
-b,       --remove-all 删除所有扩展访问控制列表条目
-k,       --remove-default 移除默认访问控制列表
          --set=acl 设定替换当前的文件访问控制列表
          --set-file=file 从文件中读取访问控制列表条目设定
          --mask 重新计算有效权限掩码
-n,       --no-mask 不重新计算有效权限掩码
-d,       --default 应用到默认访问控制列表的操作
-R,       --recursive 递归操作子目录
-L,       --logical 依照系统逻辑,跟随符号链接
-P,       --physical 依照自然逻辑,不跟随符号链接
          --restore=file 恢复访问控制列表,和“getfacl -R”作用相反
          --test 测试模式,并不真正修改访问控制列表属性
-v,       --version           显示版本并退出
-h,       --help              显示本帮助信息

NFS客户端

!!#ffff00 showmount -e !! 服务器IP 查看共享

[root@localhost ~]# showmount -e 192.168.64.16 
Export list for 192.168.64.16:
/share *

挂载NFS共享文件 临时挂载 !!#ffff00 mount 服务器IP:共享文件 挂载点!! 通俗理解: 共享文件share 是16服务器 / 目录下 就是把16服务器的 /dev/mapper/centos-root 挂载到了 客户端

[root@localhost mnt]# mount 192.168.64.16:/share  /mnt/test/ 
[root@localhost mnt]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   39G  3.4G   35G    9% /
devtmpfs                 897M     0  897M    0% /dev
tmpfs                    912M     0  912M    0% /dev/shm
tmpfs                    912M   18M  895M    2% /run
tmpfs                    912M     0  912M    0% /sys/fs/cgroup
/dev/sda1               1014M  179M  836M   18% /boot
/dev/mapper/centos-home   19G   33M   19G    1% /home
tmpfs                    183M  4.0K  183M    1% /run/user/42
tmpfs                    183M   28K  183M    1% /run/user/0
/dev/sr0                 4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
192.168.64.16:/share      10G  3.9G  6.2G   39% /mnt/test

永久挂载 编辑/etc/fstab
image

[root@localhost mnt]# vim /etc/fstab   #编辑永久挂载文件
[root@localhost mnt]# mount -a   #重新挂载 
[root@localhost mnt]# df -h  #查看挂载情况
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   39G  3.4G   35G    9% /
devtmpfs                 897M     0  897M    0% /dev
tmpfs                    912M     0  912M    0% /dev/shm
tmpfs                    912M   18M  895M    2% /run
tmpfs                    912M     0  912M    0% /sys/fs/cgroup
/dev/sda1               1014M  179M  836M   18% /boot
/dev/mapper/centos-home   19G   33M   19G    1% /home
tmpfs                    183M  4.0K  183M    1% /run/user/42
tmpfs                    183M   28K  183M    1% /run/user/0
/dev/sr0                 4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
192.168.64.16:/share      10G  3.9G  6.2G   39% /mnt/test

客!!#ffff00 户端测试 在该目录下创建文件 只读 无法创建!!

[root@localhost test]# touch 123   
touch: 无法创建"123": 只读文件系统 

NFS实际应用

场景: 在预览区点击图片重新编辑draw.io{data-type=drawio data-xml=%3CmxGraphModel%20dx=%22871%22%20dy=%22478%22%20grid=%221%22%20gridSize=%2210%22%20guides=%221%22%20tooltips=%221%22%20connect=%221%22%20arrows=%221%22%20fold=%221%22%20page=%221%22%20pageScale=%221%22%20pageWidth=%22827%22%20pageHeight=%221169%22%3E%3Croot%3E%3CmxCell%20id=%220%22/%3E%3CmxCell%20id=%221%22%20parent=%220%22/%3E%3CmxCell%20id=%226%22%20style=%22edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=1;exitY=0;entryX=0.5;entryY=1;jettySize=auto;orthogonalLoop=1;%22%20edge=%221%22%20parent=%221%22%20source=%222%22%20target=%223%22%3E%3CmxGeometry%20relative=%221%22%20as=%22geometry%22/%3E%3C/mxCell%3E%3CmxCell%20id=%227%22%20style=%22edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=1;exitY=1;entryX=0.5;entryY=0;jettySize=auto;orthogonalLoop=1;%22%20edge=%221%22%20parent=%221%22%20source=%222%22%20target=%224%22%3E%3CmxGeometry%20relative=%221%22%20as=%22geometry%22/%3E%3C/mxCell%3E%3CmxCell%20id=%228%22%20style=%22edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;jettySize=auto;orthogonalLoop=1;%22%20edge=%221%22%20parent=%221%22%20source=%222%22%20target=%225%22%3E%3CmxGeometry%20relative=%221%22%20as=%22geometry%22/%3E%3C/mxCell%3E%3CmxCell%20id=%222%22%20value=%22%E7%94%A8%E6%88%B7%22%20style=%22ellipse;whiteSpace=wrap;html=1;aspect=fixed;%22%20vertex=%221%22%20parent=%221%22%3E%3CmxGeometry%20x=%22150%22%20y=%22140%22%20width=%2280%22%20height=%2280%22%20as=%22geometry%22/%3E%3C/mxCell%3E%3CmxCell%20id=%223%22%20value=%22%E6%9C%8D%E5%8A%A1%E5%99%A81%22%20style=%22whiteSpace=wrap;html=1;aspect=fixed;%22%20vertex=%221%22%20parent=%221%22%3E%3CmxGeometry%20x=%22360%22%20y=%2240%22%20width=%2280%22%20height=%2280%22%20as=%22geometry%22/%3E%3C/mxCell%3E%3CmxCell%20id=%224%22%20value=%22%E6%9C%8D%E5%8A%A1%E5%99%A82%22%20style=%22whiteSpace=wrap;html=1;aspect=fixed;%22%20vertex=%221%22%20parent=%221%22%3E%3CmxGeometry%20x=%22360%22%20y=%22230%22%20width=%2280%22%20height=%2280%22%20as=%22geometry%22/%3E%3C/mxCell%3E%3CmxCell%20id=%225%22%20value=%22%E6%9C%8D%E5%8A%A1%E5%99%A83%22%20style=%22whiteSpace=wrap;html=1;aspect=fixed;%22%20vertex=%221%22%20parent=%221%22%3E%3CmxGeometry%20x=%22580%22%20y=%22140%22%20width=%2280%22%20height=%2280%22%20as=%22geometry%22/%3E%3C/mxCell%3E%3C/root%3E%3C/mxGraphModel%3E}

用户访问网页,如果每一台服务器上都部署一个页面,是比较浪费资源的 这个时候就可以使用nfs 单独拿出一台服务器3 作为共享存储 不论访问哪个服务器 显示的页面都是服务器3页面。

内容大纲
批注笔记
📚 存储和NFS共享
ArticleBot
z
z
z
z
主页
会议室
Git管理
文章
云文档
看板