RH358提供基于文件的网络存储--导出NFS文件系统

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: RH358提供基于文件的网络存储--导出NFS文件系统

RH358提供基于文件的网络存储–导出NFS文件系统

本章节介绍如何提供基于文件的网络存储。包括NFS和Samba,但在我眼中,Samba已经成为鸡肋服务,因为勒索病毒的出现,很多政企都会在网络层面封禁135、137、138、139和445端口,而Samba协议就是使用这几个高风险端口,因此,是否用Samba真的好好考虑了。在我看来,还是别用。

RH358专栏地址:https://blog.csdn.net/qq_41765918/category_11532281.html

1. 描述 NFS

Network File System (NFS) 是⼀种基于文件的存储协议,通常由 UNIX 系统和网络附加存储 network-attached storage(NAS) 设备使用。它提供跨网络对共享文件系统的透明远程访问。

Redhat Enterprise Linux 8默认使用NFS 4.2版本,支持使用NFSv4或NFSv3协议。不再支持NFSv2协议。NFS版本4 (NFSv4)只使用TCP传输,但是早期的NFS版本可以使用UDP或TCP。

NFS服务器导出文件系统目录及其内容,并与客户端共享。NFS客户端系统将导出的文件系统挂载到本地挂载点。

2. 启用NFS服务器

在服务器上,nfs-utils包提供了与NFS共享目录所需的工具。

启用并启动nfs-server服务。

[root@host ~]# systemctl enable --now nfs-server

服务器端的NFS协议版本为4.1及以上,端口为2049/TCP。配置防火墙,允许访问nfs服务,以打开该端口。

[root@host ~]# firewall-cmd --permanent --add-service=nfs

[root@host ~]# firewall-cmd --reload

早期版本的NFS需要允许访问其他端口。

3. 配置 NFS 导出

用于共享的主配置文件为/etc/exports。/etc/exports.d/*.exports 文件作为额外的配置读取,都使用相同的语法

在配置文件中,每一行声明一个导出点。第一个字段是导出目录的名称,其余部分列出访问共享目录的客户端及访问权限

**注意:**不要使用 NFS 导出同时是 SMB 共享的目录。可能会造成文件损坏或文件完整性或一致性问题

在配置文件中可以通过几种方式指定客户机系统。

  • dns可解析的主机名,如client1.example.com。在下面的例子中,client1.example.com系统可以挂载/srv/myshare目录。

/srv/myshare client1.example.com

  • 带有*通配符的dns可解析主机名。下面的示例允许example.com域中的所有系统访问NFS共享。

/srv/myshare *.example.com

  • IPv4地址。下面使用192.168.0.12的IP地址访问NFS共享为例。

/srv/myshare 192.168.0.12

  • IPv4网络。下面以192.168.0.0/24网络为例进行说明。也可以使用192.168.0.0/255.255.255.0表示法。

/srv/myshare 192.168.0.0/24

  • IPv6地址。以IPv6地址为fde2:6494:1e09:2::20的客户端系统访问NFS共享为例。

/srv/myshare fde2:6494:1e09:2::20

  • IPv6网络。例如使用fde2:6494:1e09:2::/64 IPv6网络访问NFS共享。

/srv/myshare fde2:6494:1e09:2::/64

若要与多个客户端系统共享一个目录,请在目录名称后使用空格分隔的列表:

/srv/myshare 192.168.0.0/24 client1.example.com *.example.net

默认情况下,目录以只读方式与客户端共享。在每个客户端定义之后,可以在圆括号中指定导出选项以覆盖默认值。

**重要:**客户端定义的结尾和开括号之间不能有空格。

下面是最常见的选项。

rw

此选项允许对指定的客户端进行读/写访问。没有这个选项(或者如果使用ro代替),NFS只授予读访问权。以下示例中,client1.example.com具有读写权限,而client2.example.com具有只读权限

/srv/myshare client1.example.com(rw) client2.example.com

no_root_squash

默认情况下,当客户机上的root用户访问NFS导出时,服务器将其视为nobody用户的访问。这意味着,如果客户机上的root用户在导出中创建了一个文件,那么该文件将属于nobody用户。这也意味着,如果客户机上的root试图读取用户nobody无法读取的导出文件,则访问将失败。

您可以通过添加no_root_squash选项来禁用该安全保护。下面的示例允许使用client1.example.com系统读写权限和真实root用户对/srv/myshare导出目录的访问权限。

/srv/myshare client1.example.com(rw,no_root_squash)

**注意:**在Red Hat Enterprise Linux 7及更早的版本中,用户是nfsnobody而不是nobody。

4. 检查 NFS 导出

使用exportfs命令列出NFS服务器当前导出的目录。

[root@host ~]# exportfs

/srv/myshare client1.example.com

缺省情况下,该命令不显示导出选项。使用-v选项列出这些选项,包括默认选项。

[root@host ~]# exportfs -v

/srv/myshare client1.example.com(sync,…,rw,secure,no_root_squash,…)

当修改/etc/exports或/etc/exports.d/*.exports文件中的导出点时。对于NFS服务,执行exportfs -r命令以考虑这些更改。作为一种替代方法,您还可以运行systemctl reload nfs-server。

5. 课本练习

[student@workstation ~]$ lab filestorage-nfs start

该命令确保servera、serverb和serverd在网络上可用。

在本练习中,您将配置serverd使用NFS共享/nfsshare目录。将servera配置为将这个NFS挂载到/share目录下。

1. 将服务器准备为NFS服务器。

为此,安装nfs-utils包,启动nfs-server服务,然后打开防火墙端口。

[root@serverd ~]# yum -y install nfs-utils
[root@serverd ~]# systemctl enable --now nfs-server
[root@serverd ~]# firewall-cmd --permanent --add-service=nfs
success
[root@serverd ~]# firewall-cmd --reload
success

2. 创建/nfsshare目录并对其进行保护,以便只有student用户具有写访问权限。

[root@serverd ~]# mkdir /nfsshare
[root@serverd ~]# chown student /nfsshare
[root@serverd ~]# ls -ld /nfsshare
drwxr-xr-x. 2 student root 6 Jul  1 13:55 /nfsshare
# 注意:学生用户具有读/写访问权限,而其他所有用户只有读访问权限。

3. 导出/nfsshare目录。

# 以便仅servera.lab.example.com可以读/写挂载它。确保lab.example.com DNS域中的所有其他系统都可以只读地挂载共享导出。
[root@serverd ~]# vim /etc/exports.d/exercise.exports
/nfsshare servera.lab.example.com(rw) *.lab.example.com(ro)
[root@serverd ~]# systemctl reload nfs-server
[root@serverd ~]# exportfs -v
/nfsshare         servera.lab.example.com(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
/nfsshare         *.lab.example.com(sync,wdelay,hide,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash)

4. 将来自serverd的NFS导出挂载到servera的/share挂载点上。

[root@servera ~]# mkdir /share
[root@servera ~]# echo "serverd.lab.example.com:/nfsshare /share nfs defaults 0 0" >> /etc/fstab
[root@servera ~]# mount /share
[root@servera ~]# df /share
Filesystem                        1K-blocks    Used Available Use% Mounted on
serverd.lab.example.com:/nfsshare  10474496 2534912   7939584  25% /share

5. 对文件系统的访问权限进行认证。

[root@servera ~]# su - student -c "echo Hello World > /share/test.txt"
[root@servera ~]# ls /share
test.txt
# 这个测试验证了在读写模式下可以访问导出。

[root@servera ~]# echo Hello World > /share/root_test.txt
-bash: /share/root_test.txt: Permission denied
# serverd上的NFS服务器将来自root的请求映射到nobody用户帐户。系统拒绝权限,原因是nobody用户对服务器上的/nfsshare目录没有写权限。

6. 确认lab.example.com DNS域中的其他系统可以以只读方式挂载导出。

[root@serverb ~]# mount serverd.lab.example.com:/nfsshare /mnt
[root@serverb ~]# df /mnt
Filesystem                        1K-blocks    Used Available Use% Mounted on
serverd.lab.example.com:/nfsshare  10474496 2534656   7939840  25% /mnt
[root@serverb ~]# ls /mnt
test.txt
[root@serverb ~]# cat /mnt/test.txt
Hello World
[root@serverb ~]# su - student -c "echo Hello World > /mnt/from_serverb.txt"
-bash: /mnt/from_serverb.txt: Read-only file system
# 命令失败是因为文件系统是只读的。

完成实验

[student@workstation ~]$ lab filestorage-nfs finish

总结

  • 介绍NFS。
  • 如何部署和配置NFS。
  • 导出NFS并挂载使用。
  • 若喜欢金鱼哥的文章,顺手点个赞。也可点个关注,因为后续会不断上干货。

目录
相关文章
|
2月前
|
存储 安全 Unix
网络文件系统 (NFS)
【10月更文挑战第12天】
155 5
|
2月前
|
存储 缓存 安全
网络文件系统 (NFS)
【10月更文挑战第11天】
52 1
|
4月前
|
消息中间件 存储 Serverless
函数计算产品使用问题之怎么访问网络附加存储(NAS)存储模型文件
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
1月前
|
存储 网络协议 安全
软件管理,磁盘存储,文件系统以及网络协议
【11月更文挑战第9天】本文介绍了软件管理、磁盘存储和网络协议等内容。软件管理包括软件生命周期管理和软件包管理,涉及需求分析、设计、实现、测试、发布、维护等阶段,以及软件包的安装、升级和依赖关系处理。磁盘存储部分讲解了磁盘的物理结构、分区与格式化、存储管理技术(如 RAID 和存储虚拟化)。网络协议部分涵盖了分层模型、重要协议(如 HTTP、TCP、IP)及其应用与安全。
|
3月前
|
数据采集 存储 JavaScript
构建您的第一个Python网络爬虫:抓取、解析与存储数据
【9月更文挑战第24天】在数字时代,数据是新的金矿。本文将引导您使用Python编写一个简单的网络爬虫,从互联网上自动抓取信息。我们将介绍如何使用requests库获取网页内容,BeautifulSoup进行HTML解析,以及如何将数据存储到文件或数据库中。无论您是数据分析师、研究人员还是对编程感兴趣的新手,这篇文章都将为您提供一个实用的入门指南。拿起键盘,让我们开始挖掘互联网的宝藏吧!
|
2月前
|
存储 网络协议 数据挖掘
|
2月前
|
Kubernetes 容器
基于Ubuntu-22.04安装K8s-v1.28.2实验(三)数据卷挂载NFS(网络文件系统)
基于Ubuntu-22.04安装K8s-v1.28.2实验(三)数据卷挂载NFS(网络文件系统)
179 0
|
4月前
|
存储 机器学习/深度学习 分布式计算
HDFS与网络附加存储(NAS)的比较
【8月更文挑战第31天】
124 0
|
4月前
|
数据采集 存储 JavaScript
构建你的首个Python网络爬虫:抓取、解析与存储数据
【8月更文挑战第31天】在数字时代的浪潮中,数据成为了新的石油。了解如何从互联网的海洋中提取有价值的信息,是每个技术爱好者的必备技能。本文将引导你通过Python编程语言,利用其强大的库支持,一步步构建出你自己的网络爬虫。我们将探索网页请求、内容解析和数据存储等关键环节,并附上代码示例,让你轻松入门网络数据采集的世界。
|
4月前
|
存储 Linux 网络安全
【Azure 存储服务】如何把开启NFS 3.0协议的Azure Blob挂载在Linux VM中呢?(NFS: Network File System 网络文件系统)
【Azure 存储服务】如何把开启NFS 3.0协议的Azure Blob挂载在Linux VM中呢?(NFS: Network File System 网络文件系统)

热门文章

最新文章