前言
- 本篇来学习下NFS共享存储的安装配置
什么是共享存储
- 多台服务器的数据保存在同一个存储服务器上。这样无论用户请求在哪一台服务器上看到的数据都是一样的
什么是NFS
- NFS Network File System 网络文件系统。
- NFS 主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录
NFS安装配置
NFS服务端
- 更新源文件
sudo apt update sudo apt upgrade
- 安装nfs服务器软件
sudo apt install nfs-kernel-server
- 创建共享目录
sudo mkdir -p /nfs_share
- 修改共享目录访问权限
sudo chown nobody:nogroup /nfs_share sudo chmod 755 /nfs_share
- 配置NFS导出
# 编辑 /etc/exports 文件以定义要共享的目录和允许访问的客户端 sudo vim /etc/exports # 将以下内容添加到文件中,替换 <client_IP> 为客户端的IP地址(或使用通配符*允许所有IP访问)/nfs_share 为上一步骤创建的共享目录 /nfs_share <client_IP>(rw,sync,no_subtree_check)
- NFS配置权限设置常用参数说明
参数 | 说明 |
rw | read-write,表示可读写权限 |
ro | read-only,只读 |
sync | 请求或写入数据时,数据同步写入到NFS Server的硬盘后才返回。优点:数据安全不会丢;缺点:性能比不启用该参数要差。 |
async | 写入时数据会先写到内存缓冲区,只到硬盘有空档才会再写入磁盘,这样可以提升写入效率!风险为若服务器宕机或不正常关机,会损失缓冲区中未写入磁盘的数据(解决办法:服务器主板电池或加UPS不间断电源) |
no_root_squash | 访问NFS Server共享目录的用户如果是root的话,它对该共享目录具有root权限。这个配置原本是为无盘客户端准备的。用户应避免使用! |
root_squash | 如果访问NFS Server共享目录的用户是root,则它的权限将被压缩成匿名用户,同时它的UID和GID通常会变成nfsnobody帐号身份。 |
all_squash | 所有访问用户都映射为匿名用户或用户组。 |
subtree_check | 默认, 若输出目录是一个子目录,则nfs服务器将检查其父目录的权限。 |
no_subtree_check | 即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率。 |
anonuid=xxx | 指定NFS服务器/etc/passwd文件中匿名用户的UID |
anongid=xxx : | 指定NFS服务器/etc/ passwd文件中匿名用户的GID |
- 更新配置并重启服务
sudo exportfs -ra sudo systemctl restart nfs-kernel-server
NFS客户端
- 安装客户端软件包
sudo apt install nfs-common
- 创建挂载点
sudo mkdir -p /mnt/nfs_share
- 挂载NFS共享到挂载点。将 <server_IP> 替换为NFS服务器的IP地址
sudo mount <server_IP>:/nfs_share /mnt/nfs_share
- 查看挂载信息
df -h
- 设置开机自动挂载
# 下面内容添加到 /etc/fstab <server_IP>:/nfs_share /mnt/nfs_share nfs auto,noatime,nolock,bg,nfsvers=4,sec=sys,ro,soft,intr 0 0
其他
注意
- 执行挂载命令时不能在挂载目录下执行
其他命令
# 软件版本 nfsstat --version # 查看服务器和客户端版本 1.NFS的客户端中:nfsstat -m 中的vers=4.0确定NFS版本是4。 2.NFS服务器中:nfsstat -s 中的Server nfs v4确定NFS版本的确是4