Originalmente creé un RAID de software usando un controlador que solo podía direccionar 2TB por disco. Los discos son discos de 3 TB. Funcionó bien, pero solo usó los primeros 2 TB de cada disco.
Ahora he cambiado el controlador para ver los 3 TB completos. Por lo tanto, me gustaría /dev/md0
usar la última 1 TB también.
Yo he tratado:
# mdadm --grow /dev/md0 --size=max
mdadm: component size of /dev/md0 has been set to 2147479552K
Pero como puede ver, solo ve los 2TB. Si trato de forzarlo más alto:
# mdadm --grow /dev/md0 --size=2147483648
mdadm: Cannot set device size for /dev/md0: No space left on device
Entonces, de alguna manera, el sistema puede ver que los discos son de 3TB (in /proc/partitions
), pero el RAID no puede verlos como 3TB.
Detalles de 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
Tamaños 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
El RAID6 usa los discos completos (es decir, sin particiones)
Esta mañana el sistema falló. Después de reiniciar el sistema no encontró el RAID (lo cual fue terrible). Todos los discos aparecieron como repuestos (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
Incluso aquí está claro que mdadm
no encontró el tamaño de 3 TB.
Me encontré mdadm --stop /dev/md0
. Se eliminó la entrada en /etc/mdadm/mdadm.conf. Ran
mdadm -A --scan --force
, lo que provocó que el RAID se conectara y reconstruyera.
fuente
fdisk -l /dev/sdd
muestra? ¿Qué sistema operativo está utilizando, cuál es la versión mdadm?Respuestas:
Busqué / sys y me acerqué mucho a la respuesta.
Eso concuerda con lo que hemos visto antes. Pero esto:
parece explicar por qué el RAID ve el tamaño incorrecto: la mayoría de las unidades se muestran como 2 TB mientras que las 2 que se han reemplazado se muestran como 3 TB. Todas las unidades son del mismo modelo, así que veamos si podemos cambiar el tamaño percibido:
Voila Sin embargo, Component_size todavía es pequeño:
Tal vez pueda ser cambiado por mdadm:
Desafortunadamente, esto se bloquea
mdadm
y el acceso posterior a / dev / md0 está bloqueado. Y también lo es el acceso a component_size:Apesta Pero lo bueno es que en syslog dice:
El sistema de archivos en / dev / md0 todavía se ejecutó.
Después de reiniciar tuve que hacer 'mdadm --grow / dev / md0 --size = max' nuevamente. Luego espera para
resync
completar. Nuevamente se bloqueó el acceso a / dev / md0. Entonces, otro reinicio, seguido porxfs_growfs /dev/md0
y luego se completó el cambio de tamaño.fuente
Creo que durante la creación, el tamaño del dispositivo se registró en algún lugar de los metadatos. Cambiar el controlador no cambia los metadatos.
Retire el repuesto del md, luego vuelva a agregarlo al conjunto RAID como una nueva unidad. Probablemente tenga que eliminar los metadatos (consulte la página de manual para --zero-superblock o limpie todo el disco). Si eso funciona para un solo disco, repita el procedimiento para todas las unidades restantes también. Luego, finalmente, haz el ...
¡No elimines discos adicionales hasta que finalice la sincronización!
fuente
fail
conducir, luegoremove
,zero-superblock
para eliminar los metadatos. Como su conjunto RAID está en uso, puede agregarlo como repuesto, lo que significa que no se sincronizará hasta que falle otra unidad (ese es el comportamiento normal), pero solo funciona para una sola unidad O ustedadd
y requiere una sincronización. Sé que lleva una eternidad. O acepta el hecho de que no puede agregar todo el almacenamiento disponible. Una de las ventajas de usar una tabla de particiones que no hiciste. No usar una tabla de particiones no está mal, pero en este caso particular te habría ayudado.