Linux 上的 ZFS 只读挂载 + Solaris 上的同步读写挂载

Linux 上的 ZFS 只读挂载 + Solaris 上的同步读写挂载

我们必须定期将相当大的文件从 Solaris 复制到 Linux(使用网络)。目前一个文件需要近半天的时间。 Solaris 中的文件位于 ZFS 文件系统上。

所以我想,这真是太糟糕了——我们也许可以在 Linux 上安装 ZFS。

但 ZFS 不是集群(或可集群)文件系统。

假设:所以我认为我们可以,因为我们只是从 Solaris 复制 - 我们可以以只读方式安装相同的 ZFS 文件系统,因此在这种情况下不必进行集群?因为写入仅在 Solaris 端(我们无法在那里卸载它)。

Solaris 机器非常繁忙,网络网卡几乎也总是非常繁忙。因此,通过将文件副本移动到 FC,速度应该会更快。

该 Linux 机器是 VMWare 主机上的虚拟来宾。所以,是的,可以向 Linux 来宾提供相同的 FC 结构。

想法?我认为假设部分是我最需要寻找反馈的地方。不确定是否可以在 Linux 上进行 ZFS 只读挂载 + 在 Solaris 上同时进行读写挂载。

答案1

那根本不可能。无论读/权限如何,ZFS 都不允许同时挂载在两台主机上。如果您在 Solaris 上安装时尝试将其安装在 linux 上,则必须强制执行。如果这样做,Solaris 将因内核恐慌而崩溃。当我在第二个 Solaris 盒子上强制导入而它安装在第一个盒子上时,我在两个 Solaris 上发生了这种情况。而且,如果你能在Linux上导入或不导入zpool,ZFS版本也会发挥作用。如果你想尝试我建议如下:

  1. 克隆存储上的 lun
  2. 将克隆的 lun 映射到 Linux 盒子
  3. 尝试在linux上挂载zpool

答案2

阻止这种情况发生的原因是 ZFS 将元数据缓存在内存中,因为它假设它是唯一改变磁盘状态的元数据。无论主机安装什么读/写都应该没问题。在以只读方式安装的另一台主机上,元数据将从其下方更改,并且在某个时刻(相当快),它将从磁盘中它认为具有有效元数据但已被覆盖的位置读取块另一个系统。

您可以尝试 BitsOfNix 概述的 lun 克隆方法,或者您可以尝试设置定期快照/发送/接收脚本以尝试保持最新状态。或者您可以尝试从 Solaris 主机共享数据集,并通过 NFS 将其挂载到 Linux 主机上。

相关内容