1. NFS简介

NFS,是Network File System的简写,即网络文件系统。网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS. NFS允许一个系统在网络上与他人共享目录和文件。
通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。

2. NFS的安装与配置

2.1 服务端

NFS需要安装nfs-utils、rpcbind两个包。

  1. #可以先检查下本地是否已经安装,如果安装则无需重复安装包
  2. [root@k8s-dbg-master-1 build]# rpm -qa|grep rpcbind
  3. rpcbind-0.2.0-42.el7.x86_64
  4. [root@k8s-dbg-master-1 build]# rpm -qa|grep nfs
  5. libnfsidmap-0.25-17.el7.x86_64
  6. nfs-utils-1.3.0-0.48.el7_4.x86_64

2.1.1. 安装nfs-utils、rpcbind两个包

  1. #centos系统
  2. yum -y install nfs-utils rpcbind
  3. #Ubuntu系统
  4. #服务端
  5. apt-get install nfs-kernel-server
  6. #客户端
  7. apt-get install nfs-common

2.1.2. 创建共享目录

服务端共享目录:/data/nfs-storage/

  1. mkdir /data/nfs-storage/

2.1.3. NFS共享目录文件配置

  1. vi /etc/exports
  2. #添加以下信息
  3. /data/nfs-storage *(rw,insecure,sync,no_subtree_check,no_root_squash)

以上配置分为三个部分:

  • 第一部分就是本地要共享出去的目录。
  • 第二部分为允许访问的主机(可以是一个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。

2.1.4. 启动NFS服务

  1. #先启动rpcbind
  2. service rpcbind start
  3. #后启动nfs
  4. service nfs start
  5. #可以设置开机启动
  6. chkconfig rpcbind on
  7. chkconfig nfs on

2.1.5. 服务端验证

通过showmount -e命令如果正常显示共享目录,表示安装正常。

  1. [root@k8s-dbg-master-1 build]# showmount -e
  2. Export list for k8s-dbg-master-1:
  3. /data/nfs-storage *

2.2 客户端

2.2.1. 安装nfs-utils的包

  1. yum install nfs-utils.x86_64 -y

2.2.2. 创建挂载点

客户端挂载目录:/mnt/store

  1. mkdir /mnt/store

2.2.3. 查看NFS服务器的共享

  1. root@k8s-dbg-node-5:~# showmount -e 172.16.5.4
  2. Export list for 172.16.5.4:
  3. /data/nfs-storage *

2.2.4. 挂载

  1. mount -t nfs <NFS_SERVER_IP>:<NFS_SERVER_SHARED_DIR> <NFS_CLIENT_MOUNT_DIR>
  2. #例如:
  3. mount -t nfs 172.16.5.4:/data/nfs-storage /mnt/store

2.2.5. 验证挂载信息

使用mount命令

  1. root@k8s-dbg-node-5:~# mount |grep /mnt/store
  2. 172.16.5.4:/data/nfs-storage/k8s-storage/ssd on /mnt/store type nfs4 (rw,relatime,vers=4.0,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=172.16.200.24,local_lock=none,addr=172.16.5.4)

使用df -h命令

  1. root@k8s-dbg-node-5:~# df -h|grep nfs
  2. 172.16.5.4:/data/nfs-storage 40G 25G 13G 67% /mnt/store

创建文件测试

  1. #进入客户端的挂载目录,创建文件
  2. cd /mnt/store
  3. touch test.txt
  4. #进入服务端的共享目录,查看客户端创建的文件是否同步
  5. cd /data/nfs-storage
  6. ls