less than 1 minute read

本文转载自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

Tags:

Categories:

Updated: