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

我正在尝试使用Linux for Oracle Linux(OLE)6.1(Red Hat RHEL 6.1兼容克隆)的ZFS。 我为Oracle Unbreakable Kernel成功编译并安装了splzfs 。 Zfs正在工作,我创build了镜像

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

现在我试图分享我的zfs池,如zfsonlinux站点上提到的“tank / nfs”。

 zfs set sharenfs=on tank/nfs 

所以我创build了tank / nfs并设置了nfs

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

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

但是我得到mount.nfs4: mount system call failed

所以问题是:

如何在OLE上正确共享NFS文件夹或iSCSI卷,并通过Linux上的ZFS与Linux客户端进行挂载。

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

你的nfs服务器configuration肯定有问题。

请按照以下步骤设置RHEL 6作为nfs服务器。

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

运行/sbin/service portmap start试你的NFS挂载。

对于RHEL6和更新版本,这是在rpcbind/sbin/service rpcbind start

根据我在FreeBSD和Debian GNU / kFreeBSD上使用ZFS的经验,我发现sharenfs特性没有很好的实现。 你可以在/ etc / exports中设置你的NFS输出。

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

Linux中的NFS导出

您将不得不编辑/ etc / exports文件以在Linux中启用NFS。 在Linux中使用NFSv4时,每个导出的文件系统必须安装在一个名为NFSv4伪文件系统的目录下。 在这种情况下,这将是/坦克。 伪文件系统下的挂载点可以用不同的访问控制方法和导出选项导出。 任何安装在psuedofilesystem下的文件系统都必须在/ etc / exports中有自己的出口行。

/ etc / exports中:

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

要更改/ etc / exports生效,您应该运行exportfs -r

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

在Linux NFSv4中,导出与NFSv3及更低版本不同。 假定pseudofilesystem是/ tank,你的mount命令是:

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

对于NFSv3,它将是:

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

考虑在Solaris或SolE 11或OpenIndiana上原生地执行ZFS。 在我看来,Linux上的ZFS没有任何forms可以用于生产。 带有NFS的ZFS在基于Solaris的操作系统上具有本地集成,但在Linux上则不然。