主题
第 9 章 NFS-Ganesha 安装与配置
9.1 NFS-Ganesha 安装
Ubuntu 22.04
bash
apt update
apt install -y nfs-ganesha nfs-ganesha-glusterRocky Linux 9
bash
dnf install -y nfs-ganesha nfs-ganesha-gluster验证安装
bash
ganesha.nfsd -v9.2 配置文件详解
NFS-Ganesha 主配置文件路径:/etc/ganesha/ganesha.conf。
最小配置示例
conf
EXPORT {
Export_Id = 1;
Path = "/gv0";
Pseudo = "/gv0";
Protocols = 3, 4;
Access_Type = RW;
Squash = No_Root_Squash;
FSAL {
Name = GLUSTER;
Hostname = "localhost";
Volume = "gv0";
}
}
LOG {
Default_Log_Level = INFO;
}配置字段详细说明
| 字段 | 示例值 | 说明 |
|---|---|---|
Export_Id | 1 | 导出唯一 ID,不可重复 |
Path | /gv0 | NFS 导出的实际路径 |
Pseudo | /gv0 | NFSv4 伪文件系统路径 |
Protocols | 3, 4 | 支持的协议版本 |
Access_Type | RW | 访问权限:RW/RO |
Squash | No_Root_Squash | root 映射策略 |
FSAL.Name | GLUSTER | FSAL 类型 |
FSAL.Hostname | localhost | 连接 GlusterFS 的地址 |
FSAL.Volume | gv0 | GlusterFS 卷名 |
Squash 选项
| 选项 | 说明 |
|---|---|
No_Root_Squash | root 保持 root 权限 |
Root_Squash | root 映射为匿名用户 |
All_Squash | 所有用户映射为匿名用户 |
None | 不映射 |
9.3 导出 GlusterFS 卷
在所有节点应用配置
bash
cat > /etc/ganesha/ganesha.conf <<'EOF'
EXPORT {
Export_Id = 1;
Path = "/gv0";
Pseudo = "/gv0";
Protocols = 3, 4;
Access_Type = RW;
Squash = No_Root_Squash;
FSAL {
Name = GLUSTER;
Hostname = "localhost";
Volume = "gv0";
}
}
LOG {
Default_Log_Level = INFO;
}
EOF启动服务
bash
systemctl enable --now nfs-ganesha
systemctl status nfs-ganesha9.4 启动与验证 NFS 导出
查看导出
bash
showmount -e localhost预期输出:
Export list for localhost:
/gv0 *查看 Ganesha 运行时状态
bash
# 通过 dbus 查看导出
dbus-send --system --print-reply \
--dest=org.ganesha.nfsd /org/ganesha/nfsd/admin \
org.ganesha.nfsd.admin.GetAllStats测试本地挂载
bash
mkdir -p /mnt/test
mount -t nfs -o vers=4.1 localhost:/gv0 /mnt/test
touch /mnt/test/hello
cat /mnt/test/hello9.5 NFSv3 与 NFSv4 切换配置
仅启用 NFSv4
conf
EXPORT {
Protocols = 4;
Transports = TCP;
...
}启用 NFSv3 和 NFSv4
conf
EXPORT {
Protocols = 3, 4;
Transports = TCP, UDP;
...
}本书推荐 NFSv4.1,因为端口单一、有状态管理更好。
9.6 多节点 Ganesha 一致性
由于 Ganesha 是无状态的(相对于 GlusterFS 数据而言),多个节点上的 Ganesha 实例独立运行,都通过 libgfapi 访问同一个 GlusterFS volume,因此天然保持一致。
需要注意:
- 所有节点的
ganesha.conf应保持一致 - 修改配置后需要在所有节点重启服务
- 可以使用配置管理工具(Ansible/Puppet/Chef)保证一致性
9.7 本章小结
- NFS-Ganesha 通过 GLUSTER FSAL 导出 GlusterFS 卷
- 配置文件使用 EXPORT 块定义导出
- 所有存储节点应配置相同的 Ganesha 导出
- NFSv4.1 是推荐协议版本
- 多节点 Ganesha 独立运行,通过后端 GlusterFS 保持一致
练习题
- NFS-Ganesha 的 GLUSTER FSAL 通过什么方式访问 GlusterFS?
Pseudo字段在 NFSv4 中有什么作用?No_Root_Squash和Root_Squash有什么区别?- 修改 Ganesha 配置后,为什么需要在所有节点同步?