Loading... 在 Ubuntu 上安装 NFS(Network File System)可以让你在网络中共享目录,使多个系统能够挂载同一文件系统。这种方式非常适合跨服务器共享数据。下面是详细的安装和配置步骤,包括 NFS 服务器和客户端的设置。 ## 1. NFS 服务器端配置 ### 1.1 安装 NFS 服务器软件 首先,在要配置为 NFS 服务器的 Ubuntu 系统上安装 NFS 服务器包 `nfs-kernel-server`。 ```bash sudo apt update sudo apt install nfs-kernel-server ``` **解释**: - `sudo apt update` 更新软件包列表,确保获取最新的安装包版本。 - `sudo apt install nfs-kernel-server` 安装 NFS 服务器软件包。 ### 1.2 创建共享目录 在 NFS 服务器上,创建一个目录,用于共享给客户端。假设我们创建一个共享目录 `/srv/nfs/share`。 ```bash sudo mkdir -p /srv/nfs/share sudo chown nobody:nogroup /srv/nfs/share sudo chmod 755 /srv/nfs/share ``` **解释**: - `sudo mkdir -p /srv/nfs/share` 创建共享目录。 - `sudo chown nobody:nogroup /srv/nfs/share` 将目录的所有者和用户组设置为 `nobody` 和 `nogroup`,这是 NFS 默认的非特权用户。 - `sudo chmod 755 /srv/nfs/share` 设置目录的权限,使其对所有用户可读并且目录所有者可以写入。 ### 1.3 配置 NFS 导出目录 编辑 NFS 导出的配置文件 `/etc/exports`,将你想要共享的目录添加到其中。 ```bash sudo vi /etc/exports ``` 在文件末尾添加如下内容: ```ini /srv/nfs/share 192.168.1.0/24(rw,sync,no_subtree_check) ``` **解释**: - `/srv/nfs/share` 是要共享的目录。 - `192.168.1.0/24` 指定允许访问该共享目录的客户端网络地址范围(例如:192.168.1.0 到 192.168.1.255)。 - `rw` 允许客户端具有读写权限。 - `sync` 确保数据同步写入磁盘,保证数据一致性。 - `no_subtree_check` 禁用子树检查,提升性能。 保存并退出编辑器。 ### 1.4 启动并启用 NFS 服务 编辑完成后,启动 NFS 服务并让它开机自动启动: ```bash sudo systemctl restart nfs-kernel-server sudo systemctl enable nfs-kernel-server ``` **解释**: - `sudo systemctl restart nfs-kernel-server` 启动或重启 NFS 服务器服务。 - `sudo systemctl enable nfs-kernel-server` 将 NFS 服务设为开机自动启动。 ### 1.5 配置防火墙(可选) 如果服务器上启用了防火墙(如 `ufw`),需要开放 NFS 服务所需的端口: ```bash sudo ufw allow from 192.168.1.0/24 to any port nfs ``` **解释**: - `sudo ufw allow from 192.168.1.0/24 to any port nfs` 允许客户端网络访问 NFS 服务器的 NFS 端口。 ## 2. NFS 客户端配置 ### 2.1 安装 NFS 客户端软件 在需要挂载 NFS 共享的 Ubuntu 客户端上,安装 NFS 客户端软件包 `nfs-common`。 ```bash sudo apt update sudo apt install nfs-common ``` **解释**: - `sudo apt install nfs-common` 安装 NFS 客户端软件包,用于与 NFS 服务器交互。 ### 2.2 挂载 NFS 共享 创建一个目录作为挂载点,然后通过 NFS 将服务器的共享目录挂载到本地。 ```bash sudo mkdir -p /mnt/nfs/share sudo mount 192.168.1.10:/srv/nfs/share /mnt/nfs/share ``` **解释**: - `sudo mkdir -p /mnt/nfs/share` 在客户端创建挂载目录。 - `sudo mount 192.168.1.10:/srv/nfs/share /mnt/nfs/share` 将服务器 `192.168.1.10` 的共享目录 `/srv/nfs/share` 挂载到客户端的 `/mnt/nfs/share`。 ### 2.3 验证挂载 使用 `df -h` 命令查看挂载情况,确认 NFS 共享是否正确挂载: ```bash df -h ``` **解释**: - `df -h` 显示挂载的文件系统及其使用情况,检查 NFS 共享是否挂载成功。 ### 2.4 持久化挂载 为了使系统重启后自动挂载 NFS 共享,需要将挂载信息添加到 `/etc/fstab` 文件中。 编辑 `/etc/fstab`: ```bash sudo vi /etc/fstab ``` 在文件末尾添加以下内容: ```ini 192.168.1.10:/srv/nfs/share /mnt/nfs/share nfs defaults 0 0 ``` **解释**: - `192.168.1.10:/srv/nfs/share` 是服务器上的 NFS 共享路径。 - `/mnt/nfs/share` 是本地挂载点。 - `nfs defaults` 指定文件系统类型为 NFS,使用默认挂载选项。 保存并退出编辑器。 ### 2.5 测试自动挂载 重启系统或运行以下命令,验证是否能够自动挂载: ```bash sudo mount -a ``` **解释**: - `sudo mount -a` 挂载 `/etc/fstab` 中定义的所有文件系统,确保配置正确。 ## 3. 常见问题及解决方案 ### 3.1 客户端无法访问 NFS 共享 如果客户端无法访问 NFS 共享,可能是由于防火墙或 NFS 服务未启动所致。可以通过以下步骤排查: 1. **检查 NFS 服务是否正在运行**: ```bash sudo systemctl status nfs-kernel-server ``` 2. **检查服务器防火墙设置**,确保相关端口已开放。 ### 3.2 挂载时报错:`mount.nfs: access denied by server while mounting` 可能的原因是服务器的 `/etc/exports` 文件中配置了错误的 IP 地址范围。确保 `/etc/exports` 中的 IP 范围正确无误。 ### 3.3 挂载成功但权限不足 确保共享目录的权限正确,并且在 `/etc/exports` 中设置了合适的读写权限(如 `rw` 选项)。 ## 4. NFS 安装与配置流程分析表 | 步骤 | 说明 | | ------------------ | -------------------------------------------------------- | | 安装 NFS 服务器 | 在服务器上安装 `nfs-kernel-server` 软件包 | | 创建共享目录 | 在服务器上创建要共享的目录,并设置相应的权限 | | 配置 NFS 导出目录 | 在 `/etc/exports` 文件中定义要共享的目录及其访问权限 | | 启动 NFS 服务 | 启动 NFS 服务器并设为开机自动启动 | | 配置防火墙(可选) | 如果有防火墙,允许客户端访问 NFS 端口 | | 安装 NFS 客户端 | 在客户端上安装 `nfs-common` 软件包 | | 挂载 NFS 共享 | 在客户端上挂载 NFS 共享目录,并测试挂载情况 | | 持久化挂载 | 在 `/etc/fstab` 中添加挂载信息,确保系统重启后自动挂载 | ## 5. 总结 通过本文的详细步骤,您可以在 Ubuntu 系统上成功配置 NFS 服务器并让客户端挂载 NFS 共享。NFS 是一种强大的文件共享系统,适用于局域网中的文件共享和跨服务器的数据同步。注意确保 NFS 的防火墙设置和网络权限正确,以防止不必要的访问问题。 最后修改:2024 年 09 月 16 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏