目录
一. 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的主要特点和优势包括:
-
共享文件系统:NFS允许多台计算机通过网络共享文件,使得这些文件在网络中可以被多台计算机访问和操作。
-
透明性:对于用户来说,NFS提供了透明的文件访问体验,就好像文件存储在本地一样。用户不需要关心文件存储在哪台服务器上,只需要像操作本地文件一样操作共享文件。
-
跨平台兼容性:NFS在多种操作系统之间提供了文件共享功能,包括Linux、UNIX、macOS等,这使得不同平台之间可以无缝地共享文件。
-
简化管理:通过NFS,管理员可以将文件集中存储在一台或多台文件服务器上,而不是分散在每台计算机上,这样可以简化文件管理和备份。
-
性能:NFS可以在本地网络或广域网络(WAN)上实现高性能文件共享,使得远程访问文件的速度接近本地访问的速度。
尽管NFS有很多优点,但也有一些考虑因素,比如安全性、性能调优、网络延迟等。因此,在实际应用中,需要根据特定的需求和环境来评估是否使用NFS以及如何配置和管理NFS。
NFS 文件系统仅支持基于 IP 的用户访问控制,NFS 的客户端主要为Linux。
二. 网络附加存储(NAS)设备
在文件系统级别进行共享,通常使用的是网络附加存储(NAS)设备。这种共享方法允许多个计算机通过网络访问共享存储设备上的文件。两种常见的文件系统级别共享方法是NFS(Network File System)和Samba。
-
NFS(Network File System):
- NFS是一种在UNIX和类UNIX系统之间共享文件的标准协议。
- 它允许Linux和其他UNIX系统之间通过网络访问共享目录。
- NFS速度快,适合局域网环境下的文件共享,但在广域网上可能速度较慢。
-
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之间的通信过程:
-
RPC客户端调用:
- 当客户端需要访问NFS服务器上的文件时,它会通过RPC调用向NFS服务器发出请求。
- RPC客户端会构建一个请求消息,其中包含了调用的远程过程的标识符、参数等信息。
-
RPC服务器响应:
- NFS服务器收到客户端发来的RPC请求后,会解析请求消息,确定所需执行的操作。
- NFS服务器执行相应的文件操作(如读取、写入等),并将结果返回给RPC客户端。
-
RPC客户端接收响应:
- 客户端接收到来自服务器的响应消息,其中包含了所需的文件数据或执行结果。
-
通信过程中的端口信息传递:
- 在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.查看块设备,找到新增的磁盘名
lsblk2.格式化磁盘
方式一:
mkfs.ext4 /dev/sdb
方式二:
mkfs.xfs /dev/sdb3.新建一个目录用作挂载目录
mkdir /mnt/new_disk4.挂载磁盘
mount /dev/sdb /mnt/new_disk5.配置NFS共享
vim /etc/exports#新增如下,表示将/mnt/new_disk目录共享给所有主机
/mnt/new_disk *(rw,sync,no_root_squash)6.重启服务
systemctl restart nfs-server7.创建一个测试文件,看是否成功
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