声明:本文乃“运维家”原创,转载请注明出处,更多内容请关注公众号“运维家”。
主旨
一个服务器B磁盘不够,另一个服务器A磁盘用不完,这种情况如何将服务器B的磁盘给服务器A用呢?下面看我如何操作。
环境
nfs服务端A:192.168.112.130
nfs使用者B:192.168.112.131
安装NFS
服务端和使用者都需要安装nfs,即服务端和使用者都需要进行此步骤。安装完之后一定要记得配置开机自启动,不然后面万一服务器被重启了,我们还需要手动恢复,争取不给自己这个手动恢复的机会,一次搞定最好。
[yunweijia@localhost ~]$ sudo yum -y install rpcbind nfs-utils
[yunweijia@localhost ~]$ sudo systemctl start rpcbind
[yunweijia@localhost ~]$ sudo systemctl enable rpcbind
[yunweijia@localhost ~]$ sudo systemctl start nfs-server
[yunweijia@localhost ~]$ sudo systemctl enable nfs-server
[yunweijia@localhost ~]$ sudo netstat -tunlp | grep 2049
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -
tcp6 0 0 :::2049 :::* LISTEN -
udp 0 0 0.0.0.0:2049 0.0.0.0:* -
udp6 0 0 :::2049 :::* -
[yunweijia@localhost ~]$
查看共享
该步骤在使用者B操作;
先将命令给予让sudo可以使用,这个在之前的文章中有说到具体原理;
[yunweijia@localhost yum.repos.d]$ sudo which showmount
/sbin/showmount
[yunweijia@localhost yum.repos.d]$ sudo visudo
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/python3/bin:/sbin
[yunweijia@localhost yum.repos.d]$
在使用者B上进行查看共享,命令如下;
[yunweijia@localhost ~]$ sudo showmount -e 192.168.112.130
Export list for 192.168.112.130:
[yunweijia@localhost ~]$
从上面返回结果来看是空,说明服务端还没有进行共享;
服务端共享目录
该步骤在服务端A操作;
将服务端的 “/data” 目录共享出去,以供使用者B使用该目录;
[yunweijia@localhost ~]$ sudo mkdir -pv /data
mkdir: 已创建目录 "/data"
[yunweijia@localhost ~]$ sudo vim /etc/exports
/data/ 192.168.112.131(rw,no_root_squash)
[yunweijia@localhost ~]$ sudo exportfs -rv # 重新加载配置文件
exporting 192.168.112.131:/data
[yunweijia@localhost ~]$
参数解释:
/data/ 192.168.112.131(rw,no_root_squash)
/data/ 共享哪个目录出去,可以写多行,也就是共享多个目录
192.168.112.131 共享给谁使用,也可以是192.168.112.* 这个网段,也可以直接使用 * 表示共享给所有IP使用
权限:
ro:只读
rw:可读可写
sync:同步写入内存和磁盘中
no_all_squash:保留共享文件的UID和GID(默认)
no_root_squash:使得root用户具有根目录的完全访问权限
使用者接受共享
该步骤在使用者B操作;
先查看下共享,是不是显示已经有了共享目录;
[yunweijia@localhost ~]$ sudo showmount -e 192.168.112.130
Export list for 192.168.112.130:
/data 192.168.112.131
[yunweijia@localhost ~]$
从上面看已经可以看到具体共享了,这个时候我们将服务端共享的目录挂载到使用者B上;
[yunweijia@localhost ~]$ sudo mount -t nfs 192.168.112.130:/data/ /123/
[yunweijia@localhost ~]$ df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 17G 11G 6.7G 62% /
devtmpfs 895M 0 895M 0% /dev
tmpfs 911M 0 911M 0% /dev/shm
tmpfs 911M 9.9M 901M 2% /run
tmpfs 911M 0 911M 0% /sys/fs/cgroup
/dev/sda1 1014M 170M 845M 17% /boot
tmpfs 183M 0 183M 0% /run/user/1000
192.168.112.130:/data 17G 11G 6.7G 62% /123
[yunweijia@localhost ~]$
从上图我们可以看到成功挂载了;
测试挂载
在nfs使用者B中,使用root用户新建文件;
PS:这里说明一下,为什么一定要切换到root用户测试,因为这个目录的权限,只能是root用户,我们在创建共享的时候指定了就是root用户,所以我们必须切换到root,不然会提示没有权限。
[yunweijia@localhost ~]$ su root
密码:
[root@localhost yunweijia]# cd /123/
[root@localhost 123]# echo "yunweijia" > test.txt
[root@localhost 123]# ls
test.txt
[root@localhost 123]#
看看nfs服务端A上有没有;
[yunweijia@localhost ~]$ cd /data/
[yunweijia@localhost data]$ ls
test.txt
[yunweijia@localhost data]$ cat test.txt
yunweijia
[yunweijia@localhost data]$
反之,你在nfs服务端A的 “/data/” 目录中创建的文件,使用者B在 “/123/” 目录中也能看到。
永久挂载
虽然上面我们测试通过了,但是一旦使用者B被重启了,那么挂载就掉了,掉了之后数据写哪儿去?这个是非常重要的,所以我们要保证他要一直存在,所以我们将配置磁盘永久挂载。
该操作在使用者B上进行。
[yunweijia@localhost ~]$ sudo vim /etc/fstab
192.168.112.131:/data /html nfs defaults 0 0
[yunweijia@localhost ~]$
至此,本文结束。欢迎各位老板后台留言改进意见,或者想看的内容。