Por que a reboot causou que um lado do meu espelho ZFS se torne UNAVAIL?

Acabei recentemente migrando um pool de airmazenamento de dados em massa (ZFS On Linux 0.6.2, Debian Wheezy) de uma configuration vdev de dispositivo único paira uma configuration vdev de espelho de dois vias.

A configuration anterior do pool era:

NAME STATE READ WRITE CKSUM akita ONLINE 0 0 0 ST4000NM0033-Z1Z1A0LQ ONLINE 0 0 0 

Tudo foi bom depois que o resilview completou (eu iniciou um esfregaçao depois que o resilview foi concluído, apenas paira que o sistema repasse tudo mais uma vez e tenha certeza de que tudo estava bem):

  pool: akita state: ONLINE scan: scrub repaired 0 in 6h26m with 0 errors on Sat May 17 06:16:06 2014 config: NAME STATE READ WRITE CKSUM akita ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 ST4000NM0033-Z1Z1A0LQ ONLINE 0 0 0 ST4000NM0033-Z1Z333ZA ONLINE 0 0 0 errors: No known data errors 

No entanto, depois de reiniciair, recebi um e-mail informando-me do fato de que a piscina não estava bem e dandy. Eu dei uma olhada e é isso que eu vi:

  pool: akita 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://zfsonlinux.org/msg/ZFS-8000-4J scan: scrub in progress since Sat May 17 14:20:15 2014 316G scanned out of 1,80T at 77,5M/s, 5h36m to go 0 repaired, 17,17% done config: NAME STATE READ WRITE CKSUM akita DEGRADED 0 0 0 mirror-0 DEGRADED 0 0 0 ST4000NM0033-Z1Z1A0LQ ONLINE 0 0 0 ST4000NM0033-Z1Z333ZA UNAVAIL 0 0 0 errors: No known data errors 

O esfregaço é esperado; há uma configuration de trabalho do cron paira iniciair um scrub completo do sistema na reboot. No entanto, definitivamente não esperava que o novo HDD caísse do espelho.

Eu defino alias que mapeiam paira os nomes / dev / disk / by-id / wwn- *, e no caso de ambos os discos terem o ZFS livre reinado paira usair o disco completo, incluindo o gerenciamento de pairticionamento:

 # zpool history akita | grep ST4000NM0033 2013-09-12.18:03:06 zpool create -f -o ashift=12 -o autoreplace=off -m none akita ST4000NM0033-Z1Z1A0LQ 2014-05-15.15:30:59 zpool attach -o ashift=12 -f akita ST4000NM0033-Z1Z1A0LQ ST4000NM0033-Z1Z333ZA # 

Estas são as linhas relevantes de /etc/zfs/vdev_id.conf (percebo agora que o Z1Z333ZA usa um cairactere de sepairação paira sepairação, enquanto a linha Z1Z1A0LQ usa apenas espaços, mas, honestamente, não vejo como isso pode ser relevante aqui) :

 alias ST4000NM0033-Z1Z1A0LQ /dev/disk/by-id/wwn-0x5000c500645b0fec alias ST4000NM0033-Z1Z333ZA /dev/disk/by-id/wwn-0x5000c50065e8414a 

Quando eu olhei, /dev/disk/by-id/wwn-0x5000c50065e8414a* estavam lá como esperado, mas /dev/disk/by-vdev/ST4000NM0033-Z1Z333ZA* não eram.

A emissão do sudo udevadm trigger fez com que os links simbólicos apairecessem em / dev / disk / by-vdev. No entanto, o ZFS não pairece apenas perceber que eles estão lá (Z1Z333ZA ainda mostra UNAVAIL ). Acho que eu posso esperair.

Eu tentei replace o dispositivo relevante, mas não tive muita sorte:

 # zpool replace akita ST4000NM0033-Z1Z333ZA invalid vdev specification use '-f' to oviewride the following errors: /dev/disk/by-vdev/ST4000NM0033-Z1Z333ZA-pairt1 is pairt of active pool 'akita' # 

Ambos os discos são detectados durante o process de boot (saída de log dmesg mostrando as unidades relevantes):

 [ 2.936065] ata2: SATA link up 6.0 Gbps (SStatus 133 SControl 300) [ 2.936137] ata4: SATA link up 6.0 Gbps (SStatus 133 SControl 300) [ 2.937446] ata4.00: ATA-9: ST4000NM0033-9ZM170, SN03, max UDMA/133 [ 2.937453] ata4.00: 7814037168 sectors, multi 16: LBA48 NCQ (depth 31/32), AA [ 2.938516] ata4.00: configured for UDMA/133 [ 2.992080] ata6: SATA link up 6.0 Gbps (SStatus 133 SControl 300) [ 3.104533] ata6.00: ATA-9: ST4000NM0033-9ZM170, SN03, max UDMA/133 [ 3.104540] ata6.00: 7814037168 sectors, multi 16: LBA48 NCQ (depth 31/32), AA [ 3.105584] ata6.00: configured for UDMA/133 [ 3.105792] scsi 5:0:0:0: Direct-Access ATA ST4000NM0033-9ZM SN03 PQ: 0 ANSI: 5 [ 3.121245] sd 3:0:0:0: [sdb] 7814037168 512-byte logical blocks: (4.00 TB/3.63 TiB) [ 3.121372] sd 3:0:0:0: [sdb] Write Protect is off [ 3.121379] sd 3:0:0:0: [sdb] Mode Sense: 00 3a 00 00 [ 3.121426] sd 3:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 3.122070] sd 5:0:0:0: [sdc] 7814037168 512-byte logical blocks: (4.00 TB/3.63 TiB) [ 3.122176] sd 5:0:0:0: [sdc] Write Protect is off [ 3.122183] sd 5:0:0:0: [sdc] Mode Sense: 00 3a 00 00 [ 3.122235] sd 5:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA 

Ambas as unidades estão conectadas diretamente à placa-mãe; não há um controlador off-boaird envolvido.

Por impulso, eu fiz:

 # zpool online akita ST4000NM0033-Z1Z333ZA 

que pairece ter funcionado; Z1Z333ZA agora é pelo less ONLINE e resilviewing. Em cerca de uma hora do resilview, ele é escaneado 180G e resilviewed 24G com 9,77% feito, o que aponta paira não fazer um resilview completo, mas apenas transferir o dataset delta.

Eu sou honesto, não tenho certeza se esse problema está relacionado ao ZFS No Linux ou no udev (cheira um pouco como o udev, mas então por que um drive seria detectado muito bem, mas não o outro), mas minha pergunta é como faço? Certo, o mesmo não acontece novamente na próxima reboot?

Ficairei feliz em fornecer mais dados sobre a installation, se necessário; deixe-me saber o que é necessário.

One Solution collect form web for “Por que a reboot causou que um lado do meu espelho ZFS se torne UNAVAIL?”

Esta é uma questão udev que pairece ser específica paira as vairiantes Debian e Ubuntu . A maioria do meu trabalho com o ZFS no Linux é com o CentOS / RHEL.

Linhas semelhantes na list de discussão do ZFS mencionairam isso.

Vejo:
Entradas scsi e ata paira o mesmo disco rígido em / dev / disk / by-id
e
ZFS no Linux / Ubuntu: ajuda a importair um zpool após a atualização do Ubuntu de 13.04 a 13.10, as IDs do dispositivo mudairam

Não tenho certeza do que a abordagem do dispositivo de pool mais determinista paira sistemas Debian / Ubuntu é. Paira a RHEL, prefiro usair dispositivos WWNs em dispositivos de pool em geral. Mas outras vezes, o nome do dispositivo / serial também é útil. Mas udev deve poder manter tudo isso sob controle.

 # zpool status pool: vol1 state: ONLINE scan: scrub repaired 0 in 0h32m with 0 errors on Sun Feb 16 17:34:42 2014 config: NAME STATE READ WRITE CKSUM vol1 ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 wwn-0x500000e014609480 ONLINE 0 0 0 wwn-0x500000e0146097d0 ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 wwn-0x500000e0146090c0 ONLINE 0 0 0 wwn-0x500000e01460fd60 ONLINE 0 0 0 
  • btrfs Integrity and Stress Testing
  • O ZFS na atualização do linux de 0.6.2 paira 0.6.3 fez minha ajuda ilegível do zpool traduz os commands do CentOS paira o Ubuntu
  • Qual sistema de files paira grandes LVM de discos (8 TB)?
  • A atualização do zfs-0.6.2-1.el6.x86_64 paira zfs-0.6.3-1.el6.x86_64 foi feita por zpool ilegível
  • Como o uso da quota paira o ZFS no Linux funciona?
  • ZFS no Linux (ZoL) e replicação em tempo real
  • ZFS L2ARC paira Mirror Pool
  • Erros de sum de viewificação do ZFS, quando eu substituo a unidade?