NFS服务端和客户端搭建
本文转载自huweihuang博客
NFS简介
NFS(Network File System),网络文件系统。 NFS允许一个系统在网络上与他人共享目录和文件。 通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。
NFS安装与配置
服务端
服务端提供NFS
安装nfs-utils rpcbind
yum -y install nfs-utils rpcbind
创建共享目录
指定服务端共享目录:
mkdir /data/nfs-storage/
NFS共享目录文件配置
vi /etc/exports
#添加以下信息
/data/nfs-storage *(rw,insecure,sync,no_subtree_check,no_root_squash,fsid=0)
# 后续如果更改了该配置文件,重新生效命令如下
exportfs -rav
以上配置分为三个部分:
- 第一部分就是本地要共享出去的目录。
- 第二部分为允许访问的主机(可以是一个IP也可以是一个IP段),*代表允许所有的网段访问。
- 第三部分小括号里面的,为一些权限选项。
权限说明
- rw :读写;
- ro :只读;
- sync :同步模式,内存中数据时时写入磁盘;
- async :不同步,把内存中数据定期写入磁盘中;
- secure :nfs通过1024以下的安全TCP/IP端口发送
- insecure :nfs通过1024以上的端口发送
- no_root_squash :加上这个选项后,root用户就会对共享的目录拥有至高的权限控制,就像是对本机的目录操作一样。不安全,不建议使用;
- root_squash :和上面的选项对应,root用户对共享目录的权限不高,只有普通用户的权限,即限制了root;
- subtree_check :如果共享/usr/bin之类的子目录时,强制nfs检查父目录的权限(默认)
- no_subtree_check :和上面相对,不检查父目录权限
- all_squash :不管使用NFS的用户是谁,他的身份都会被限定成为一个指定的普通用户身份;
- anonuid/anongid :要和root_squash 以及 all_squash一同使用,用于指定使用NFS的用户限定后的uid和gid,前提是本机的/etc/passwd中存在这个uid和gid。
- fsid=num|root|uuid : NFS 需要能够识别它导出的每个文件系统。通常它会使用文件系统的 UUID(如果文件系统有这样的东西)或持有文件系统的设备的设备号(如果文件系统存储在设备上)。由于并非所有文件系统都存储在设备上,而且并非所有文件系统都有 UUID,因此有时需要明确告诉 NFS 如何识别文件系统。这是通过 fsid 选项完成的。对于 NFSv4,有一个可区分的文件系统,它是所有导出文件系统的root。这是用 fsid=root 或 fsid=0 指定的,两者的含义完全相同。其他文件系统可以用一个小整数或一个UUID来标识,它应该包含32个十六进制数字和任意标点符号。
启动NFS服务
#先启动rpcbind
systemctl start rpcbind
#后启动nfs
systemctl start nfs
#可以设置开机启动
systemctl enable rpcbind
systemctl enable nfs
服务端验证
如果showmount -e
能够正常显示共享目录,表示安装正常。
开放服务端端口
NFS使用2049、RPC bind使用111,还有mountd 20048
查看NFS版本
nfsstat -s
客户端
安装nfs-utils
yum install nfs-utils.x86_64 -y
创建挂载点
mkdir /mnt/store
查看NFS服务器共享
showmount -e 172.16.5.4
挂载
mount -t nfs <NFS_SERVER_IP>:<NFS_SERVER_SHARED_DIR> <NFS_CLIENT_MOUNT_DIR>
#例如:
mount -t nfs -o vers=3 172.16.5.4:/data/nfs-storage /mnt/store
# 如果挂载卡住了,可以在最后加-v来获取加载日志,从而排查挂载失败原因
mount -t nfs -o vers=3 172.16.5.4:/data/nfs-storage /mnt/store -v
验证是否挂载成功
mount |grep /mnt/store
df -h|grep nfs
#进入客户端的挂载目录,创建文件
cd /mnt/store
touch test.txt
#进入服务端的共享目录,查看客户端创建的文件是否同步
cd /data/nfs-storage
ls
查看NFS版本
nfsstat -c