答案1
我在虚拟机中重现了您的情况,并一步步粘贴到这里。:)
注意:首先,请备份您的数据。我添加了一个空的新磁盘,因此 ZFS 毫无疑问哪个是主驱动器。虽然您应该没有问题,因为第一个驱动器已经构成了池的一部分,但建议进行备份。
快速回答:你需要zpool 附加命令。
基本上:
sudo zpool attach hdd0 existinghdd blankhdd
之后,执行以下操作:
zpool status
您将看到已创建镜像。现有驱动器上的数据将保留,并将复制到新驱动器(重新镀银)。
由于 ZFS 仅复制实际信息,因此此过程所需的时间取决于数据量。在我的 VM 中,300 GB 的数据在 3 秒内被复制,而根据我使用 SAS 和 SATA 驱动器的经验,我在不到 24 小时内就重新同步了 10 TB(为此,我使用了从 10TB 到 14TB 的 SAS 驱动器)。
现在来详细回答一下我在 Virtual Box VM 中所做的一切:
lsblk --scsi
通过 ls /dev/disk/by-id/ 识别两个空驱动器
选择其中一个并创建一个像您的池:sudo zpool create hdd0 id_of_mydrive
看到池 /hdd0 已创建并安装在根上。
sudo zpool status
sudo zpool list
sudo ls -al /hdd0
填充一些随机数据(或者最好将文件复制到那里)以生成像您这样的驱动器数据。我随机生成:sudo dd id=/dev/urandom of=/hdd0/file.000 bs=1M count=100 status=progress sudo dd id=/dev/urandom of=/hdd0/file.001 bs=1M count=100 status=progress sudo dd id=/dev/urandom of=/hdd0/file.002 bs=1M count=100 status=progress
然后我得到了校验和并保存以供稍后验证。
sudo su
# Please note I continue as root
sha512sum file.000 > file.000.sha512
sha512sum file.001 > file.001.sha512
sha512sum file.002 > file.002.sha512
zpool list 显示有近 100GB 的空间。
zpool attach hdd0 id_of_mydrive id_of_the_drive_to_add
zpool status 将显示:
pool: hdd0
state: ONLINE
scan: resilvered 301M in 0 days 00:00:03 with 0 errors...
NAME STATE READ WRITE CKSUM
hdd0
mirror-0
ata-VBOX_HARDDISK_VBa8... ONLINE 0 0 0
ata-VBOX_HARDDISK_VB8c... ONLINE 0 0 0
errors: No known data errors
我验证了校验和。
zpool list 也将返回 99GB 的可用空间,因为镜像中使用了两个 100GB 的驱动器。
正如 kaulex 提到的,格式是: zpool 附加
其中设备是您之前带有数据的 vdev(ZFS 池中名为“hdd0”的带有数据的单个硬盘驱动器)。
正如我所做的那样,您希望使用设备的 ID 而不是名称,因此您将使用 /dev/disk/by-id/ 中的标识符,而不是 sdb、sdc...(请注意,添加 /dev/ 不是必需的)。不使用 sdb、sdc、sdea 等设备名称的原因是这些名称可能会在 live 运行时或重新启动之间发生变化。id 永远不会改变。在实际系统中,而不是 Virtual Box 中,它们可能由 wwn 启动。