前言

  • 因工作需要,需要从零通过虚拟机搭建一台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协议的流程如下:
      1. 客户端向NFS服务器发送一个写请求,请求在挂载目录中创建新文件。
      1. 服务器接收到请求后,检查客户端的权限,如果有权限,则创建新文件并返回成功响应。
      1. 客户端在本地创建新文件,并将数据写入该文件。
      1. 客户端向NFS服务器发送一个写请求,请求将新文件的数据写入到服务器上。
      1. 服务器接收到请求后,将数据写入到新文件中,并返回成功响应。
      1. 客户端在本地缓存新文件的副本,以便在后续的访问中提高性能。

参考

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐