GNU/Linux >> Tutoriales Linux >  >> Linux

El nombre del dispositivo MD cambia para incluir HOSTNAME:después del primer reinicio. ¿Cómo obtengo un nombre coherente?

¿Cómo obtengo una ruta de dispositivo consistente para mi dispositivo MD, idealmente la exacta que especifiqué ("/dev/md/myarray")?

Después de mdadm --create /dev/md/foobar ... , ambos hostname y name se almacenan en los metadatos de mdadm, como debe verificar con mdadm --examine o mdadm --detail :

# mdadm --detail /dev/md/foobar
           Name : ALU:foobar  (local to host ALU)

ALU resulta ser el nombre de host de mi máquina ArchLinux:

# hostname
ALU

Puede especificar el host que debe almacenarse en el momento de la creación:

# mdadm --create /dev/md/foobar --homehost=barfoo
# mdadm --detail /dev/md/foobar
               Name : barfoo:foobar

...pero normalmente nadie se acuerda de hacerlo.

Y ahí es donde comienzan los problemas... es posible que haya creado su matriz RAID a partir de algún LiveCD u otro, y el nombre de host en ese entorno no coincidía en absoluto con su instalación principal. Y luego los metadatos almacenan un nombre de host completamente no relacionado.

Del mismo modo, si configura todo correctamente, pero luego encuentra problemas con su RAID e inicia un sistema de rescate para verificar las cosas, nuevamente hay una falta de coincidencia con los nombres de host.

O al revés, el nombre de host puede coincidir incluso si es la máquina incorrecta, si usó el mismo nombre de host para dos sistemas independientes y luego migró las unidades. Luego, las matrices alienígenas toman los nombres de las originales...

Ahora, los metadatos también se pueden cambiar más tarde usando mdadm --assemble --update=homehost o --update=name , esa es una forma de lidiar con el problema. Debe configurarse correctamente, pero es difícil cambiarlo ya que (por alguna razón) aparte de la edición hexadecimal de los metadatos directamente, solo se puede hacer en el momento del ensamblaje.

Otra forma es ignorar los sistemas hostname y en su lugar especifique --homehost en ensamblaje o conjunto HOMEHOST en mdadm.conf . Esto se describe con cierto detalle en la página de manual de mdadm.conf.

HOMEHOST
La línea homehost proporciona un valor predeterminado para la opción --homehost=de mdadm. Normalmente, solo debe haber otra palabra en la línea. Debe ser un nombre de host o una de las palabras especiales <system> , <none> y <ignore> . Si <system> se proporciona, luego se utiliza la llamada al sistema gethostname(2) para obtener el nombre del host. Este es el valor predeterminado.
[...]
Cuando se crean matrices, este nombre de host se almacenará en los metadatos. Cuando los arreglos se ensamblan mediante el ensamblaje automático, los arreglos que no registran el nombre de host principal correcto en sus metadatos se ensamblarán con un nombre "extranjero". Un nombre "extranjero" siempre termina con una cadena de dígitos precedida por un guión bajo para diferenciarlo de cualquier posible nombre local. p.ej. /dev/md/1_1 o /dev/md/home_0.

Entonces puedes intentar configurar HOMEHOST ALU (en mi caso), o el más genérico HOMEHOST <ignore> (o HOMEHOST <none> ) en el mdadm.conf . Pero solo funcionará cuando mdadm.conf está presente. Y nuevamente, si configura ignorar y luego conecta una matriz desde otra máquina, es posible que se encuentre con conflictos de nombres.

Por lo tanto, sería mejor configurar correctamente el nombre de host en metadatos y mdadm.conf y no ignorarlo, y mejor aún configurar el nombre de host real en initramfs antes del ensamblaje, pero puede ser difícil de poner en práctica.

Mi preferencia personal es apegarme al estilo numérico clásico. Identificar por UUID y nada más:

ARRAY /dev/md1 UUID=8fe790ca:f3fa3388:4ae125b6:2c3a5d44
ARRAY /dev/md2 UUID=f14bef5b:a5356e51:25fde128:09983091
ARRAY /dev/md3 UUID=0639c68d:4c844bb1:5c02b33e:00ab4a93

Esto también es coherente (pero también depende de que se haya creado de esta manera y/o se haya configurado en consecuencia en los metadatos; de lo contrario, es posible que también deba --update eso). Y las matrices alienígenas que no coinciden con los UUID dados deberían terminar como /dev/md127+ .

Al final del día, no importa lo que hagas, no debes confiar ciegamente en /dev/mdX o /dev/md/name es de la misma manera que no confía ciegamente en /dev/sdX letras. Utilice siempre los UUID del sistema de archivos para identificar lo que haya en esos arreglos.

Hay demasiados casos en los que los nombres pueden cambiar inesperadamente, por lo que, en el mejor de los casos, esto puede ser una ayuda de orientación o una pista para el administrador del sistema, no es la respuesta a todos los problemas.


Linux
  1. Linux:¿cómo obtener de manera confiable el nombre del sistema operativo?

  2. ¿Cómo obtener PID por nombre de proceso?

  3. ¿Cómo desarmo o me deshago de una función bash?

  4. Cómo cambiar el nombre de un dispositivo MD (mdadm)

  5. ¿Cómo vincular cámaras USB v4l2 a los mismos nombres de dispositivo incluso después de reiniciar?

Cómo cambiar el nombre de host en Debian Linux

¿Cómo hacer que un dispositivo RAID inactivo vuelva a funcionar?

¿Cómo hacer que mi puerta de enlace predeterminada sea permanente en CentOS? Para que después de un reinicio no se pierda

¿Cómo obtener el nombre de dominio en Windows usando el comando?

¿Cómo hacer que las interfaces de toque sean persistentes después de reiniciar?

Android - ¿Cómo hago para que ADB detecte mi dispositivo en Linux?