Linux配置NFS文件共享系统

NFS:网络文件系统,通过网络共享计算机资源,将NFS服务器的目录挂载到客户端中,客户端即可随时读写NFS服务器的文件,就像在访问本地文件夹一样。

服务端地址:192.168.234.128
客户端地址:192.168.234.130

在客户端和服务端同时安装nfs包:

[root@server ~]# yum -y install nfs-utils

在服务端编辑配置文件:

[root@server ~]# vi /etc/exports

添加如下内容:

/data/nfs 192.168.234.130(rw,sync,all_squash,anonuid=1000,anongid=1000)

配置选项说明:
/data/nfs 指定共享的目录,如不指定,有权限的客户端可以挂载所有目录
192.168.234.130:允许挂载目录的客户端地址,也可以定义一个网段192.168.234.0/24
rw:可读可写,与之对应的配置为ro(只读)
sync:同步模式,内存数据实时写入磁盘,与之对应的配置为async(非同步模式)
no_root_squash:客户端挂载NFS共享目录后,root用户对该目录不受约束,权限很大
root_squash:与上面选项相对,客户端上的root用户受到约束,被限定成某个普通用户
all_squash:客户端上所有用户在使用NFS共享目录时都被限定为一个普通用户
anonuid/anongid 和上面几个选项搭配使用,定义被限定用户的uid和gid(客户端访问NFS目录时,会变为uid为1000的普通用户)

在服务端创建NFS目录并赋权:

[root@server ~]# mkdir /data/nfs
[root@server ~]# chmod 777 /data/nfs/

启动rpcbind服务并设置为开机启动:

[root@server ~]# systemctl start rpcbind
[root@server ~]# systemctl enable rpcbind

#NFS文件通过rpc协议传输

启动NFS服务并设置为开机启动:

[root@server ~]# systemctl start nfs
[root@server ~]# systemctl enable nfs

在客户端测试:

[root@client ~]# showmount -e 192.168.234.128
Export list for 192.168.234.128:
/data/nfs 192.168.234.130

#已显示可挂载目录/data/nfs

在客户端挂载共享目录:

[root@client ~]# mount -t nfs 192.168.234.128:/data/nfs /mnt

#将服务器端(192.168.234.128)的共享目录/data/nfs挂载到/mnt

查看挂载结果:

[root@client ~]# df -h
文件系统                   容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root     18G  3.2G   15G   18% /
devtmpfs                   480M     0  480M    0% /dev
tmpfs                      492M     0  492M    0% /dev/shm
tmpfs                      492M   14M  478M    3% /run
tmpfs                      492M     0  492M    0% /sys/fs/cgroup
/dev/sda1                  197M  111M   87M   56% /boot
tmpfs                       99M     0   99M    0% /run/user/0
192.168.234.128:/data/nfs   18G  7.5G   11G   43% /mnt

#最后一行显示已经挂载成功

在客户端创建测试文件:

[root@client ~]# cd /mnt/
[root@client mnt]# touch 1.txt

在服务端查看结果:

[root@server ~]# ll /data/nfs/
总用量 0
-rw-r--r-- 1 linux01 linux01 0 11月  3 15:36 1.txt

exportfs命令介绍

常用参数:
-a 全部挂载或全部卸载
-r 重新挂载
-v 显示共享目录
-u 卸载某一个目录

使用场景:当nfs服务在运行中,且客户端正在写入或读取共享目录的数据,此时需要变更服务端配置文件/etc/exports,增加共享目录或客户端地址,变更后需要重启nfs服务使其生效,但为了不影响正在使用nfs服务的客户端,即可使用exportfs命令重新挂载使配置生效

示例:

变更配置文件,新增共享目录/tmp

[root@server ~]# echo "/tmp 192.168.234.130(rw,sync,no_root_squash)" >> /etc/exports

在不重启nfs的情况下重新挂载使配置文件生效

[root@server ~]# exportfs -arv
exporting 192.168.234.130:/tmp
exporting 192.168.234.130:/data/nfs

在客户端查看可挂载的共享目录:

[root@client /]# showmount -e 192.168.234.128
Export list for 192.168.234.128:
/tmp      192.168.234.130
/data/nfs 192.168.234.130 

#可挂载列表已显示tmp目录

补充:
在centos7以下版本使用NFS 4版本会出现客户端挂载共享目录后,不管是使用root用户还是普通用户创建新文件时,属主和属组会显示为nobody

解决方法1:客户端挂载时,指定nfs版本为3即可

示例:

[root@client /]# mount -t nfs -o nfsvers=3 192.168.234.128:/tmp nfs_test/

解决方法2:

编辑客户端和服务端的/etc/idmapd.conf文件,将Domain = local.domain.edu这行前面的注释符号#去掉,重启rpcbind服务即可(在centos6中为rpcidmap的服务)

发布了114 篇原创文章 · 获赞 851 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/Powerful_Fy/article/details/102882620