我有这个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空文件来显示这个,而不是使用整个磁盘和片/分区,因为我不能在该盒上玩弄物理设备。 这些文件被命名为aa1 , aa2和aa3 。
准备设备。 aa3是200M大,而aa1和aa2只有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
创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 - - - -
设置autoexpand属性:
# zpool set autoexpand=on test
连接新设备:
# 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 - - - -
是的。
分开前两个开发者:
# 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。