Originalmente, criei um RAID de software usando um controlador que só podia endereçar 2 TB por disco. Os discos são de 3 TB. Funcionou bem, mas usou apenas os primeiros 2 TB de cada disco.
Agora mudei o controlador para ver os 3 TB completos. Por isso, também gostaria /dev/md0
de usar os últimos 1 TB.
Eu tentei:
# mdadm --grow /dev/md0 --size=max
mdadm: component size of /dev/md0 has been set to 2147479552K
Mas como você pode ver, só vê os 2TB. Se eu tentar forçá-lo mais alto:
# mdadm --grow /dev/md0 --size=2147483648
mdadm: Cannot set device size for /dev/md0: No space left on device
Então, de alguma forma, o sistema pode ver os discos com 3 TB (pol /proc/partitions
), mas o RAID não pode vê-los com 3 TB.
detalhes do mdadm:
# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Mar 2 15:14:46 2012
Raid Level : raid6
Array Size : 38654631936 (36863.93 GiB 39582.34 GB)
Used Dev Size : 2147479552 (2048.00 GiB 2199.02 GB)
Raid Devices : 20
Total Devices : 21
Persistence : Superblock is persistent
Update Time : Wed Apr 25 19:47:09 2012
State : active
Active Devices : 20
Working Devices : 21
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 4096K
Name : node5:1
UUID : 8603c3df:b740ba22:8c9c82fd:a18b3133
Events : 845
Number Major Minor RaidDevice State
20 65 32 0 active sync /dev/sds
1 65 64 1 active sync /dev/sdu
2 65 80 2 active sync /dev/sdv
3 65 96 3 active sync /dev/sdw
4 8 192 4 active sync /dev/sdm
5 8 32 5 active sync /dev/sdc
6 8 48 6 active sync /dev/sdd
7 8 64 7 active sync /dev/sde
8 8 80 8 active sync /dev/sdf
9 8 96 9 active sync /dev/sdg
10 8 112 10 active sync /dev/sdh
11 8 128 11 active sync /dev/sdi
12 8 144 12 active sync /dev/sdj
13 8 160 13 active sync /dev/sdk
14 8 176 14 active sync /dev/sdl
15 8 208 15 active sync /dev/sdn
16 8 224 16 active sync /dev/sdo
17 8 240 17 active sync /dev/sdp
18 65 0 18 active sync /dev/sdq
19 65 16 19 active sync /dev/sdr
21 65 48 - spare /dev/sdt
Tamanhos de disco:
# cat /proc/partitions |grep 2930266584
8 48 2930266584 sdd
8 32 2930266584 sdc
8 112 2930266584 sdh
8 96 2930266584 sdg
8 80 2930266584 sdf
8 128 2930266584 sdi
8 176 2930266584 sdl
8 64 2930266584 sde
65 32 2930266584 sds
8 192 2930266584 sdm
8 144 2930266584 sdj
65 80 2930266584 sdv
8 224 2930266584 sdo
8 208 2930266584 sdn
8 160 2930266584 sdk
8 240 2930266584 sdp
65 0 2930266584 sdq
65 64 2930266584 sdu
65 16 2930266584 sdr
65 48 2930266584 sdt
65 96 2930266584 sdw
Editar:
# mdadm --version
mdadm - v3.1.4 - 31st August 2010
# uname -a
Linux lemaitre 3.2.0-0.bpo.1-amd64 #1 SMP Sat Feb 11 08:41:32 UTC 2012 x86_64 GNU/Linux
O RAID6 usa os discos completos (ou seja, sem partições)
Esta manhã, o sistema travou. Após uma reinicialização, o sistema não encontrou o RAID (o que foi terrível). Todos os discos apareceram como peças de reposição (S):
cat /proc/mdstat
Personalities :
md0 : inactive sdr[20](S) sds[21](S) sdq[18](S) sdp[17](S) sdo[16](S) sdn[15](S) sdl[14](S) sdk[13](S) sdj[12](S) sdi[11](S) sdh[10](S) sdg[9](S) sdf[8](S) sde[7](S) sdd[6](S) sdc[5](S) sdm[4](S) sdv[3](S) sdu[2](S) sdt[1](S)
42949652460 blocks super 1.2
Mesmo aqui, fica claro que mdadm
não encontrou o tamanho de 3 TB.
Corri mdadm --stop /dev/md0
. Removida a entrada em /etc/mdadm/mdadm.conf. Ran
mdadm -A --scan --force
, que fez com que o RAID ficasse online e reconstruísse.
fonte
fdisk -l /dev/sdd
mostra? Qual sistema operacional você está usando, qual é a versão mdadm?Respostas:
Eu bisbilhotei / sys e fiquei muito mais perto da resposta.
Isso concorda com o que vimos antes. Mas isso:
parece explicar por que o RAID vê o tamanho errado: a maioria das unidades aparece como 2 TB, enquanto as 2 que foram substituídas aparecem como 3 TB. Todas as unidades são do mesmo modelo, então vamos ver se podemos alterar o tamanho percebido:
Voila. Component_size ainda é pequeno, no entanto:
Talvez isso possa ser alterado pelo mdadm:
Infelizmente, isso trava
mdadm
e o acesso subsequente ao / dev / md0 é bloqueado. E o mesmo acontece com o acesso ao component_size:É uma merda. Mas a parte boa é que no syslog diz:
O sistema de arquivos em / dev / md0 ainda foi executado.
Após uma reinicialização, tive que fazer 'mdadm --grow / dev / md0 --size = max' novamente. Então aguarde para
resync
concluir. Novamente, o acesso ao / dev / md0 foi bloqueado. Portanto, mais uma reinicialização, seguida porxfs_growfs /dev/md0
e, em seguida, o redimensionamento foi concluído.fonte
Acho que durante a criação o tamanho do dispositivo foi registrado em algum lugar nos metadados. Alterar o controlador não altera os metadados.
Remova o sobressalente do md e adicione-o novamente ao conjunto RAID como uma nova unidade. Você provavelmente precisará remover os metadados (verifique a página do manual --zero-superblock ou limpe todo o disco). Se isso funcionar para um único disco, repita também o procedimento para todas as unidades restantes. Então finalmente faça o --grow.
Não remova discos adicionais até a sincronização terminar!
fonte
fail
dirigir, eremove
depoiszero-superblock
remover os metadados. Como o seu conjunto RAID está em uso, você pode adicioná-lo como sobressalente, o que significa que ele não será sincronizado até que outra unidade falhe (que é um comportamento normal), mas funciona apenas para uma única unidade OU para vocêadd
e requer uma sincronização. Eu sei que leva uma eternidade. Ou você aceita o fato de que não pode adicionar todo o armazenamento disponível. Uma das vantagens de usar uma tabela de partição que você não utilizou. Não usar uma tabela de partição não é ruim, mas nesse caso em particular teria ajudado.