Solaris ZFS 镜像 - 不同的条带宽度有效吗?

Solaris ZFS 镜像 - 不同的条带宽度有效吗?

我发现了许多关于使用 ZFS 镜像处理不同大小磁盘的文章,似乎可以使用更大的磁盘来增大镜像。是否可以使用镜像将条带合并到更大但数量更少的磁盘上?

我们目前在旧的 DMX2000 阵列上有 8 x 200GB LUN

  NAME                                     STATE     READ WRITE CKSUM
    pool1                                   ONLINE       0     0     0
      disk1                                 ONLINE       0     0     0
      disk2                                 ONLINE       0     0     0
      disk3                                 ONLINE       0     0     0
      disk4                                 ONLINE       0     0     0
      disk5                                 ONLINE       0     0     0
      disk6                                 ONLINE       0     0     0
      disk7                                 ONLINE       0     0     0
      disk8                                 ONLINE       0     0     0

我知道我们可以使用以下命令轻松将其移动到新的 VMAX 阵列

zpool attachment pool1 disk9 disk10 disk11 disk12 disk13 disk14 disk15 disk16

zpool 分离池1 磁盘1 磁盘2 磁盘3 磁盘4 磁盘5 磁盘6 磁盘7 磁盘8

但是,我们希望将其整合到 2x800GB LUN 中

我们可以用以下方法实现:

zpool attachment pool1 disk9 disk10

其中 disk9 和 disk10 >800GB

zpool 分离池1 磁盘1 磁盘2 磁盘3 磁盘4 磁盘5 磁盘6 磁盘7 磁盘8

我曾与 Veritas Volume Manager 和 Solaris Volume Manager 进行过类似的合并,但从未与 ZFS 进行过类似的合并。这可能吗?

短暂性脑缺血发作

答案1

最终找到了一个用于测试的开发系统,我意识到我误解了池的结构。

它严格来说是 RAID 1+0,并且永远不能是 RAID 0+1,而这正是您需要重新布局的。

首先将池分割成条带/连接 (stripe/concat),然后可以对每一列进行镜像。

例如,这里有一个 4 列条带,其中第 2 列是普通镜像,最后一列是 4 向镜像

    POOLA                                        ONLINE       0     0     0
      c4t600A0B8000481D2400003BC54CE157B4d0s0    ONLINE       0     0     0
      mirror-1                                   ONLINE       0     0     0
        c4t600A0B8000481D2400003BC54CE157B4d0s1  ONLINE       0     0     0
        c4t600A0B8000481D2400003BC34CE15760d0s1  ONLINE       0     0     0
      c4t600A0B8000481D2400003BC54CE157B4d0s2    ONLINE       0     0     0
      mirror-3                                   ONLINE       0     0     0
        c4t600A0B8000481D2400003BC34CE15760d0s3  ONLINE       0     0     0
        c4t600A0B8000481D2400003BC54CE157B4d0s3  ONLINE       0     0     0
        c4t600A0B8000481D2400003BC34CE15760d0s2  ONLINE       0     0     0
        c4t600A0B8000481D2400003BC34CE15760d0s0  ONLINE       0     0     0

add* 命令只会添加更多列。它们可以是简单列或镜像列。

附加命令将会把镜像添加到列中。

分离命令将从列中移除镜像。

删除命令无法删除列。

* 添加/删除命令也对缓存、日志等进行操作。

我上面建议的语法完全错误,因为附加仅接受要镜像的组件的一个名称和一个要将其镜像到的组件。实现我想要的唯一方法是创建一个新池并向其发送/接收数据。

相关内容