欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux NFS 搭建与配置

程序员文章站 2022-06-16 11:25:25
...
一、NFS 介绍

NFS 是 Network FileSystem 的缩写,顾名思义就是网络文件存储系统,它最早是由 Sun 公司发展出来的,也是 FreeBSD 支持的文件系统中的一个,它允许网络中的计算机之间通过 TCP/IP 网络共享资源。通过 NFS,我们本地 NFS 的客户端应用可以透明地读写位于服务端 NFS 服务器上的文件,就像访问本地文件一样方便。简单的理解,NFS 就是可以透过网络,让不同的主机、不同的操作系统可以共享存储的服务。

NFS 的基本原则是“容许不同的客户端及服务端通过一组RPC分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。

二、nfs服务器部署

yum install nfs-utils rpcbind -y

2、NFS服务器操作
# mkdir -p /app/k8s        ##NFS挂载目录
# chmod 777 -R /app/k8s
# systemctl start rpcbind  ##启动rpc服务
# systemctl enable rpcbind
# systemctl start nfs      ##启动NFS服务
# systemctl enable nfs
## NFS默认配置文件路径是:/etc/exports
## /etc/exports配置文件的格式是:
## NFS共享的目录    NFS客户端地址(参数1,参数2)
## NFS共享的目录:为NFS服务器端要共享的实际目录,要用决定路径,如(/data)。注意共享目录的本地权限,需要读写权限,一定要让本地目录可以被NFS客户端的用户读写
## NFS客户端地址:为NFS服务器端授权的可访问的共享目录的NFS客户端地址,可以为单独的ip地址或者主机名,域名等,也可以是整个网段的地址
# echo "/app/k8s  192.101.11.159(rw,no_root_squash,sync)" >>/etc/exports   ##NFS 客户端IP 192.101.11.159
# echo "/app/k8s  192.101.11.160(rw,no_root_squash,sync)" >>/etc/exports   ##NFS 客户端IP 192.101.11.160
# echo "/app/k8s  192.101.11.161(rw,no_root_squash,sync)" >>/etc/exports   ##NFS 客户端IP 192.101.11.161
# echo "/app/k8s  192.101.10.0/24(rw,no_root_squash,sync)" >>/etc/exports   ##NFS 客户端IP 192.101.10.0---192.101.10.255
# exportfs -r     #使配置生效
# systemctl restart nfs
# systemctl status nfs

注意:必须要先启动rpc服务,然后再启动NFS服务

# 查看 NFS 服务项 rpc 服务器注册的端口列表
$ rpcinfo -p localhost

# 服务端看下是否正确加载了设置的 /etc/exports 配置
$ showmount -e localhost
Export list for localhost:
/app/k8s 192.101.11.161,192.101.11.160,192.101.11.159

参数说明:
ro                  只读访问
rw                  读写访问
sync              所有数据在请求时写入共享
async              nfs 在写入数据前可以响应请求
secure              nfs 通过 1024 以下的安全 TCP/IP 端口发送
insecure          nfs 通过 1024 以上的端口发送
wdelay              如果多个用户要写入 nfs 目录,则归组写入(默认)
no_wdelay          如果多个用户要写入 nfs 目录,则立即写入,当使用 async 时,无需此设置
hide              在 nfs 共享目录中不共享其子目录
no_hide              共享 nfs 目录的子目录
subtree_check      如果共享 /usr/bin 之类的子目录时,强制 nfs 检查父目录的权限(默认)
no_subtree_check     不检查父目录权限
all_squash          共享文件的 UID 和 GID 映射匿名用户 anonymous,适合公用目录
no_all_squash      保留共享文件的 UID 和 GID(默认)
root_squash root     用户的所有请求映射成如 anonymous 用户一样的权限(默认)
no_root_squash root 用户具有根目录的完全管理访问权限
anonuid=xxx 指定 nfs 服务器 /etc/passwd 文件中匿名用户的 UID
anongid=xxx 指定 nfs 服务器 /etc/passwd 文件中匿名用户的 GID


三、NFS客户端部署

yum install nfs-utils rpcbind -y    ##不需要启动nfs服务

4、NFS客户端操作
# mkdir -p /app/k8s            ##挂载NFS目录
# systemctl start rpcbind     
# systemctl enable rpcbind
# mount -t nfs 192.101.11.156:/app/k8s /app/k8s
# df -h | grep 192.101.11.156
192.101.11.156:/app/k8s   98G   39G   60G  40% /app/k8s
## 卸载已挂载的NFS共享目录
# umount /app/k8s

四、启动自动挂载nfs文件

格式:
<server>:</remote/export> </local/directory> nfs < options> 0 0

# vi /etc/fstab
192.101.11.156:/app/k8s                  /app/k8s                 nfs      defaults        0 0

保存退出,重启系统,查看/app/k8s 有没有自动挂载
# df -h | grep 192.101.11.156
192.101.11.156:/app/k8s   98G   39G   60G  40% /app/k8s


五、相关命令

1、exportfs

如果我们在启动了NFS之后又修改了/etc/exports,是不是还要重新启动nfs呢?这个时候我们就可以用exportfs 命令来使改动立刻生效,该命令格式如下:

  # exportfs [-aruv]

  -a 全部挂载或卸载 /etc/exports中的内容
  -r 重新读取/etc/exports 中的信息 ,并同步更新/etc/exports、/var/lib/nfs/xtab
  -u 卸载单一目录(和-a一起使用为卸载所有/etc/exports文件中的目录)
  -v 在export的时候,将详细的信息输出到屏幕上。

具体例子:
  # exportfs -au 卸载所有共享目录
  # exportfs -rv 重新共享所有目录并输出详细信息

2、nfsstat

查看NFS的运行状态,对于调整NFS的运行有很大帮助。

3、rpcinfo
查看rpc执行信息,可以用于检测rpc运行情况的工具,利用rpcinfo -p 可以查看出RPC开启的端口所提供的程序有哪些。

4、showmount

  -a 显示已经于客户端连接上的目录信息
  -e IP或者hostname 显示此IP地址分享出来的目录

5、netstat

可以查看出nfs服务开启的端口,其中nfs 开启的是2049,portmap 开启的是111,其余则是rpc开启的。

最后注意两点,虽然通过权限设置可以让普通用户访问,但是挂载的时候默认情况下只有root可以去挂载,普通用户可以执行sudo。

NFS server 关机的时候一点要确保NFS服务关闭,没有客户端处于连接状态!通过showmount -a 可以查看,如果有的话用kill killall pkill 来结束,(-9 强制结束)










相关标签: nfs