Eu tenho um disco rígido em torno do qual uma vez pertenceu a um pool espelhado do ZFS de 3 discos em um servidor Ubuntu 12.04, chamado d510
. O disco foi devidamente desconectado, mas seu sistema de arquivos tank0
não foi exportado.
Gostaria agora de recuperar alguns arquivos desse disco montando-o em um sistema de desktop Xubuntu 14.04 diferente. Neste sistema de desktop, o disco é visto como:
$ 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
...
Os dados parecem estar somente na partição part1
, pois part9
é muito pequeno. No entanto, o comando zdb
revela que essa partição de disco em particular já foi filha 2 e foi chamada de forma diferente no servidor Ubuntu 12.04, ou seja, 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
--------------------------------------------
...
Devido a essa diferença no nome do id, criei os seguintes links:
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
Ainda assim, como nas tentativas anteriores menos sofisticadas, o sistema de arquivos não importará (nem exportará para esse assunto):
$ sudo zpool import -o rdonly=on -d . -D -f -X -R /mnt 8764435549195071605
no pools available to import
Alguma sugestão sobre como importar este disco espelho ZFS órfão neste host diferente?
Devo talvez criar links ainda mais suaves para as outras unidades e partições apontando para essa única unidade?
Os dados com certeza ainda estão disponíveis no disco, no entanto, o ZFS no Linux parece ser bastante exigente sobre o que é permitido importar. Os pools do ZFS são ótimos no sistema em que são criados, mas os cenários de recuperação e atualização parecem ser prejudicados por esse comportamento.
Na documentação do Oracle Solaris
When a pool is created, it is intrinsically tied to the host system. The host system maintains information about the pool so that it can detect when the pool is unavailable. source
mas ainda
If you do not explicitly export the pool, but instead remove the disks manually, you can still import the resulting pool on another system. However, you might lose the last few seconds of data transactions, and the pool will appear faulted on the original system because the devices are no longer present. source