centos7简单搭建NFS NAS

背景

最近工作系统挂载了NAS,使用的NAS的叫做NFS的NAS。之前没搭建过,所以我打算基于Centos7虚拟机搭建NAS,实现简单存储功能

NAS:(Network Attached Storage:网络附属存储),支持如NFS、FTP等多种协议

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

步骤

搭建NFS server

  • 环境准备

虚拟机server:192.168.10.56

虚拟机client:192.168.10.57

系统环境:centos7

  • 安装NFS服务

nfs基于rpc实现,所以需要rpcbind包

yum -y install rpcbind nfs-utils
  • 创建共享目录

在服务器上创建共享目录,并设置777权限。

mkdir /data/share/
chmod 777 -R /data/share/
  • 配置NFS

nfs的配置文件是 /etc/exports ,在配置文件中加入一行:

[dyq94310@test ~]$ cat /etc/exports
/data/share/ 192.168.10.57(rw,no_root_squash,no_all_squash,sync)

这行代码的意思是把共享目录/data/share/共享给192.168.10.57这个客户端ip,后面括号里的内容是权限参数,其中:

rw 表示设置目录可读写。

sync 表示数据会同步写入到内存和硬盘中,相反 rsync 表示数据会先暂存于内存中,而非直接写入到硬盘中。

no_root_squash NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。

no_all_squash 不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都不会拥有匿名用户权限。

如果有多个共享目录配置,则使用多行,一行一个配置。保存好配置文件后,需要执行以下命令使配置立即生效:

exportfs -r
  • 防火墙

修改/etc/sysconfig/nfs文件,将下列内容的注释去掉,如果没有则添加:

RQUOTAD_PORT=1001
LOCKD_TCPPORT=30001
LOCKD_UDPPORT=30002
MOUNTD_PORT=1002

保存好后,将端口加入到防火墙允许策略中。执行:

firewall-cmd --zone=public --add-port=111/tcp --add-port=111/udp --add-port=2049/tcp --add-port=2049/udp --add-port=1001/tcp --add-port=1001/udp --add-port=1002/tcp --add-port=1002/udp --add-port=30001/tcp --add-port=30002/udp --permanent
firewall-cmd --reload

redhat参考文档

我是防火墙关闭,为了避免干扰

  • 启动服务
systemctl start rpcbind
systemctl status nfs-server

服务器的后,我们可以使用 showmount 命令来查看服务端(本机)是否可连接:

[dyq94310@test ~]$ showmount -e 127.0.0.1
Export list for 127.0.0.1:
/data/share 192.168.10.57

客户端

centos默认自带了nfs程序,无需再手动安装。直接挂载即可

showmount -e 服务器ip查看服务端已共享的目录

[dyq94310@57 ~]$ showmount -e 192.168.10.57
clnt_create: RPC: Program not registered
[dyq94310@57 ~]$ showmount -e 192.168.10.56
Export list for 192.168.10.56:
/data/share 192.168.10.57

挂载共享盘

mount -t nfs 192.168.10.56:/data/share /mnt/share/

此挂载是一次性得,在重启后会失效。若想永久有效,需要修改\etc\fstab

最后挂载的结果,对于权限和大小我都没做控制,因为暂时也用不上

centos如何搭建docker centos如何搭建nas_服务端

遇到问题

device is busy

卸载时候,遇到设备正忙

[root@57 share]# umount /mnt/share
umount.nfs4: /mnt/share: device is busy

device is busy到对应对应得进程id,kill -9解决

参考文档

CentOS 7中搭建NFS文件共享存储服务的完整步骤