NFS 环境搭建

发布时间: 更新时间: 总字数:733 阅读时间:2m 作者: 分享 复制网址

网络文件系统(NFS, Network File System)是一种分布式文件系统,目的是让客户端主机访问服务器端文件,并且过程时与访问本地存储是一样。

说明

NFS 服务端和客户端服务均依赖于 rpcbindrpcbind 是一个将 RPC(Remote Procedure Call,远程过程调用) 程序编号转换为通用地址的服务,RPC 调用依赖 rpcbind 服务。

服务:

  • rpc.nfsd NFS主进程,通过 systemctl start nfs-utils.service 启动,监听 TCP/UDP 2049 端口
  • rpc.mountd 监听在 TCP/UDP 20048 端口
  • rpc.lockd(可选,防止多个客户端同时写入一个文件)
  • rpc.statd(可选,负责数据的状态及一致性检查)
  • rpcbind 依赖进程,通过 systemctl start rpcbind.service 启动,监听在 TCP/UDP 20048 端口

配置文件:

  • /etc/nfs.conf
  • /etc/nfsmount.conf

部署

本次部署直接关闭防火墙:

systemctl stop firewalld
systemctl disable firewalld

服务端安装

# CentOS
yum install -y nfs-utils

# Ubuntu
apt install nfs-kernel-server

注意:安装 nfs-utils 时,会自动安装 rpcbind

  • 启动
systemctl enable rpcbind.service
systemctl enable nfs-server.service

systemctl start rpcbind.service
systemctl start nfs-server.service
  • 配置共享目录

/etc/exports 文件中一行表示一个共享目录。格式如下:

共享目录路径   IP或主机名1(选项1,选项2,...)  IP或主机名2(选项1,选项3,...)   ...

选项说明:

选项 功能
ro 以只读方式共享(默认)
rw 以读写方式共享
sync 客户端写入的数据立即写入到磁盘中(默认)
async 客户端写入的数据先写入到内存中,再写入磁盘中
root_squash 把 root 用户映射为匿名用户(默认)
no_root_squash 允许使用 root 用户
all_squash 把所有用户映射为匿名用户
anonuid=<UID> 指定匿名用户的 UID
anongid=<GID> 指定匿名用户的 GID
secure 允许客户端使用小于 1024 的端口连接
insecure 允许客户端使用大于 1024 的端口连接
subtree_check 共享子目录时,强制检查父目录权限(默认)
no_subtree_check 不检查父目录权限
wdelay 多个用户要写入NFS目录,则归组写入(默认)
no_wdelay 多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置

示例:

$ cat /etc/exports
/home *(rw,no_subtree_check,fsid=10,no_root_squash)
/opt 10.0.0.1(rw,all_squash) 10.0.0.2(ro,no_root_squash)

注意:

  • 配置后需要重启 systemctl restart nfs-server 或执行 exportfs -rv 或执行 exportfs -a
  • 查看 nfs 暴露的端口
$ showmount -e <nfs-server>

$ showmount -e 172.20.100
Export list for 172.20.100:
/home *
/opt  10.0.0.2,10.0.0.1

客户端

  • 依赖包按照
yum install nfs-utils
  • 临时mount
mount.nfs 172.20.0.100:/home /mnt/
  • 通过 fstab 挂载
echo "172.20.0.100:/home /home nfs nfsvers=3,nodev,nosuid 0 0" >> /etc/fstab
mount -a
最新评论
加载中...
Home Archives Categories Tags Statistics