我可以将多磁盘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 

我想用一个(更大的磁盘)replace这两个磁盘。 可以这样做吗? zpool attach允许我replace一个物理磁盘,但是它不会允许我一次replace两个物理磁盘。

不,我不认为这是可能的你描述的方式。

但是,您可以使用单个磁盘创build新池,并使用简单的zfs发送/接收进程将ZFS文件系统复制到新池中。

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

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

我同意最好的做法是创build一个新的池并recursion地将所有的数据集发送到新的池中,但如果你真的不能这样做,那么你仍然可以按照我概述的步骤进行操作,只要你划分新的,更大的磁盘,分成两个分区,每个分区至less与它要replace的磁盘一样大。

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

我将在这里粘贴最近Illumos盒子上执行的序列。 请注意,我正在创build空文件来显示这个,而不是使用整个磁盘和片/分区,因为我不能在该盒上玩弄物理设备。 这些文件被命名为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. 创build我们的testing池:

     # 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。