¿Cómo cambio el nombre de una matriz de raid mdadm?

19

Por alguna razón, cuando trato de cambiar el nombre de una matriz mdadm raid por un nombre textual, el cambio no se lleva a cabo.

Probé el consejo de esta pregunta de servidor , pero fue en vano.

~$ mdadm --version
mdadm - v3.1.4 - 31st August 2010

~$ sudo mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
  Creation Time : Tue Sep 27 08:32:32 2011
     Raid Level : raid1
     Array Size : 1953513424 (1863.02 GiB 2000.40 GB)
  Used Dev Size : 1953513424 (1863.02 GiB 2000.40 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent
    Update Time : Sun Oct  2 17:59:37 2011
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : omicron:0  (local to host omicron)
           UUID : 75c4a555:482aecd0:ade70dfc:1547926a
         Events : 17

Number   Major   Minor   RaidDevice State
   0       8       80        0      active sync   /dev/sdf
   1       8       96        1      active sync   /dev/sdg

~$ sudo mdadm --stop /dev/md0
mdadm: stopped /dev/md0

~$ sudo mdadm --assemble /dev/md/alpha --update=name /dev/sd[gf]
mdadm: /dev/md/alpha has been started with 2 drives.

~$ sudo mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Tue Sep 27 08:32:32 2011
     Raid Level : raid1
     Array Size : 1953513424 (1863.02 GiB 2000.40 GB)
  Used Dev Size : 1953513424 (1863.02 GiB 2000.40 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent
    Update Time : Sun Oct  2 18:06:11 2011
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : omicron:0  (local to host omicron)
           UUID : 75c4a555:482aecd0:ade70dfc:1547926a
         Events : 17

Number   Major   Minor   RaidDevice State
   0       8       80        0      active sync   /dev/sdf
   1       8       96        1      active sync   /dev/sdg

~$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdf[0] sdg[1]
      1953513424 blocks super 1.2 [2/2] [UU]

md126 : active (auto-read-only) raid1 sdd[0] sde[1]
      1953513424 blocks super 1.2 [2/2] [UU]

md127 : active (auto-read-only) raid1 sdb[0] sda[1]
      976762496 blocks [2/2] [UU]

unused devices: <none>

Como puede ver, el nombre todavía se informa como omicron:0 y aún se puede acceder a través del archivo del dispositivo anterior. Probar sudo mdadm --detail /dev/md/alpha funcionará e informará el mismo nombre, incorrecto, hasta el próximo reinicio, cuando deje de funcionar.

Parece que al averiguar qué nombre poner, mdadm se confunde y simplemente crea el archivo del dispositivo en su lugar.

ASIDE

¿Hay alguna forma de hacer que mdadm fuerce una actualización de la parte del nombre del superbloque (es decir, establezca explícitamente el nombre que desea que tenga el conjunto) sin tener que volver a crear explícitamente el superbloque? (es decir, sudo mdam --zero-superblock /dev/sd[fg]; sudo mdadm --create /dev/md/alpha --raid-devices=2 --level=1 --assume-clean --name=alpha /dev/sd[fg] )

El problema es que después del reinicio, a pesar de agregar ARRAY /dev/md/alpha metadata=1.2 name=omicron:alpha UUID=c66a267... a mdadm.conf, el archivo del dispositivo nombrado desaparece y se reemplaza por uno de formato estándar. (/ dev / md125 o similar)

¿Cómo puedo hacer que una matriz renombrada mdadm mantenga su nombre? - Es decir - ¿Cómo puedo hacer que ubuntu persista los archivos del dispositivo entre las botas?

    
pregunta Zaz 02.10.2011 - 16:31

6 respuestas

16

En realidad, debes ponerle el nombre con --name= como:

sudo mdadm --assemble /dev/md/alpha --name=newname --update=name /dev/sd[gf]

Para tener un comportamiento consistente durante el reinicio, debe usar el mismo nombre en el argumento --name que en la última parte del dispositivo. Aquí estaría: sudo mdadm --samble / dev / md / alpha --name = alpha --update = nombre / dev / sd [gf]

Consulte la publicación de Khassad a continuación para obtener una explicación completa.

    
respondido por el pille 05.10.2011 - 07:49
9

La forma de hacer que Ubuntu persista en el cambio de nombre entre botas es actualizar tu initramfs. Después de actualizar su nombre de matriz y mdadm.conf, debe emitir el siguiente comando:

sudo update-initramfs -u

Todo el proceso:

sudo mdadm --stop /dev/md125
sudo mdadm --assemble /dev/md/alpha --name=alpha --update=name /dev/sd[fg]
sudo mdadm -Db /dev/md/alpha

El tercer comando debería devolver algo así como:

ARRAY /dev/md/alpha metadata=1.2 name=omicron:alpha UUID=5b024352:3a940335:233aa23f:5c6b2a1f

Pegue el resultado en /etc/mdadm/mdadm.conf (reemplazando la línea anterior). O ejecuta:

sudo mdadm -Db /dev/md/alpha >> /etc/mdadm/mdadm.conf

Siguiente ejecución:

sudo update-initramfs -u

Finalmente, reinicie.

Esta discusión fue útil .

    
respondido por el Swoogan 01.10.2013 - 02:45
6

La primera respuesta de pille y N.N funciona.

El truco aquí es que cuando no especificas la opción --name , el único cambio de nombre hecho por mdadm es asignar el nombre de la matriz desde el número de dispositivo que ha asignado. En esta pregunta, es 0, por lo que el nuevo nombre de la matriz es 0.

Dado que especifica el nombre del dispositivo ("alfa" aquí) para usar en el comando de ensamblar, creará y usará este nombre de dispositivo. Pero en Autostart mdadm crea un dispositivo basado en el nombre que ve en el superbloque, que es 0 en este caso, por lo que el nombre del dispositivo que especificó en su comando de ensamblaje se pierde.

Para hacer que su nombre cambie, sea coherente y pegado, debe usar el mismo nombre en la última parte del nombre de su dispositivo y en su nuevo nombre de matriz. En este caso, para el dispositivo "alpha" deberías usar esta línea de comando:

mdadm --assemble /dev/md/alpha --name=alpha --update=name /dev/sd[gf]

También puede cambiar el nombre de host, para hacerlo debe declararlo explícitamente utilizando la sintaxis -name=<hostname>:<array_name> .

Esto puede ser útil, por ejemplo, después de un cambio de nombre de máquina.

    
respondido por el Khassad 08.12.2011 - 10:25
1

después de cambiar el nombre, ¿intentó actualizar su mdadm.conf ?

 mdadm --examine --scan --config=mdadm.conf >> /etc/mdadm.conf
    
respondido por el maniat1k 05.10.2011 - 13:52
1

Parece que la respuesta que buscas está en la página man de mdadm

[create, build, grow]
      -N, --name=
          Set  a name for the array.  This is **currently only effective when creat‐
          ing an array** with a version-1 superblock, or an  array  in  a  DDF  con‐
          tainer.   The  name is a simple textual string that can be used to iden‐
          tify array components when assembling.  If name is needed but not speci‐
          fied, it is taken from the basename of the device that is being created.
          e.g. when creating /dev/md/home the name will default to home.

y para ensamblar

       -N, --name=
          Specify the name of the array to assemble.  **This must be the  name  that
          was  specified  when  creating the array**.  It must either match the name
          stored in the superblock exactly, or it  must  match  with  the  current
          homehost prefixed to the start of the given name.

Lo que explica por qué el atributo de nombre no es adhesivo después de establecerse. Si lo hiciste funcionar, por favor haz un comentario con la respuesta que te sirvió. Alternativamente, siempre puede crear enlaces simbólicos utilizando una regla udev y el UUID de la matriz como ancla.

No veo el punto de agregar el nombre falso al /etc/mdadm.conf, ya estás usando el UUID que es el nombre del conjunto canónico. Agregar otra variable, que usted considere adecuado para cambiar, es simplemente un mantenimiento innecesario y la solicitud de problemas, por ejemplo. array no se puede iniciar.

Más allá de estas observaciones, el mejor lugar para entender por qué no se puede actualizar el nombre en tiempo de ejecución es hacer ping a la lista de distribución de linux-raid.

    
respondido por el ppetraki 29.11.2011 - 12:26
0

mdadm tiene un error cuando los volúmenes de ataque se crearon internamente con un espacio en su nombre. Estos volúmenes no se montarán correctamente debido a un error de formato en el archivo /etc/mdadm/mdadm.conf generado. Debe cambiar el nombre allí, pero no será persistente. Por lo tanto, es necesario cambiar el nombre de los nombres internos ... pero no es compatible con todos los controladores RAID que bloquean sus metadatos y no admiten la opción de nombre. No veo cómo cambiar el nombre de estos volúmenes (incluso si están referenciados internamente por su UUID, los nombres son los utilizados por Linux, Windows por el contrario no tiene ese error y monta perfectamente volúmenes RAID que contienen espacios en sus nombres)!

    
respondido por el verdy_p 28.06.2017 - 00:01

Lea otras preguntas en las etiquetas