前言
什么是共享存储
- 多台服务器的数据保存在同一个存储服务器上。这样无论用户请求在哪一台服务器上看到的数据都是一样的
什么是NFS
- NFS Network File System 网络文件系统。
- NFS 主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录
NFS安装配置
NFS服务端
sudo apt update
sudo apt upgrade
sudo apt install nfs-kernel-server
sudo mkdir -p /nfs_share
sudo chown nobody:nogroup /nfs_share
sudo chmod 755 /nfs_share
sudo vim /etc/exports
/nfs_share <client_IP>(rw,sync,no_subtree_check)
参数 | 说明 |
---|
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
<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