当前位置: 首页 > article >正文

【Linux网络】典型NAS存储方式:NFS网络共享存储服务

一、关于存储的分类

二、NFS的介绍

nfs的相关介绍:

1、原理

2、nfs的特点

3、nfs软件学习

4、共享配置文件的书写格式

 关于权限,学习:

5、关于命令的学习:

三、实验操作

1、nfs默认共享权限(服务端设置)

2、客户端进行挂载 

​编辑 3、客户端测试:

4、调优

①修改共享配置文件,添加写的权限

②还需要修改文件夹,因为目前现在文件夹没有其他用户的写的权限

四、总结


一、关于存储的分类

存储类型分为三种

1、直连式存储:Direct-Attached Storage,简称DAS

特点:存储和主机直接连接,比如家用的电脑,服务和硬盘直接连接,存储和主机在一台机器上

适用范围:适用于那些数据量不大,对磁盘访问速度要求较高的中小企业

2、网络附加存储:Network-Attached Storage,简称NAS

特点:存储在远程,文件系统也在远程,这块空间是你可以直接访问上面的文件,如ftp、nfs都属于NAS(可以理解为通过网络共用一个设备,且设备的数据仅存了一份)

适用范围:适用于文件服务器,用来存储非结构化数据,虽然受限于以太网的速度,但是部署灵活,成本低

3、存储区域网络:Storage Area Network,简称SAN

特点:有一定的距离,主机距离存储设备相对较远,只提供空间不提供文件系统,管理等其他软件服务,比如ceph,gfs等

适用范围:适用于大型应用或数据库系统,缺点是成本高、较为复杂

二、NFS的介绍

nfs的相关介绍:

nfs是一种NAS存储,NFS也是一种网络文件系统基于内核的文件系统

nfs端口号不固定,早期喜欢说是2049,但是实际上是不固定的,它依赖于rpc(Remote Process Call,远程过程调用协议),通过nfs协议,客户机可以像访问本地目录一样远程访问服务器的共享资源。

1、原理

首先,服务端:nfs开启以后,服务端自己的rpc会注册相关信息;

然后,客户端:想要去连接服务端,会先找一下rpc注册中心,获取nfs的端口号(因为nfs的端口号是随机的,由rpc来进行管理) ;

最后,rpc会告诉客户端关于服务端的nfs端口号,客户端实现访问

2、nfs的特点

  • 使用tcp/ip传输网络文件(rpcbind的端口号是111,nfs的端口号不固定)
  • 比较适合局域网环境,内部操作
  • 安全性低

3、nfs软件学习

软件包:nfs-utils(包括服务器端和客户端)

相关软件包:rpcbind(必须)(centos7的rpcbind由systemd直接管理,不需要启动,会有叫醒服务,在centos7之前都需要先启rpcbind再启动nfs)

nfs端口号不固定 RPC端口号111(tcp和udp都是)

NFS服务主要进程:

  • rpc.nfsd 最主要的NFS进程,管理客户端是否可登录

  • rpc.mountd 挂载和卸载NFS文件系统,包括权限管理

  • rpc.lockd 非必要,管理文件锁,避免同时写出错

  • rpc.statd 非必要,检查文件一致性,可修复文件

日志:/var/lib/nfs/

4、共享配置文件的书写格式

/etc/exports

共享目录      共享给哪些主机(权限)
/dir           192.168.20.0/24(rw.....等)

举例:最简单的:/opt *
可获取的主机可以是一台,也可以是网段等

 关于权限,学习:

默认选项:(ro,sync,root_squash,no_all_squash)
ro,rw 只读和读写(如果允许客户端创建文件夹,写内容等,需要调为rw)

async 异步,数据变化后不立即写磁盘,先写入到缓冲区中,过一段时间再写入磁盘,性能高,安全性低
##但是异步的速度快,因为缓存在内存了

sync(1.0.0后为默认)同步  ##数据在请求时立即写入共享存储磁盘,性能低,安全性高

root_squash ##(默认)远程root映射为nfsnobody,UID为65534,CentOS8 为nobody,CentOS 
7以前的版本为nfsnobody

no_root_squash ##远程root映射成NFS服务器的root用户

all_squash 所有远程用户(包括root)都变成nfsnobody,CentOS8 为nobody

no_all_squash (默认)保留共享文件的UID和GID(这里注意是id号)

anonuid和anongid 指明匿名用户映射为特定用户UID和组GID,而非nobody,可配合all_squash使用

/data/nfs1        *(rw,all_squash,anonuid=1002,anongid=1002)

##以后在生产环境中,为了调优和统一化部署,建议映射为id号相同的用户

5、关于命令的学习:

服务端:

1、软件的配置文件不需要修改,需要修改共享配置文件:/etc/exports

2、修改完以后,先重启一下nfs服务,有两种方法:exportfs -r和systemctl  reload nfs

3、查看本机的共享配置文件信息:exportfs -v

客户端:

1、需要知道服务端是否开启了共享服务:showmount -e 服务端的ip

2、服务端需要挂载:

临时挂载:mount 服务端ip:/共享目录  挂载点

永久挂载:vim /etc/fstab;服务端ip:/共享目录   挂载点 nfs defaults,_netdev 0 0

注意:因为是通过网络共享,那么需要知道,万一服务器不在线,那么永久挂载的配置文件会在开机的时候加载,那么如果没有“_netdev”则开不了机。这个“_netdev”的意思是能够ping通才行,没ping通不生效

三、实验操作

1、nfs默认共享权限(服务端设置)

[root@localhost ~]#mkdir /data
[root@localhost ~]#vim /etc/exports

##exportfs -r和systemctl reload nfs用法一样
[root@localhost ~]#exportfs -r
exportfs: No options for /data 192.168.20.0/24: suggest 192.168.20.0/24(sync) to avoid warning
[root@localhost ~]#exportfs -v
/data         	192.168.20.0/24(ro,sync,wdelay,hide,no_subtree_check,sec=sys,secure,root_squash,no_all_squash)

2、客户端进行挂载 

[root@localhost ~]#systemctl start nfs

[root@localhost ~]#showmount -e 192.168.20.30

[root@localhost ~]#mkdir /nfsdir

##临时挂载
[root@localhost ~]#mount 192.168.20.30:/data /nfsdir/
[root@localhost ~]#df -hT

##永久挂载
[root@localhost ~]#vim /etc/fstab 
[root@localhost ~]#mount -a
[root@localhost ~]#df -hT

 

 3、客户端测试:

4、根据实验来学习权限配置

想要客户端有写的权限:

①修改共享配置文件,添加写的权限

②还需要修改文件夹,因为目前现在文件夹没有其他用户的写的权限

 

 

5、关于文件的属主

1、默认情况下,是root_squash,no_all_squash,即:root压榨为匿名用户,普通用户只是保留uid与名称无关

2、添加完rw权限以后,客户端可以写内容也可以删除内容

6、客户多台客户机使用nfs

7、比较常用的选项配置:

共享配置文件的常用选项
/data      *(rw,all_squash,anonuid=2000,anongid=2000)

测试结果 

建议在使用的时候,将所有主机的uid=2000的用户使用同一个人,这样比较方便 

拓展 

在这个使用的基础上,指定uid为2000的用户使用,这样更加安全!!

验证  在服务端和客户端只是认识uid为2000的用户,换个名字也是一样的 

 

 8、验证rpcbind是tcp和udp的111端口:

四、总结

1、服务端添加共享目录的写的权限的时候,需要注意给软件添加权限,然后还得给共享的目录添加权限,目录权限添加有两种办法:直接用chmod 777;或者使用setfacl 只给指定的用户或uid给rwx权限;

2、rpcbind用了tcp协议也用了udp协议,都是111端口,tcp用于建立可靠的客户端连接,udp用于管理注册信息nfs的端口号;

3、要知道如果系统默认是进行root压榨为nfsnobody和普通用户不压榨,但是是以uid记录,所有属主和属组都是看uid的,与用户名无关;

4、在生产环境中,建议使用全部压榨,调整为uid为统一的用户,使用setfacl限定,这样数据更安全

5、最后,nfs是一种nas存储方式,nfs本身就是一种网络文件系统,所以直接挂载就可以使用


http://www.kler.cn/a/133984.html

相关文章:

  • SpringBoot实战(三十一)集成iText5,实现RSA签署PDF
  • 2023年MathorCup数学建模B题城市轨道交通列车时刻表优化问题解题全过程文档加程序
  • 大数据新视界 -- 大数据大厂之 Impala 性能飞跃:动态分区调整的策略与方法(上)(21 / 30)
  • sol机器人pump机器人如何实现盈利的?什么是Pump 扫链机器人?
  • SpringBoot参数注解
  • HTTP常见的请求头有哪些?都有什么作用?在 Web 应用中使用这些请求头?
  • Android跨进程通信,IPC,RPC,Binder系统,C语言应用层调用
  • 批量替换WordPress文章内图片链接
  • vue3.0中实现excel文件的预览
  • 07-流媒体-RTMP推流
  • 实战项目:VB龟兔赛跑游戏+猜数字游戏
  • vue3安装vue-router
  • 云计算(Docker)
  • 文件转换,简简单单,pdf转word,不要去找收费的了,自己学了之后免费转,之后就复制粘贴就ok了
  • how to find gcc openbug
  • mysql 设置远程登录
  • 【数据结构&C++】二叉平衡搜索树-AVL树(25)
  • 系列五、怎么查看默认的垃圾收集器是哪个?
  • Java 语言关键字有哪些
  • 【0234】PgBackendStatus 记录当前postgres进程的活动状态
  • GDPU 数据结构 天码行空10
  • 华为OD机试 - 转盘寿司(Java JS Python C)
  • Springboot更新用户头像
  • 大语言模型的三阶段训练
  • vim指令
  • promise时效架构升级方案的实施及落地 | 京东物流技术团队