
Tengo tres discos que solían contener una matriz MD RAID5. Desde entonces, eliminé (o eso pensé) esta matriz y creé particiones para btrfs y espacio de intercambio. Al reiniciar la máquina, MD aún vincula los dispositivos que solían contener la matriz anterior, lo que provoca que el nuevo sistema de archivos no se pueda montar.
Me sugirieron que los viejos superbloques de las matrices raid podrían quedar atrás, lo que haría que MD pensara que es una matriz real y, por lo tanto, vincularía los discos. La solución sugerida fue utilizar mdadm --zero-superblock para borrar el superbloque de los discos afectados. Sin embargo, no sé realmente qué hace esto con el disco. Dado que este disco contiene particiones, realmente no quiero comenzar a poner a cero partes del mismo a ciegas.
Entonces, ¿qué procedimiento debo seguir para borrar de forma segura los superbloques MD sin dañar las otras particiones y sistemas de archivos de las unidades?
Básicamente, esta pregunta plantea lo mismo, pero no hay una respuesta clara sobre si se supone que hacer mdadm --zero-superblock en un dispositivo reparticionado es realmente seguro:partición oculta/sombreada del superbloque mdadm
Respuesta1
https://raid.wiki.kernel.org/index.php/RAID_superblock_formats
El superbloque tiene una longitud de 4K y está escrito en un bloque alineado de 64K que comienza al menos a 64K y a menos de 128K del final del dispositivo (es decir, para obtener la dirección del superbloque, redondea el tamaño del dispositivo a un múltiplo de 64K y luego reste 64K). El tamaño disponible de cada dispositivo es la cantidad de espacio antes del superbloque, por lo que se pierden entre 64K y 128K cuando un dispositivo se incorpora a una matriz MD.
Entonces ya es demasiado tarde.y podría ser inseguropara usar --zero-superblock
, porque no sabemos si hay datos o no; debe cambiar el tamaño/reducir su partición actual desde -128K
el final de la partición x-RAID, luego borrar esa parte y volver a hacer crecer la partición.
Otra opción 1: escribir archivos grandes para llenar todo el disco, sobrescribirá los superbloques RAID y el mdadm no los reconocerá.
Otra opción 2: similar a la 1:https://unix.stackexchange.com/questions/44234/clear-unused-space-with-zeros-ext3-ext4
Respuesta2
wipefs --all /dev/sd[4ppropr14t3][123]
(¡Por supuesto, configure el globo para sus unidades/particiones!)
Respuesta3
Así es como lo descubrí (puede que sea bastante específico para mi caso, pero intentaré mantenerlo general en la medida de lo posible).
(Cuando hablo de dispositivos, me refiero a los dispositivos que componen el volumen raid, no a la matriz raid en sí)
Solía mdadm -E $DEVICE
descubrir qué formato de metadatos estaba usando la matriz. luego fui araid.wiki.kernel.orgpara encontrar información sobre el formato de superbloque. En mi caso esta fue la versión 0.90.
Este formato tiene el superbloque almacenado hacia el final del dispositivo. Aquí es donde entra en juego mi situación. Mi antigua matriz se creó directamente en las unidades, sin particiones. Debido a esto, sabía que el superbloque debería estar al final del dispositivo. Mi nueva partición incluía una partición de intercambio al final. Por lo tanto, no había muchos datos que perder sobre dónde estaba ubicada la supermanzana.
Leí un poco y la conclusión a la que llegué fue que mdadm --zero-superblock
solo pone a cero el superbloque y, por lo tanto, debería ser seguro en mi caso. Seguí adelante y eliminé los superbloques en los tres dispositivos:
mdadm --stop $ONE_OF_THE_DEVICES
Repita esta línea según sea necesario
mdadm --zero-superblock $DEVICE
Algunos comentarios/especulación adicionales:
Generalmente, si el espacio es necesario para las nuevas particiones/sistemas de archivos, ya debería haberse sobrescrito. Por lo tanto, si el superbloque sigue ahí, ponerlo a cero no debería dañar los sistemas de particiones/archivos. Sin embargo, no estoy seguro de cómo maneja MD el caso en el que el superbloque ya se ha sobrescrito en uno o muchos de los dispositivos, pero no en todos. La página de manual dice que -f es necesario para poner a cero el superbloque si no es válido, pero téngalo en cuenta.