Tengo mi partición / boot en una matriz RAID 1 usando mdadm. Esta matriz se ha degradado varias veces en el pasado, y cada vez que quito la unidad física, agrego una nueva, llevo la matriz a la normalidad, utiliza una nueva letra de unidad. Dejando el viejo todavía en la matriz y falló. Parece que no puedo eliminar todos los componentes que ya no existen.
[root@xxx ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdg1[10] sde1[8](F) sdb1[7](F) sdd1[6](F) sda1[4] sdc1[5]
358336 blocks super 1.0 [4/3] [UUU_]
Esto es lo que he intentado eliminar las unidades y particiones inexistentes. Por ejemplo, /dev/sdb1
.
[root@xxx ~]# mdadm /dev/md0 -r /dev/sdb1
mdadm: Cannot find /dev/sdb1: No such file or directory
[root@xxx ~]# mdadm /dev/md0 -r faulty
mdadm: Cannot find 8:49: No such file or directory
[root@xxx ~]# mdadm /dev/md0 -r detached
mdadm: Cannot find 8:49: No such file or directory
Que 8:49
creo se refiere al número mayor y menor se muestra en --detail
, pero no estoy muy seguro de dónde ir desde aquí. Estoy tratando de evitar reiniciar o reiniciar mdadm.
[root@xxx ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.0
Creation Time : Thu Aug 8 18:07:35 2013
Raid Level : raid1
Array Size : 358336 (350.00 MiB 366.94 MB)
Used Dev Size : 358336 (350.00 MiB 366.94 MB)
Raid Devices : 4
Total Devices : 6
Persistence : Superblock is persistent
Update Time : Sat Apr 18 16:44:20 2015
State : clean, degraded
Active Devices : 3
Working Devices : 3
Failed Devices : 3
Spare Devices : 0
Name : xxx.xxxxx.xxx:0 (local to host xxx.xxxxx.xxx)
UUID : 991eecd2:5662b800:34ba96a4:2039d40a
Events : 694
Number Major Minor RaidDevice State
4 8 1 0 active sync /dev/sda1
10 8 97 1 active sync /dev/sdg1
5 8 33 2 active sync /dev/sdc1
6 0 0 6 removed
6 8 49 - faulty
7 8 17 - faulty
8 8 65 - faulty
Nota: La matriz está legítimamente degradada en este momento y estoy recibiendo una nueva unidad mientras hablamos. Sin embargo, como puede ver arriba, eso no debería importar. Todavía debería poder eliminar /dev/sdb1
de esta matriz.
Respuestas:
Esto se debe a que los nodos del dispositivo ya no existen en su sistema (probablemente udev los eliminó cuando la unidad murió). Debería poder eliminarlos utilizando la palabra clave
failed
o en sudetached
lugar:Si su versión de mdadm es demasiado antigua para hacerlo, es posible que pueda hacer que funcione si
mknod
el dispositivo vuelve a existir. O, honestamente, simplemente ignórelo, no es realmente un problema, y debería desaparecer la próxima vez que reinicie.fuente
mknod
. Sí, probablemente no sea un problema, pero soy TOC, jajaja.Lo que terminé haciendo fue usar
mknod
como @derobert sugirió crear los dispositivos quemdadm
estaba buscando. Probé los números mayores / menores que mdadm me decía que no podía encontrar con las diferentes letras de unidad que estaba tratando de eliminar hasta que funcionó.Luego tuve que usar la
--force
opción para que eliminara el componente.Luego, eliminé ese dispositivo de bloque creado.
fuente
mdadm
continuó diciendo: "dispositivo o recurso ocupado", pero esto me hizo tratar de alimentarlo no con un dispositivo de bloqueo falso, sino con un dispositivo de bloque "verdadero" como una imagen montada en bucle invertido. En este punto, descubrí que tenía un problema/dev/loop
que todavía usaba un archivo en la matriz degradada. Lo separé y finalmentemdadm
me dejó detener la matriz. Horay! Para todos los que lean esto, siempre hay una explicación lógica paramdadm
ser tan imbécil, así que busque un proceso obsoleto / archivo / punto de montaje / controlador nfs / bash abierto / dispositivo loopback / etc. Todavía usando la matriz degradada. :)También puede solucionarlo simplemente desengrasando el número de discos en la matriz:
En mi caso tengo una matriz raid-1
/dev/md0
con/dev/sda1
y "eliminado". Simplemente lo reduje para usar solo una unidad:Después de eso, se eliminó realmente (ya no se eliminaron líneas
mdadm --detail
)fuente