我有一个硬盘,它曾经属于Ubuntu 12.04服务器上的一个3磁盘ZFS镜像池,名为d510 。 磁盘已正确分离,但其文件系统tank0未导出。
现在我想通过将其安装在不同的Xubuntu 14.04桌面系统上,从这个磁盘上恢复一些文件。 在这个桌面系统上,磁盘被看作是:
$ ls /dev/disk/by-id/ ... ata-WDC_WD10EADS-00M2B0_WD-WCAV51264701 ata-WDC_WD10EADS-00M2B0_WD-WCAV51264701-part1 ata-WDC_WD10EADS-00M2B0_WD-WCAV51264701-part9 ...
由于part9非常小,因此数据看起来完全在part1分区上。 但是, zdb命令显示此特定磁盘分区曾经是child 2,并在Ubuntu 12.04服务器上以不同方式调用,即scsi-SATA_WDC_WD10EADS-00_WD-WCAV51264701-part1 。
$ sudo zdb -l /dev/disk/by-id/ata-WDC_WD10EADS-00M2B0_WD-WCAV51264701-part1 -------------------------------------------- LABEL 0 -------------------------------------------- version: 5000 name: 'tank0' state: 0 txg: 0 pool_guid: 8764435549195071605 hostname: 'd510' top_guid: 4212287141343472152 guid: 10584802241354722513 vdev_children: 1 vdev_tree: type: 'mirror' id: 0 guid: 4212287141343472152 metaslab_array: 31 metaslab_shift: 33 ashift: 12 asize: 1000189984768 is_log: 0 create_txg: 4 children[0]: type: 'disk' id: 0 guid: 4518508443267048848 path: '/dev/disk/by-id/scsi-SATA_WDC_WD10EARS-00_WD-WCAV56475795-part1' whole_disk: 1 DTL: 118 create_txg: 4 resilvering: 1 children[1]: type: 'disk' id: 1 guid: 12490123066008148558 path: '/dev/disk/by-id/scsi-SATA_WDC_WD10EARS-00_WD-WCAV56524564-part1' whole_disk: 1 DTL: 120 create_txg: 4 resilvering: 1 children[2]: type: 'disk' id: 2 guid: 10584802241354722513 path: '/dev/disk/by-id/scsi-SATA_WDC_WD10EADS-00_WD-WCAV51264701-part1' whole_disk: 1 DTL: 126 resilvering: 1 features_for_read: create_txg: 0 -------------------------------------------- LABEL 1 -------------------------------------------- ...
由于id名称的不同,我创build了以下软链接:
sudo ln -s ata-WDC_WD10EADS-00M2B0_WD-WCAV51264701 scsi-SATA_WDC_WD10EADS-00_WD-WCAV51264701 sudo ln -s ata-WDC_WD10EADS-00M2B0_WD-WCAV51264701-part1 scsi-SATA_WDC_WD10EADS-00_WD-WCAV51264701-part1 sudo ln -s ata-WDC_WD10EADS-00M2B0_WD-WCAV51264701-part9 scsi-SATA_WDC_WD10EADS-00_WD-WCAV51264701-part9
尽pipe如此,与之前不太成熟的尝试一样,文件系统也不会导入(也不会导出):
$ sudo zpool import -o rdonly=on -d . -D -f -X -R /mnt 8764435549195071605 no pools available to import
有关如何在这个不同的主机上导入这个孤立的ZFS镜像磁盘的任何build议?
我是否应该为指向这个单一驱动器的其他驱动器和分区创build更多的软链接?
确实的数据在磁盘上仍然可用,但是Linux上的ZFS似乎对允许导入的内容比较挑剔。 ZFS池在创build这些池的系统上非常棒,但恢复和升级scheme似乎受到这种行为的严重阻碍。
当创build池时,它与主机系统有内在的联系。 主机系统维护有关池的信息,以便它可以检测池何时不可用。 资源
但仍然
如果您没有明确导出池,而是手动删除磁盘,则仍然可以将生成的池导入另一个系统。 但是,您可能会丢失数据事务的最后几秒钟,并且该池将在原始系统上出现故障,因为设备不再存在。 资源
一些想法:
根据手册页,-D只input已经销毁的池。 也许你的游泳池从未被破坏,因此不会出现?
也许这些选项可以帮助你?
-F Recovery mode for a non-importable pool. Attempt to return the pool to an importable state by discarding the last few transactions. Not all damaged pools can be recovered by using this option. If successful, the data from the discarded transactions is irretrievably lost. This option is ignored if the pool is importable or already imported. -n Used with the -F recovery option. Determines whether a non-importable pool can be made importable again, but does not actually perform the pool recovery. For more details about pool recovery mode, see the -F option, above.