NFS(Network File System)是一种分布式文件系统协议,最初由 Sun Microsystems 开发,并于1984年发布。它允许不同主机通过网络共享文件和目录,就像这些文件和目录是本地存储的一部分。
1.安装 NFS 服务端
在需要共享文件的服务器上安装 NFS 服务端:
更新列表
安装nfs
sudo apt install -y nfs-kernel-server
2. 创建共享目录
创建一个目录作为 NFS 共享目录(例如/data /nfs_share):
sudo mkdir -p /data/nfs_share
设置共享目录的权限(确保其他用户可以访问):
sudo chmod 777 /data/nfs_share
3. 配置 NFS 共享
编辑 NFS 配置文件 /etc/exports,添加共享目录的配置:
在文件中添加以下内容(根据需要修改):
/data/nfs_share *(rw,sync,no_all_squash,no_root_squash,no_subtree_check)
参数解释:
/data/nfs_share:共享的目录路径。
*:允许访问的客户端 IP 范围,*表示所有ip(可以根据实际情况修改,例如:192.168.1.0/24)。
rw:允许读写权限。
sync:同步写入磁盘。
no_all_squash,不将所有用户映射为匿名用户
no_root_squash,允许客户端的 root 用户以 root 身份访问
no_subtree_check:减少子树检查,提高性能。
注意:K8S挂载NFS,请确保no_all_squash,no_root_squash这2个参数必须存在!!!
否则会出现文件无法写入的情况
4. 导出共享目录
运行以下命令使配置生效:
5. 启动 NFS 服务
启动 NFS 服务并设置开机自启:
sudo systemctl start nfs-kernel-server
sudo systemctl enable nfs-kernel-server
6. 安装 NFS 客户端
在需要挂载共享目录的客户端上安装 NFS 客户端:
sudo apt update
sudo apt install -y nfs-common
7. 挂载共享目录(客户端)
在客户端上挂载 NFS 服务端的共享目录:
sudo mkdir -p /mnt/nfs_share
sudo mount -t nfs 10.0.2.15:/data/nfs_share /mnt/nfs_share
参数解释:
10.0.2.15:NFS 服务端的 IP 地址。
/data/nfs_share:服务端的共享目录。
/mnt/nfs_share:客户端的挂载点。
验证挂载是否成功:
# df -hT|grep nfs
10.0.2.15:/data/nfs_share nfs4 49G 14G 34G 29% /mnt/nfs_share
有一条挂载信息,就说明挂载成功了
查看文件
8.配置自动挂载(可选)
如果希望在客户端开机时自动挂载 NFS 共享目录,可以编辑 /etc/fstab 文件:
添加以下内容:
10.0.2.15:/data/nfs_share /mnt/nfs_share nfs defaults 0 0
保存并退出编辑器。
9. 防火墙配置(可选)
如果服务端或客户端启用了防火墙,需要允许 NFS 服务通过:
或者手动允许 NFS 使用的端口(默认是 2049):
10. 测试和验证
在服务端创建一个测试文件:
echo "Hello from NFS server" | sudo tee /data/nfs_share/test.txt
在客户端检查是否可以访问该文件:
cat /mnt/nfs_share/test.txt
如果显示 Hello from NFS server,说明 NFS 配置成功。
常见问题
1.权限问题:确保共享目录的权限设置正确(如777)。
2.防火墙问题:检查防火墙是否阻止了 NFS 的端口(2049)。
3.挂载失败:
检查服务端的/etc/exports 配置是否正确,并运行sudo exportfs -ra 重新导出。
4.网络问题:
确保客户端和服务端的网络连接正常。
通过以上步骤,你就可以在 Ubuntu 上成功安装和配置 NFS 了!