Linux 上用于 RHEL/OEL NFS 共享的 ZFS

Linux 上用于 RHEL/OEL NFS 共享的 ZFS

我正在尝试在 Linux 上为 Oracle Linux (OLE) 6.1(Red Hat RHEL 6.1 兼容克隆)使用 ZFS。我成功编译并安装了響鳴文件系统适用于 Oracle Unbreakable Kernel。Zfs 正在运行,我创建了镜像

zpool create -f -o ashift=12 tank mirror sdb sdc

现在我正尝试共享我的 zfs 池,称为“tank/nfs”,如zfsonlinux 网站

zfs set sharenfs=on tank/nfs

所以我创建了坦克/nfs并设置网络文件系统

现在我尝试在本地主机上挂载 nfs 共享来测试它

mount -t nfs4 127.0.0.1:/tank/nfs /mnt

但我明白mount.nfs4: mount system call failed

所以问题是:

如何共享 NFS 文件夹或 iSCSI 卷在 OLE 正确并安装它通过 ZFS 使用 Linux 客户端在 Linux 上。

答案是 mount 127.0.0.1:/tank/nfs /mnt

答案1

你的 nfs 服务器配置一定有问题。

请尝试按照如何将 RHEL 6 设置为 nfs 服务器。

答案2

为了建立 NFS 挂载,您需要portmap在尝试挂载之前运行该服务。

运行/sbin/service portmap start并重试您的 NFS 挂载。

对于 RHEL6 及更新版本,这是rpcbind-/sbin/service rpcbind start

答案3

根据我在 FreeBSD 和 Debian GNU/kFreeBSD 上使用 ZFS 的经验,我发现 sharenfs 功能实现得不太好。您可以在 /etc/exports 中设置 NFS 导出。

您要导出的每个 ZFS 文件系统都需要自己的导出行。我们发现,对于数百个文件系统来说,这太慢了。您还应该尝试使用单个文件系统,就像使用传统文件系统一样。

Linux 中的 NFS 导出

您必须编辑 /etc/exports 文件才能在 Linux 中启用 NFS。使用 Linux 中的 NFSv4,每个导出的文件系统都必须安装在名为 NFSv4 伪文件系统的单个目录下。在本例中,该目录为 /tank。伪文件系统下的挂载点可以使用不同的访问控制方法和导出选项导出。安装在伪文件系统下的任何文件系统都必须在 /etc/exports 中获得自己的导出行。

在 /etc/exports 中:

/tank *(fsid=0)
/tank/nfs *(rw,sync)

为了使 /etc/exports 的更改生效,您应该运行exportfs -r

对于 NFSv4,您需要在客户端和服务器上运行 idmapd,以便于从用户名到用户 ID 号的映射。

在 Linux NFSv4 中,导出与 NFSv3 及更低版本不同。假设伪文件系统是 /tank,则挂载命令将是:

mount -t nfs -o vers=4 server:/nfs /mnt

对于 NFSv3,它将是:

mount -t nfs -o vers=3 server:/tank/nfs /mnt

答案4

考虑在 Solaris 或 SolE 11 或 OpenIndiana 上原生实现 ZFS。在我看来,Linux 上的 ZFS 还远远没有达到可以投入生产的程度。ZFS 与 NFS 在基于 Solaris 的操作系统上具有原生集成,但在 Linux 上却并非如此。

相关内容