部署问题集合(二十一)从零开始搭建一台NAS服务器(Linux虚拟机),并解决数据不同步问题
前言
因工作需要,需要从零通过虚拟机搭建一台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服务器发送一个写请求,请求将新文件的数据写入到服务器上。
服务器接收到请求后,将数据写入到新文件中,并返回成功响应。
客户端在本地缓存新文件的副本,以便在后续的访问中提高性能。
参考
NFS和NAS的关系Linux服务器之间如何设置共享目录nfs挂载报错:mount: wrong fs type, bad option, bad superblock on*关于RedHat7使用yum命令时出现:Loaded plugins: product-id, refresh-packagekit, security, subscription-managerLinux创建并挂载NASnas取消挂载程序中如何解决NFS文件系统的缓存问题?ECS实例挂载同一NFS文件系统出现数据不同步的情况