Eu sou um idiota. Eu tinha na minha lista para configurar meus backups externos e .. você adivinhou, eu não cheguei a isso antes que isso acontecesse. Na verdade, eu pensei que tinha configurado backups locais corretamente, mas acontece que não, eu não tinha. De qualquer forma:
Sou novo no ZFS. Estou executando o Proxmox e habilitei a passagem em 9 unidades em uma placa HDA para uma VM TrueNAS para um pool. Eu tenho duas unidades NVMe, embora acho que configurei apenas uma delas para armazenamento em cache e um SSD para Proxmox. Por motivos que não estão claros para mim, meu zpool foi corrompido ontem. Meu host Proxmox parece estar ciente do pool, o que é estranho para mim porque criei o pool no convidado TrueNAS.
Eu tentei correr zpool import
com -f
-F
-FX
e -fFX
sinalizadores. Não tenho certeza se devo executar esses comandos no host ou no convidado. Eu também tentei com --readonly=on
e (no host) tentei configurar echo 0 > /sys/module/zfs/parameters/spa_load_verify_metadata
, embora não tenha tentado fazer isso antes de tentar importar o zpool no convidado, porque, francamente, estou um pouco assustado que tanto o host e os hóspedes parecem ter acesso à piscina e não tenho certeza de que isso não esteja contribuindo para o problema.
O erro que estou recebendo é que os metadados estão corrompidos. Não sei se isso está relacionado , mas isso aconteceu na época em que eu estava tentando instalar uma GPU e habilitar a passagem PCIe/GPU no Proxmox para esse dispositivo.
Proxmox:
root@proxmox:~# zpool import
pool: Seabreeze
id: 821564149027342835
state: FAULTED
status: The pool metadata is corrupted.
action: The pool cannot be imported due to damaged devices or data.
The pool may be active on another system, but can be imported using
the '-f' flag.
see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-72
config:
Seabreeze FAULTED corrupted data
raidz2-0 FAULTED corrupted data
sdf2 ONLINE
sdh2 ONLINE
sdc2 ONLINE
sde2 ONLINE
sdj2 ONLINE
sdb2 ONLINE
sdg2 ONLINE
sdd2 ONLINE
sdi2 ONLINE
root@proxmox:~#
TrueNAS:
truenas% sudo zpool import
pool: Seabreeze
id: 821564149027342835
state: FAULTED
status: The pool was last accessed by another system.
action: The pool cannot be imported due to damaged devices or data.
The pool may be active on another system, but can be imported using
the '-f' flag.
see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-EY
config:
Seabreeze FAULTED corrupted data
raidz2-0 FAULTED corrupted data
gptid/bb911e9d-c067-11ec-b393-734570047b00 ONLINE
gptid/bbb5c9f6-c067-11ec-b393-734570047b00 ONLINE
gptid/bba92ac5-c067-11ec-b393-734570047b00 ONLINE
gptid/bbbf0f87-c067-11ec-b393-734570047b00 ONLINE
gptid/bbda0fa2-c067-11ec-b393-734570047b00 ONLINE
gptid/bc03effa-c067-11ec-b393-734570047b00 ONLINE
gptid/bc114e59-c067-11ec-b393-734570047b00 ONLINE
gptid/bbd0f901-c067-11ec-b393-734570047b00 ONLINE
gptid/bc18eaf4-c067-11ec-b393-734570047b00 ONLINE
truenas%
Meus dados são recuperáveis?
Eu costumava
zdb -u -l
despejar uma lista de uberblocks, setvfs.zfs.spa.load_verify_metadata
andvfs.zfs.spa.load_verify_data
to 0, e usei uma combinação de-n
,-N
,-R /some/Mountpoint
e-o readonly=on
com-T
o txg de um uberblock mais antigo para pelo menos chegar onde os dados estão presentes, no formato somente leitura. A partir daí, consegui ver comzpool status -v
, quais arquivos estavam corrompidos, descriptografar o pool e copiar os dados no nível do arquivo para um disco rígido externo.