Primeiramente vamos começar com o que estou executando. Este é um servidor de mídia doméstico que executa o Ubuntu 16.10. Eu tenho um pool de unidades de 6 terabytes espelhadas que são cerca de metade. Eu construí o sistema há cerca de um mês e está funcionando muito bem. Ele usa um SSD como uma unidade de inicialização e o pool mencionado acima como armazenamento. Eu fui capaz de fazer tudo o que eu precisava com essa piscina e tudo parece ótimo.
Ambas as unidades eram novas quando eu construí o sistema há cerca de um mês, e eu estava um pouco curioso sobre algumas vibrações extras com uma delas. Nada mal, mas o vendedor disse que ele iria substituí-lo sem nenhum custo, então eu estava planejando executar um matagal e puxá-lo para enviá-lo, correndo em um Estado degradado enquanto eu espero. Não há dados não salvos em backup, então não estou muito preocupado, mas obviamente seria mais fácil fazer dessa maneira do que matar o pool e restaurar a partir do backup.
Tudo o que estou realmente tentando fazer no momento é executar o scrub e desconectar com segurança a única unidade do espelho. Eu corro tanque esfregar zpool e, em seguida, imediatamente executar zpool status e eu posso ver o scrub acontecendo. Eu posso executar uma atualização a cada poucos segundos e ver atualizar o status muito bem. Ele é executado por cerca de 30 segundos e, em seguida, o status não mostra mais a execução. Além disso, eu nunca vi nada além do último scrub concluído em 0 horas e 0 minutos do status. Para mim, isso significa que o scrub não está acontecendo até a conclusão, como não deve um scrub demorar pelo menos várias horas com dois e meio terabytes de informação para passar.
O que estou perdendo?
pool: Tank
state: ONLINE
scan: scrub repaired 0 in 0h0m with 0 errors on Sun Feb 5 00:31:42 2017
config:
NAME STATE READ WRITE CKSUM
Tank ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sdb2 ONLINE 0 0 0
sdc2 ONLINE 0 0 0
errors: No known data errors
Estou tentando um scrub novamente agora para garantir que o problema ainda esteja atualizado. Aqui está um status cerca de 20 segundos depois de eu começar ...
pool: Tank
state: ONLINE
scan: scrub in progress since Fri Feb 10 14:25:12 2017
62.5M scanned out of 2.97T at 1.08M/s, (scan is slow, no estimated time)
0 repaired, 0.00% done
config:
NAME STATE READ WRITE CKSUM
Tank ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sdb2 ONLINE 0 0 0
sdc2 ONLINE 0 0 0
errors: No known data errors
e aqui está novamente após cerca de um minuto ...
pool: Tank
state: ONLINE
scan: scrub repaired 0 in 0h1m with 0 errors on Fri Feb 10 14:27:01 2017
config:
NAME STATE READ WRITE CKSUM
Tank ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sdb2 ONLINE 0 0 0
sdc2 ONLINE 0 0 0
errors: No known data errors
Estou ficando sem tempo para mandar a unidade "barulhenta" de volta, então eu a puxei. Eu não fiz nada além de desconectá-lo (enquanto o sistema estava funcionando). Tudo continua funcionando corretamente no momento, embora em um estado DEGRADED como esperado. Eu acho que vou continuar documentando minha experiência aqui desde que eu já comecei. Parece que ninguém mais está tendo esse problema. Eu não consigo encontrar mais ninguém na rede com a mesma situação. Sorte minha. Vamos ver o que acontece quando obtenho a unidade de substituição e o resilver. Quem sabe ... talvez os deuses dos dados tenham piedade de mim e simplesmente substituir a unidade forçará o problema a se consertar. : / Abaixo está minha saída depois de desconectar a unidade.
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://zfsonlinux.org/msg/ZFS-8000-4J
scan: scrub repaired 0 in 0h1m with 0 errors on Sun Feb 12 00:24:38 2017
config:
NAME STATE READ WRITE CKSUM
Tank DEGRADED 0 0 0
mirror-0 DEGRADED 0 0 0
sdb2 ONLINE 0 0 0
sdc2 UNAVAIL 0 0 0
errors: No known data errors
root@NAS:~# zpool status
pool: Tank
state: ONLINE
status: One or more devices has experienced an unrecoverable error. An
attempt was made to correct the error. Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
using 'zpool clear' or replace the device with 'zpool replace'.
see: http://zfsonlinux.org/msg/ZFS-8000-9P
scan: resilvered 525M in 0h3m with 0 errors on Wed Mar 29 14:28:46 2017
config:
NAME STATE READ WRITE CKSUM
Tank ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sdb2 ONLINE 0 0 0
sdc ONLINE 0 0 732
errors: No known data errors
Talvez outra pista para problemas? veja a partição do sdc ...
root@NAS:/dev# parted --list
Model: ATA Samsung SSD 850 (scsi)
Disk /dev/sda: 250GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 538MB 537MB fat32 EFI System Partition boot, esp
2 538MB 233GB 232GB ext4
3 233GB 250GB 17.1GB linux-swap(v1)
Warning: Not all of the space available to /dev/sdb appears to be used, you can
fix the GPT to use all of the space (an extra 7 blocks) or continue with the
current setting?
Fix/Ignore? i
Model: ATA HGST HUH728060AL (scsi)
Disk /dev/sdb: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 2097kB 2150MB 2147MB
2 2150MB 6001GB 5999GB zfs
Model: ATA HGST HUH728060AL (scsi)
Disk /dev/sdc: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 6001GB 6001GB zfs zfs-802af6a53a6d8383
9 6001GB 6001GB 8389kB
Sim, estou tentando corrigir esse problema há meses: /
Primeiro, após exportar / importar letras de unidade alteradas, observe que sdb se tornou sdc e sdc se tornou sdd.Acho que encontrei o problema e quero receber conselhos sobre como corrigi-lo. O problema foi finalmente descoberto quando eu corri "sudo fdisk -l". Abaixo estão os recortes pertinentes ...
Disk /dev/sdc: 5.5 TiB, 6001175126016 bytes, 11721045168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 7127FE7D-E061-11E6-BD1F-3497F600DDAF
Device Start End Sectors Size Type
/dev/sdc1 4096 4198399 4194304 2G FreeBSD swap
/dev/sdc2 4198400 11721043967 11716845568 5.5T FreeBSD ZFS
...
Disk /dev/sdd: 5.5 TiB, 6001175126016 bytes, 11721045168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: E799A1D5-F9B7-C843-AB62-AADC9B0A2180
Device Start End Sectors Size Type
/dev/sdd1 2048 11721027583 11721025536 5.5T Solaris /usr & Apple ZFS
/dev/sdd9 11721027584 11721043967 16384 8M Solaris reserved 1
Observe isto: o espelho foi originalmente criado no FreeNAS (FreeBSD). O sdc tem uma troca de 2G no início da unidade. O sdd foi criado no Ununtu e, por qualquer motivo, recebeu uma troca de 8M no final da unidade.
Agora, com receio de que o problema fosse um problema, eu afinei o sdd e rodei os badblocks nele. Isso limpa toda a informação. A boa notícia é que a unidade está bem, sem bloqueios ruins. Isso também redefine as partições para nada.
Eu tenho duas escolhas. 1.) Tente combinar manualmente as partições de sdd para a unidade de trabalho (sdc). Embora eu achasse que o zfs deveria fazer isso automaticamente apenas substituindo o zpool, talvez seja uma perda de tempo. 2.) Eu tenho os dados de backup, então eu poderia limpar as duas unidades e começar do zero, criar um novo espelho, e deixá-lo ser um pool nativo do Ubuntu.
Talvez isso esteja pensando demais, mas acho que corro um pouco mais de risco de destruir e restaurar. Eu estou tendo que destruir dados bons que só são copiados em um disco não espelhado, em seguida, rsyncing de volta para um pool recém-criado. FYI, eu usei rsync para criar o backup, e é no mesmo pc. Eu tive que dividir 3 drives juntos sem redundância para caber todos os dados nele. Eu também estou com medo de que mover os dados de um jeito assim sem uma maneira de esfregar isso pode me dar alguma corrupção e eu nunca saberia.
Alguém tem algum conselho? Obrigado!