我有一块闲置的硬盘,它曾经属于 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
...
part1
由于数据量part9
非常小,因此数据似乎只存在于分区中。但是,该zdb
命令显示,这个特定的磁盘分区曾经是子分区 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名称的差异,我创建了以下软链接:
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
不过,与以前不太复杂的尝试一样,文件系统不会导入(也不会导出):
$ sudo zpool import -o rdonly=on -d . -D -f -X -R /mnt 8764435549195071605
no pools available to import
关于如何在这个不同的主机上导入这个孤立的 ZFS 镜像磁盘有什么建议吗?
我是否应该为指向此单个驱动器的其他驱动器和分区创建更多软链接?
数据肯定仍可在磁盘上使用,但 Linux 上的 ZFS 似乎对允许导入的内容相当挑剔。ZFS 池在创建这些池的系统上非常棒,但这种行为似乎严重阻碍了恢复和升级方案。
摘自 Oracle Solaris 文档
创建池后,它本质上与主机系统绑定在一起。主机系统会维护有关池的信息,以便能够检测池何时不可用。来源
但仍然
如果您没有明确导出池,而是手动移除磁盘,您仍然可以将生成的池导入另一个系统。但是,您可能会丢失最后几秒钟的数据事务,并且由于设备不再存在,池将在原始系统上显示为故障。来源
答案1
一些想法:
根据手册页,-D 仅导入已被销毁的池。也许您的池从未被销毁,因此不会显示?
也许这些选项可以帮到你?
-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.