一、NFS概念
- 全称: Network File System. 一个基于网络的文件系统, 可以实现多台电脑共享文件夹的功能
二、搭建步骤
2.1 搭建环境
操作系统 | ip地址 | 角色 | 名称 |
---|---|---|---|
CentOS 7 64位 | 192.168.111.133 | Host | NFS Host |
CentOS 7 64位 | 192.168.111.134 | Client | NFS Client1 |
CentOS 7 64位 | 192.168.111.135 | Client | NFS Client2 |
2.2 搭建NFS host
- 安装依赖
yum install rpcbind nfs-utils
- 分别为rpcbind和nfs服务设置开机启动服务
systemctl start rpcbind systemctl enable rpcbind systemctl start nfs-server systemctl enable nfs-server
- 创建共享文件夹
mkdir -p /share
- 编辑nfs服务器配置文件
# 1. 编辑文件 vim /etc/exports # 2. 新增如下内容 /share 192.168.111.*(rw,no_root_squash) # rw表示可读可写; no_root_squash的配置可以让任何用户都能访问此文件夹
- reload配置文件
exportfs -rv
- 关闭防火墙
systemctl stop firewalld.service # 停止防火墙服务 systemctl disable firewalld.service # 禁止开机启动
- 至此, NFS host的配置就完成了
2.3 搭建NFS Client1
-
安装nfs-utils依赖
yum install nfs-utils
-
执行命令测试NFS Host是否配置了共享目录
showmount -e 192.168.111.133
=> 若能出现上图长方形所圈住的信息, 那么标识NFS Host的配置成功了
-
将NFS Client1的
/root/testshare
目录挂载在NFS Host的/share
目录上# 在NFS Client1 机器上执行如下命令 # 创建/root/testshare文件夹 mkdir /root/testshare # 挂载目录, 命令规则: mount -t nfs NFS_HOST_IP:共享的目录 当前要挂载到NFSHOST共享目录的目录 mount -t nfs 192.168.111.133:/share /root/testshare
-
查看挂载结果
df -h
2.4 NFS服务功能测试
- 在NFS Client1中的
/root/testshare
目录下执行如下命令echo "Hello NFS Client1 192.168.111.134" > nfsclient1.html
- 在NFS HOST中的
/share
目录下执行命令
=> 若能如上图所示, 那么: NFS服务搭建成功ls && cat nfsclient1.html
2.5 NFS Client2的搭建步骤与 2.3一模一样, 这里就不阐述了
3 可能存在的问题
-
因为mount命令的挂载是临时的, 当我们重启机器后, mount命令就会失效。
- 解决方案: 每次开机再挂载一遍 这里可以采用添加自定义service或者利用rc.local的方式实现, 这里就不阐述了
-
若突然发现
/share
容量不够, 改怎么办?- 解决方案:
- 加硬盘
- 将其他磁盘中剩余的空间分出一个区并将
/share
文件夹挂载于此
- 其实上面两种方案属于同一种, 即:
将/share文件夹挂载到容量大的磁盘中
- 解决方案:
4 以加硬盘的方式实现扩容
- 由于本次demo的三台服务器是虚拟机, 所以我们可以直接为虚拟机添加硬盘(使用VMware), 步骤如下(注: 因为两台client是共享于Host的文件夹, 所以要对Host的/share目录进行扩容):
-
将NFS Host虚拟机关机
-
并按照如下步骤进行添加硬盘
-
开机, 并执行如下命令
fdish -l
-
对硬盘进行分区和格式化(与window系统分盘一样), 分别执行如下操作
- fdisk /dev/sdb # /dev/sdb就是上图中红框中的第一行的信息
-
按照上述步骤操作后, 25G的区被分出来了, 我们要使用它还得先格式化。 获取新分出来区的路径:
fdisk -l
-
以ext3的格式格式化新建的分区:
mkfs.ext3 /dev/sdb1
-
执行挂载命令
mount /dev/sdb1 /share
-
查看结果
df -h
-
这个时候我们需要将
NFS Client1和NFS Client2
重新挂载下目录, 分别在两台机器中执行如下命令:mount -t nfs 192.168.111.133:/share /root/testshare
. 执行完后, 我们之前存储的文件夹就没了, 所以如果有重要文件, 则需要对NFS Client1和NFC Client2
的文件进行备份。 -
做完上述操作后, 我们可以用相同的方式进行测试, 在
NFS Client1
中新建一个文件, 并在NFS Host
中进行查看, 若能同步, 则表示NFS Host
扩容成功. -
同样的, 因为
NFS Host
也使用了mount命令, 所以也要对NFS Host
设置开机自动挂载机制。
-
三、总结
- 至此, NFS服务的搭建及测试就完成啦。在项目中使用NFS的案例也是蛮多的, 若项目没有足够的经费去购买
OSS
服务, 但项目中又要使用集群, 那么NFS是个实例间共享文件不错的选择 - I am a slow walker, but I never walk backwards.