使用镜像扩展现有的单盘 ZFS,无需格式化现有的 HDD

使用镜像扩展现有的单盘 ZFS,无需格式化现有的 HDD

我的服务器上有一块格式化为单盘 zfs 系统的 HDD。它看起来像这样: 在此处输入图片描述

现在我想将其转换为 zfs 镜像,而无需格式化原始磁盘。有什么想法吗?

结果应该是这样的:

hdd0
   mirror0
       ata-........................
       ata-........................

  

答案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 启动。

相关内容