我可以将多磁盘 zfs zpool 合并为单个(更大)磁盘吗?

我可以将多磁盘 zfs zpool 合并为单个(更大)磁盘吗?

我有这个 zpool:

    bash-3.2# zpool status dpool
  pool: dpool
 state: ONLINE
 scan: none requested
 config:
        NAME                                     STATE     READ WRITE CKSUM
        dpool                                    ONLINE       0     0     0
          c3t600601604F021A009E1F867A3E24E211d0  ONLINE       0     0     0
          c3t600601604F021A00141D843A3F24E211d0  ONLINE       0     0     0

我想用一个(更大的)磁盘替换这两个磁盘。可以做到吗? zpool 附加允许我更换一个物理磁盘,但不允许我同时更换两个。

答案1

不,我认为按照您描述的方式这是不可能的。

但是,创建一个包含单个磁盘的新池,并使用简单的zfs 发送/接收过程。

答案2

您应该能够使用zpool attach新的更大的驱动器,等待镜像完成,然后再zpool detach使用旧驱动器。

编辑:我误读了你的问题,我很确定你是把它们当作镜像来运行的。

我同意最好的做法是创建一个新池并递归地将所有数据集发送到新池,但如果您真的不能这样做,那么您仍然可以按照我概述的步骤进行操作,前提是您将新的、更大的磁盘分区为两个分区,每个分区至少与它要替换的磁盘一样大。

我不建议这样做,主要是因为(1)管理变得更加复杂,并且(2)您将无法利用驱动器的写入缓存。

我将在此处粘贴在最近的 Illumos 盒子上执行的序列。请注意,我正在创建空文件来显示这一点,而不是使用整个磁盘和切片/分区,因为我无法在该盒子上处理物理设备。文件名为aa1aa2aa3

  1. 准备设备。aa3大小为 200M,而aa1aa2只有 100M:

    # dd if=/dev/zero of=/opt/local/aa1 bs=1M count=100
    # dd if=/dev/zero of=/opt/local/aa2 bs=1M count=100
    # dd if=/dev/zero of=/opt/local/aa3 bs=1M count=200
    
  2. 创建我们的测试池:

    # zpool create test mirror /opt/local/aa1 /opt/local/aa2
    

    检查一切是否顺利:

    # zpool list -v test
    NAME                 SIZE  ALLOC   FREE  EXPANDSZ    CAP  DEDUP  HEALTH  ALTROOT
    test                95,5M   106K  95,4M         -     0%  1.00x  ONLINE  -
      mirror            95,5M   106K  95,4M         -
        /opt/local/aa1      -      -      -         -
        /opt/local/aa2      -      -      -         -
    
  3. 设置autoexpand属性:

    # zpool set autoexpand=on test
    
  4. 连接新设备:

    # zpool attach test /opt/local/aa2 /opt/local/aa3
    

    一切都还好吗?

    # zpool list -v test
    NAME                 SIZE  ALLOC   FREE  EXPANDSZ    CAP  DEDUP  HEALTH  ALTROOT
    test                95,5M   120K  95,4M         -     0%  1.00x  ONLINE  -
      mirror            95,5M   120K  95,4M         -
        /opt/local/aa1      -      -      -         -
        /opt/local/aa2      -      -      -         -
        /opt/local/aa3      -      -      -         -
    

    是的。

  5. 分离前两个开发人员:

    # zpool detach test /opt/local/aa1
    # zpool detach test /opt/local/aa2
    

最后,我们再检查一下池子:

# zpool list -v test
NAME               SIZE  ALLOC   FREE  EXPANDSZ    CAP  DEDUP  HEALTH  ALTROOT
test               196M   124K   195M         -     0%  1.00x  ONLINE  -
  /opt/local/aa3   196M   124K   195M         -

它已正确增长至200MB。

相关内容