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的服务)