部署问题集合(二十一)从零开始搭建一台NAS服务器(Linux虚拟机),并解决数据不同步问题
从零开始搭建NAS服务器
·
前言
- 因工作需要,需要从零通过虚拟机搭建一台NAS服务器,以此记录下来
步骤
1、创建虚拟机
- 通过VMWare创建一台新虚拟机,虚拟机内存和磁盘自定义,不过建议尽量大一点
2、服务器端配置
- 查看是否安装有NFS服务:
rpm -qa|grep nfs
- 如果没有安装,上述命令执行后没啥反应,则安装NFS服务:
yum -y install nfs-utils prcbind
- 若执行yum命令时报错:Loaded plugins: product-id, refresh-packagekit, security, subscription-manager,则执行如下命令
#更换yum源,若为centos6则把以下命令的7换成6:
cd /etc/yum.repos.d/
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
vi CentOS-Base.repo
#编辑文件,把文件里面的$releasever全部替换为版本号:7,最后保存!
:%s/$releasever/7/g #执行该命令可一键更新
:wq
#清除原有缓存,重建缓存
yum clean all
yum makecache
#然后就可以使用yum命令了
- 创建共享目录:
mkdir /sharedata
- 赋予读写权限:
chmod -R 777 /sharedata
- 修改配置文件/etc/exports:
- /sharedata是服务器端要共享出来的目录,192.168.10.110是客户端的ip,rw代表客户端可以对共享目录进行读写操作
- 如果不加上insecure参数的话,在挂载共享目录时,可能会提示如下错误:mount.nfs:access denied by server while mounting
vi /etc/exports
/sharedata 192.168.10.110(rw,insecure)
- 启动NFS服务:
systemctl start nfs
- netstat可用来查看目前已经启动的服务,service可以用来立即启动某个服务。chkconfig用来设置服务在开机的时候自动启动。
- 设置NFS服务开机自启:
chkconfig nfs on
- 关闭防火墙:
systemctl stop firewalld
3、客户端配置
- 创建挂载目录:
mkdir /sharedata
- 赋予读写权限:
chmod -R 777 /sharedata
- 挂载共享目录:
mount 192.168.10.109:/sharedata /sharedata
- 命令格式:# mount NFS服务器ip:共享目录 本地挂载点目录
- 注意挂载后,本地该目录下原有的文件会被遮盖,取消挂载后会再次出现;挂载客户端用的磁盘是服务器的,不占用客户端磁盘,只是在读写时占用io
- 若挂载报错:mount: wrong fs type, bad option, bad superblock on***,执行如下命令
yum install nfs-common #若该命令报错,则执行如下命令,我用的就是第二个
或yum install -y nfs-utils
- 验证是否挂载成功:
#新建文件
mkdir share
#或查看挂载
df -h
4、客户端开机自启
- 给自启动配置加执行权限:
chmod 755 /etc/rc.d/rc.local
- 修改配置文件rc.local,在文件最后增加启动配置:
vi /etc/rc.local
#在文件最后添加
mount 192.168.10.109:/sharedata /sharedata
- 测试开机自启:
#重启
reboot
#查看挂载
df -h
5、数据不同步问题
- 问题描述:两台客户端挂载同一台服务器,另一台服务器无法立刻读取到数据,需要一定时间后才能获取到数据
- 问题原因:挂载使用的mount命令为:mount /mnt/,对于在ECS B实例上以这一方式挂载的NFS文件系统,默认情况下Kernel对文件和目录的属性维护了一份metadata缓存,文件和目录属性(包括许可权、大小、和时间戳)缓存的目的是减少NFSPROC_GETATTR远程过程调用(RPC)的需求。
- 解决方案:
- 挂载时使用如下参数:
mount -o actimeo=1 ip:/sharedata /sharedata
,此选项将设置NFS客户机上缓存目录和文件属性的秒数为1秒,即每隔1秒重新加载缓存 - 或:
mount -o noac ip:/sharedata /sharedata
,此选项将防止NFS客户机缓存挂载目录的属性
- 挂载时使用如下参数:
其他
- 取消挂载:
umount /sharedata
- 设备忙时:
umount -l /sharedata
,卸载前检查占用该挂载文件的程序并迅速kill掉
- 设备忙时:
- 当客户端在挂载目录中新增一个文件时,NFS协议的流程如下:
-
- 客户端向NFS服务器发送一个写请求,请求在挂载目录中创建新文件。
-
- 服务器接收到请求后,检查客户端的权限,如果有权限,则创建新文件并返回成功响应。
-
- 客户端在本地创建新文件,并将数据写入该文件。
-
- 客户端向NFS服务器发送一个写请求,请求将新文件的数据写入到服务器上。
-
- 服务器接收到请求后,将数据写入到新文件中,并返回成功响应。
-
- 客户端在本地缓存新文件的副本,以便在后续的访问中提高性能。
-
参考
更多推荐
已为社区贡献7条内容
所有评论(0)