Linux网络--NFS共享存储服务及实操

一:NFS基本概述

NFS(Network File System)网络文件系统
主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录。
NFS系统和Windows网络共享、网络驱动器类似, 只不过windows用于局域网, NFS用于企业集群架构中, 如果是大型网站, 会用到更复杂的分布式文件系统FastDFS,glusterfs,HDFS

二:网络文件系统(Network File System)

  • 依赖于RPC(远程过程调用)
  • 需安装nfs-utils,rpcbind软件包
  • 系统服务:nfs【网络文件系统】,rpcbind 【远程过程调用】
  • 共享配置文件:/etc/exports

以下为启动各服务的作用

rpc:远程过程调用协议,是实现本地调用远程主机实现系统调用的协议。

portmapper:负责分配rpc server的端口,并在client端请求时,负责响应目的rpc server端口返回给client端,工作在tcp与udp的111端口上。

mountd:是nfs服务的认证服务的守护进程,client在收到返回的真正端口时,就会去连接mountd,认证取得令牌。

nfsd:nfs的守护进程,负责接收到用户的调用请求后与内核发出请求并得到调用结果响应给用户,工作在tcp和udp的2049端口。

idmapd:是NFS的一个程序,用来负责远程client端创建文件后的权限问题。

quotad:用用于实现磁盘配额,当client端挂载nfs后可以限制磁盘空间的大小。

三:NFS具体流程

mark

  1. 本地用户要访问nfs服务器中文件,先向内核发起请求,内核处理调用nfs模块及rpc client
  2. rpc client向rpc server发起连接
  3. 在连接之前,NFS服务除了启动nfsd本身监听的端口2049/tcp和2049/udp,还会启动其它进程(如mountd,statd,rquotad等)以完成文件共享,这些进程的端口是不固定的;是每次NFS服务启动时向RPC服务注册的,RPC服务会随机分配未使用的端口
  4. 完成连接,接受访问请求
  5. nfs应用程序向内核发起请求
  6. 内核调用文件系统

​ 然后client端通过获取的NFS端口来建立和server端的NFS连接并进行数据的传输。

四:实验环境

4.1:实验环境

两台主机centod 7 一个做服务端 shuai01 (20.0.0.41) 一个作为客户端:shuai02(20.0.0.42)

4.2:首先服务端添加一块硬盘并重启,格式化并挂载刚刚添加的硬盘(我们刚刚添加40G)

[root@shuai01 ~]# fdisk -l                          ##查看磁盘信息

磁盘 /dev/sdb:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/sda:322.1 GB, 322122547200 字节,629145600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000a0b1b

[root@shuai01 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0xf1e0c807 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-83886079,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-83886079,默认为 83886079):
将使用默认值 83886079
分区 1 已设置为 Linux 类型,大小设为 40 GiB

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@shuai01 ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=2621376 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=10485504, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=5119, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

4.3:进行挂载

[root@shuai01 ~]# vim /etc/fstab

mark

[root@shuai01 ~]# mount -a
[root@shuai01 ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        54G  4.9G   49G   10% /
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   13M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  179M  836M   18% /boot
/dev/mapper/centos-home xfs       245G   33M  245G    1% /home
tmpfs                   tmpfs     378M  4.0K  378M    1% /run/user/42
tmpfs                   tmpfs     378M   40K  378M    1% /run/user/0
/dev/sdb1               xfs        40G   33M   40G    1% /mnt

4.4:安装nfs-utils rpcbind,并设置开机启动

[root@shuai01 ~]# yum install nfs-utils rpcbind -y
[root@shuai01 ~]# systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[root@shuai01 ~]# systemctl enable rpcbind

4.5: 设置共享目录,启动服务并关闭防火墙

[root@shuai01 ~]# vim /etc/exports           ##编辑exports
/mnt    20.0.0.0/24(rw,sync,no_root_squash)      ##rw:读写 sync:同步 
,数据同步写到内存与硬盘中       no_root_squash: 有root的权限,不建议使用
[root@shuai01 ~]# systemctl start nfs      ##重启服务      
[root@shuai01 ~]# systemctl start rpcbind   ##重启服务     
[root@shuai01 ~]# netstat -ntap | grep rpc
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      13212/rpcbind       
tcp        0      0 0.0.0.0:20048           0.0.0.0:*               LISTEN      14350/rpc.mountd    
tcp        0      0 0.0.0.0:37028           0.0.0.0:*               LISTEN      14348/rpc.statd     
tcp6       0      0 :::50250                :::*                    LISTEN      14348/rpc.statd     
tcp6       0      0 :::111                  :::*                    LISTEN      13212/rpcbind       
tcp6       0      0 :::20048                :::*                    LISTEN      14350/rpc.mountd    

[root@shuai01 ~]# systemctl stop firewalld.service     #关闭防火墙
[root@shuai01 ~]# setenforce 0                         ##关闭防护功能

[root@shuai01 ~]# showmount -e                         ##查看本机NFS共享目录
Export list for shuai01:
/mnt 20.0.0.0/24

4.6: 设置客户端

[root@shuai02 ~]# systemctl stop firewalld.service           ##关闭防火墙
[root@shuai02 ~]# setenforce 0                               ##关闭安全防护功能
[root@shuai02 ~]# yum install httpd -y                       ##下载httpd
....省略

4.7:进行NFS共享目录挂载或永久挂载

[root@shuai02 ~]# mount 20.0.0.41:/mnt /var/www/html/           ##挂载
[root@shuai02 ~]# df -Th                                        ##查看挂载
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        50G  5.0G   46G   10% /
devtmpfs                devtmpfs  3.6G     0  3.6G    0% /dev
tmpfs                   tmpfs     3.6G     0  3.6G    0% /dev/shm
tmpfs                   tmpfs     3.6G   13M  3.6G    1% /run
tmpfs                   tmpfs     3.6G     0  3.6G    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  179M  836M   18% /boot
/dev/mapper/centos-home xfs       242G   33M  242G    1% /home
tmpfs                   tmpfs     726M  4.0K  726M    1% /run/user/42
tmpfs                   tmpfs     726M   48K  726M    1% /run/user/0
/dev/sr0                iso9660   4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
20.0.0.41:/mnt          nfs4       40G   33M   40G    1% /var/www/html
##配置永久挂载
[root@shuai02 ~]# umount /var/www/html/              ##先解除刚刚的挂载
[root@shuai02 ~]# vim /etc/fstab                     ##进行编辑

mark

[root@shuai02 ~]# mount -a           ##加载挂载
[root@shuai02 ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        50G  5.0G   46G   10% /
devtmpfs                devtmpfs  3.6G     0  3.6G    0% /dev
tmpfs                   tmpfs     3.6G     0  3.6G    0% /dev/shm
tmpfs                   tmpfs     3.6G   13M  3.6G    1% /run
tmpfs                   tmpfs     3.6G     0  3.6G    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  179M  836M   18% /boot
/dev/mapper/centos-home xfs       242G   33M  242G    1% /home
tmpfs                   tmpfs     726M  4.0K  726M    1% /run/user/42
tmpfs                   tmpfs     726M   48K  726M    1% /run/user/0
/dev/sr0                iso9660   4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
20.0.0.41:/mnt          nfs4       40G   33M   40G    1% /var/www/html

4.8: 配置httpd网页开启服务

[root@shuai02 ~]# cd /var/www/html/
[root@shuai02 html]# ls
[root@shuai02 html]# vim index.html
[root@shuai02 html]# cat index.html         ##查看一下内容
<h1>woshishuaig</h1>

mark

mark

4.9: 下一步切换到服务端

[root@shuai01 ~]# cd /mnt
[root@shuai01 mnt]# ls
index.html
[root@shuai01 mnt]# cat index.html 
<h1>woshishuaige</h1>
你会发现mnt底下的也有刚刚配置的内容

5.0: 假如服务器NFS突然崩掉(模拟实验)

[root@shuai01 mnt]# systemctl stop nfs
##切换到客户机
[root@shuai02 html]# df -Th
#你会发客户机会卡在这边
[root@shuai02 ~]# umount -lf /var/www/html     ##解除挂载 l:解除正在繁忙的挂载点 f:强制
###这边注意html不可Tab键补全 否则也会卡死 卡死需要从新打开一个终端   
[root@shuai02 ~]# df -Th                       ##已经好了
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        50G  5.0G   46G   10% /
devtmpfs                devtmpfs  3.6G     0  3.6G    0% /dev
tmpfs                   tmpfs     3.6G     0  3.6G    0% /dev/shm
tmpfs                   tmpfs     3.6G   13M  3.6G    1% /run
tmpfs                   tmpfs     3.6G     0  3.6G    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  179M  836M   18% /boot
/dev/mapper/centos-home xfs       242G   33M  242G    1% /home
tmpfs                   tmpfs     726M  4.0K  726M    1% /run/user/42
tmpfs                   tmpfs     726M   48K  726M    1% /run/user/0
/dev/sr0                iso9660   4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64:

感谢观看,给少年尝尝楼顶的滋味吧

猜你喜欢

转载自blog.csdn.net/weixin_47151643/article/details/107329931