在 Debian 8.7 上,我有一个 zfs 池。(显然在 Linux 上使用 ZFS,而不是 Oracle 或 Solaris zfs)
需要将 ZFS 池从 2 个磁盘上的镜像扩展到 4 个磁盘上的 raidz。我做了备份(一份数据副本 - 这是我的第一个错误)
我认为zpool destroy
在我删除所有数据集(卷)之前这不会起作用,所以我做到了zfs destroy
(这是我的第二个错误)。
之后我发出'zpool destroy',重新分区所有4个磁盘,发现备份已损坏。
所以我开始了我的恢复冒险:ZFS 的第一个好处是它能够导入被破坏的池。之后zpool destroy yourPoolName
您可以调用zpool import -D
以查看已销毁池的列表。然后,您可以使用 imoprt 它,zpool import -D yourPoolName
或者如果您销毁了多个具有相同名称的池,那么您可以通过 id 导入它,由zpool import -D
.
zpool import -D
需要在其原始位置进行分区。它必须精确到部门。我曾经用fdisk
确切的开始和结束扇区号创建分区。我曾经cfdisk
设置分区类型(因为它对用户更友好:))然后您应该调用partprobe
以确保操作系统知道更改的分区。
zpool import -D
像魅力一样工作,我的游泳池再次处于完美健康状态!.. 但后果是zfs destroy
- 所有数据都丢失了。
ZFS 在事务中存储对文件和文件系统的更改,这些更改以事务组 (TXG) 的形式保存到磁盘。我的进一步研究表明,我必须回滚最后一个事务组。
有两种回滚 …