构建NFS远程共享存储

目录

一. NFS介绍

二. 网络附加存储(NAS)设备 

三. 远程过程调用

四. 实验测试

4.1 nfs-server操作

 4.1.1 新建一个目录作为共享

4.1.2 新增一个磁盘作为共享 

4.2 web1  客户端操作 


一. NFS介绍

NFS(Network File System)是一种分布式文件系统协议,允许网络中的计算机之间共享文件。它最初由Sun Microsystems开发,现在成为了许多操作系统的标准功能之一,包括Linux、UNIX和类UNIX系统。

NFS的主要特点和优势包括:

  1. 共享文件系统:NFS允许多台计算机通过网络共享文件,使得这些文件在网络中可以被多台计算机访问和操作。

  2. 透明性:对于用户来说,NFS提供了透明的文件访问体验,就好像文件存储在本地一样。用户不需要关心文件存储在哪台服务器上,只需要像操作本地文件一样操作共享文件。

  3. 跨平台兼容性:NFS在多种操作系统之间提供了文件共享功能,包括Linux、UNIX、macOS等,这使得不同平台之间可以无缝地共享文件。

  4. 简化管理:通过NFS,管理员可以将文件集中存储在一台或多台文件服务器上,而不是分散在每台计算机上,这样可以简化文件管理和备份。

  5. 性能:NFS可以在本地网络或广域网络(WAN)上实现高性能文件共享,使得远程访问文件的速度接近本地访问的速度。

尽管NFS有很多优点,但也有一些考虑因素,比如安全性、性能调优、网络延迟等。因此,在实际应用中,需要根据特定的需求和环境来评估是否使用NFS以及如何配置和管理NFS。

NFS 文件系统仅支持基于 IP 的用户访问控制,NFS 的客户端主要为Linux。

二. 网络附加存储(NAS)设备 

在文件系统级别进行共享,通常使用的是网络附加存储(NAS)设备。这种共享方法允许多个计算机通过网络访问共享存储设备上的文件。两种常见的文件系统级别共享方法是NFS(Network File System)和Samba。

  1. NFS(Network File System)

    • NFS是一种在UNIX和类UNIX系统之间共享文件的标准协议。
    • 它允许Linux和其他UNIX系统之间通过网络访问共享目录。
    • NFS速度快,适合局域网环境下的文件共享,但在广域网上可能速度较慢。
  2. Samba

    • Samba是一个开源的实现了SMB/CIFS协议的软件套件,它允许UNIX系统上的计算机与Windows系统共享文件和打印机。
    • Samba可以在Linux、UNIX和Windows之间提供文件共享服务。
    • 尽管Samba可以提供更广泛的操作系统兼容性,但在某些情况下,与NFS相比可能会有一些性能损失。

选择NFS还是Samba取决于你的环境和需求:

  • 如果你的网络中主要是UNIX/Linux系统,而且速度要求较高,可以选择NFS。
  • 如果你的网络中有Windows系统,并且需要与这些系统进行文件共享,可以选择Samba。
  • 如果需要跨平台兼容性,可能需要同时配置NFS和Samba,以满足不同操作系统的需求。

三. 远程过程调用

RPC(Remote Procedure Call,远程过程调用)是一种在计算机网络中进行进程间通信的协议,它允许一个计算机程序调用另一个位于远程计算机上的程序,就像调用本地程序一样。NFS(Network File System)就是通过RPC来实现客户端和服务器之间的通信。

下面是RPC和NFS之间的通信过程:

  1. RPC客户端调用

    • 当客户端需要访问NFS服务器上的文件时,它会通过RPC调用向NFS服务器发出请求。
    • RPC客户端会构建一个请求消息,其中包含了调用的远程过程的标识符、参数等信息。
  2. RPC服务器响应

    • NFS服务器收到客户端发来的RPC请求后,会解析请求消息,确定所需执行的操作。
    • NFS服务器执行相应的文件操作(如读取、写入等),并将结果返回给RPC客户端。
  3. RPC客户端接收响应

    • 客户端接收到来自服务器的响应消息,其中包含了所需的文件数据或执行结果。
  4. 通信过程中的端口信息传递

    • 在RPC通信的过程中,客户端和服务器之间会使用一系列动态分配的端口进行通信。这些端口的信息会在RPC调用的过程中通过RPC协议进行传递和记录。
    • RPC协议会确保客户端和服务器都能够正确地识别对方使用的端口,并确保通信的正确性和完整性。

总的来说,RPC提供了一种机制,使得NFS客户端和服务器之间能够通过网络进行通信,而不需要关心底层网络细节和具体的端口分配。RPC协议会处理通信中的细节,确保客户端和服务器之间能够有效地进行远程过程调用,并传递所需的端口信息。

四. 实验测试

 实验环境准备两台机器

服务端:nfs-server   192.168.226.100
客户端:web1           192.168.226.130

 #centos7(服务端和客户端都关闭防火墙和selinux内核防火墙)
systemctl stop firewalld
systemctl disable firewalld    
setenforce 0

4.1 nfs-server操作

 4.1.1 新建一个目录作为共享

[root@nfs-server ~]# yum -y install rpcbind  #安装rpc协议的包
[root@nfs-server ~]# yum -y install nfs-utils #安装nfs服务。
启动服务
[root@nfs-server ~]# systemctl start nfs
[root@nfs-server ~]# systemctl start rpcbind
[root@nfs-server ~]# mkdir /nfs-dir   #创建存储目录
[root@nfs-server ~]# echo "这是一个测试页面" >> /nfs-dir/index.html  #常见共享测试文件
[root@nfs-server ~]# vim /etc/exports   #编辑共享文件,新增如下内容
/nfs-dir        192.168.226.0/24(rw,no_root_squash,sync)


[root@nfs-server ~]# systemctl restart nfs-server #重启服务。
[root@nfs-server ~]# systemctl enable nfs-server #开机自启动
可选参数注释:
ro:只读
rw:读写
*:表示共享给所有网段。
sync:所有数据在请求时写入共享
root_squash: 对于使用分享目录的使用者如果是root用户,那么这个使用者的权限将被压缩成为匿名使用者,只读权限。
no_root_squash:使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限。

4.1.2 新增一个磁盘作为共享 

前提下载包和关闭防火墙和seliunx不在赘述,看上方内容了解

1.查看块设备,找到新增的磁盘名
lsblk

2.格式化磁盘
方式一:
mkfs.ext4 /dev/sdb
方式二:
mkfs.xfs /dev/sdb

3.新建一个目录用作挂载目录
mkdir /mnt/new_disk

4.挂载磁盘
mount /dev/sdb /mnt/new_disk

5.配置NFS共享
vim /etc/exports

#新增如下,表示将/mnt/new_disk目录共享给所有主机
/mnt/new_disk *(rw,sync,no_root_squash)

6.重启服务
systemctl restart nfs-server

7.创建一个测试文件,看是否成功
echo "这是使用磁盘进行NFS共享" >> /mnt/new_disk/index.txt

4.2 web1  客户端操作 

[root@web1 ~]# yum -y install rpcbind
[root@web1 ~]# yum -y install nfs-utils
[root@web1 ~]# mkdir /ceshi                                    #创建目录共享的挂载点
[root@web1 ~]# mkdir /gongxiang                                #创建磁盘共享的挂载点
[root@web1 ~]# mount -t nfs 192.168.226.100:/nfs-dir /ceshi           #挂载
[root@web1 ~]# mount -t nfs 192.168.226.100:/mnt/new_disk /gongxiang  #挂载
                                                               # -t:指定文件系统类型
[root@web1 ~]# df -Th
文件系统                        类型      容量  已用  可用 已用% 挂载点
devtmpfs                       devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                          tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                          tmpfs     1.9G   12M  1.9G    1% /run
tmpfs                          tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root        xfs        17G   13G  4.2G   76% /
/dev/sda1                      xfs      1014M  151M  864M   15% /boot
tmpfs                          tmpfs     378M     0  378M    0% /run/user/0
192.168.226.100:/nfs-dir       nfs4       17G  1.9G   16G   12% /ceshi
192.168.226.100:/mnt/new_disk  nfs4       20G   44M   19G    1% /gongxiang


[root@web1 ~]# ls /ceshi
index.html
[root@web1 ~]# umount /ceshi     #取消挂载
[root@web1 ~]# umount /gongxiang #取消挂载

制作开机挂载
[root@web1 ~]# vim /etc/fstab
192.168.226.100:/nfs-dir        /ceshi       nfs   rw,nofail,bg   0 0
192.168.226.100:/mnt/new_disk   /gongxiang   nfs   rw,nofail,bg   0 0

[root@web1 ~]# mount -a

对rw,nofail,bg 参数解释:
rw     表示文件系统以可读写(read-write)模式挂载,允许用户对文件系统进行读写操作
nofail 表示即使文件系统挂载失败,系统也不会因此启动失败。
bg     表示以后台(background)模式挂载文件系统。

现在就验证成功拉,实际应用也是一样的原理。 

当然,在客户端也可以进行修改,客户端与服务端会实时同步 。

扩展:

 在客户端操作时这个语句mount -t nfs 192.168.226.100:/nfs-dir /ceshi

其中的IP可以换成主机名,那么就要在/etc/hosts文件中新增如下格式的内容

IP地址 主机名

测试:

[root@web1 ~]# umount /ceshi #先取消之前的挂载
[root@web1 ~]# mount -t nfs server:/nfs-dir /ceshi     #使用主机名挂载
[root@web1 ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   12M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G   13G  4.2G   76% /
/dev/sda1               xfs      1014M  151M  864M   15% /boot
tmpfs                   tmpfs     378M     0  378M    0% /run/user/0
server:/nfs-dir         nfs4       17G  1.9G   16G   12% /ceshi

  • 31
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值