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
我是防火墙关闭,为了避免干扰
- 启动服务
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
最后挂载的结果,对于权限和大小我都没做控制,因为暂时也用不上
遇到问题
device is busy
卸载时候,遇到设备正忙
[root@57 share]# umount /mnt/share
umount.nfs4: /mnt/share: device is busy
device is busy
到对应对应得进程id,kill -9解决
参考文档