Foi executada uma instância de teste de um NAS usando um ZFS, conforme mencionado em Restaurando um servidor Ubuntu usando ZFS RAIDZ para dados .
Esta semana um dos meus discos morreu. Não deve ser um problema, deveria (os benefícios do RAID sendo resiliência, bem como desempenho)?
Exceto que meu pool do ZFS foi corrompido, como em:
[email protected]:~$ Sudo zpool status -v
pool: tank
state: UNAVAIL
status: One or more devices could not be used because the label is missing
or invalid. There are insufficient replicas for the pool to continue
functioning.
action: Destroy and re-create the pool from
a backup source.
see: http://www.Sun.com/msg/ZFS-8000-5E
scan: none requested
config:
NAME STATE READ WRITE CKSUM
tank UNAVAIL 0 0 0 insufficient replicas
raidz1-0 UNAVAIL 0 0 0 insufficient replicas
sdb FAULTED 0 0 0 corrupted data
sdc FAULTED 0 0 0 corrupted data
sdd UNAVAIL 0 0 0
Felizmente, esta é uma instância de teste e, portanto, posso facilmente começar de novo. Mas e se esse pool contivesse dados importantes? Qual seria o próximo passo (s) correto (s) para recuperar os dados e restaurar meu NAS para a ordem de trabalho? Ou o ZFS tenta automaticamente todas as possíveis abordagens de restauração, de modo que os dados agora são torrados?
Parece que seu pool pode não estar corrompido. Embora a partir da saída, parece que vários dispositivos podem estar em apuros. Eu estou supondo que vários discos podem estar em estado questionável, daí o estado com falha em sdb e sdc. Descobrir o que pode estar errado com eles e seu pool pode provar que você está errado. Isso não parece um estado fatal de pool.
Armado com o insight do @slashdot, eu praticamente consertei o meu problema, mas eu realmente não sei o que fiz. Por favor, examine a seguinte trilha e me ilumine.
Em particular, quais das seguintes hipóteses são verdadeiras e ou o que estou perdendo?
zdb -u tank
nem zdb -dcsv tank
fizeram alguma coisa útil.zpool import -f tank
funcionou quando o primeiro não funcionou, pois o tempo decorrido desde o zpool export tank
para o ZFS tinha a chance de se corrigir.LOG
[email protected]:~$ zpool status
[email protected]:~$ Sudo zpool status
pool: tank
state: UNAVAIL
status: One or more devices could not be used because the label is missing
or invalid. There are insufficient replicas for the pool to continue
functioning.
action: Destroy and re-create the pool from
a backup source.
see: http://www.Sun.com/msg/ZFS-8000-5E
scan: none requested
config:
NAME STATE READ WRITE CKSUM
tank UNAVAIL 0 0 0 insufficient replicas
raidz1-0 UNAVAIL 0 0 0 insufficient replicas
sdb FAULTED 0 0 0 corrupted data
sdc FAULTED 0 0 0 corrupted data
sdd UNAVAIL 0 0 0
[email protected]:~$ Sudo zdb -u tank
zdb: can't open 'tank': No such device or address
[email protected]:~$ Sudo zpool scrub tank
cannot scrub 'tank': pool is currently unavailable
[email protected]:~$ Sudo zdb -bcsv tank
zdb: can't open 'tank': No such device or address
[email protected]:~$ Sudo zpool export tank
[email protected]:~$ Sudo zpool import tank
cannot import 'tank': pool may be in use from other system
use '-f' to import anyway
[email protected]:~$ Sudo zpool import -f tank
cannot import 'tank': one or more devices is currently unavailable
[email protected]:~$ Sudo zpool status
no pools available
[email protected]:~$ Sudo zpool status -x
no pools available
[email protected]:~$ Sudo zpool import
pool: tank
id: 9117894036185671023
state: UNAVAIL
status: One or more devices contains corrupted data.
action: The pool cannot be imported due to damaged devices or data.
see: http://www.Sun.com/msg/ZFS-8000-5E
config:
tank UNAVAIL insufficient replicas
raidz1-0 UNAVAIL insufficient replicas
sdb FAULTED corrupted data
sdb UNAVAIL
sdc ONLINE
[email protected]:~$ Sudo zpool import tank
cannot import 'tank': pool may be in use from other system
use '-f' to import anyway
[email protected]:~$ Sudo zpool import -f tank
[email protected]:~$ Sudo zpool status
pool: tank
state: DEGRADED
status: One or more devices could not be used because the label is missing or
invalid. Sufficient replicas exist for the pool to continue
functioning in a degraded state.
action: Replace the device using 'zpool replace'.
see: http://www.Sun.com/msg/ZFS-8000-4J
scan: scrub repaired 0 in 0h13m with 0 errors on Mon Nov 21 09:22:11 2011
config:
NAME STATE READ WRITE CKSUM
tank DEGRADED 0 0 0
raidz1-0 DEGRADED 0 0 0
10820373921989571629 UNAVAIL 0 0 0 was /dev/sdb1
sdb ONLINE 0 0 0
sdc ONLINE 0 0 0
errors: No known data errors
[email protected]:~$
Acho que os pôsteres anteriores destacaram o problema. A causa provável foi devido à maneira como você especificou os discos.
Minha experiência é com o ZFS no Ubuntu. Embora eu também use o ZFS em freenas, nunca precisei me aprofundar na implementação do bsd.
Certamente, para o Ubuntu, é altamente recomendado que você especifique seus dispositivos por id em vez de descritor: isto é,/dev/disk/by-id/scsi-SATA-string longa que identifica o disco físico em vez de/dev/sda.
O uso do dispositivo by-id elimina qualquer dependência na porta SATA específica à qual o disco está conectado.
Gareth
Você pode apenas misturar discos?
Uma vez que eu misturei discos e zpool disse "discos contêm dados corrompidos". Depois que eu conectei discos na seqüência anterior, ele começou a funcionar.
Talvez depois que você importou zpool tanque reconhecido sequência correta.