# instalación raid

## forestux

Muy buenas, y enhorabuena por el foro.

Mi consulta es la siguiente:

He realizado pŕacticamente al pie de la letra el manual de instalación de gentoo http://www.gentoo.org/doc/es/gentoo-x86+raid+lvm2-quickinstall.xml

Por cierto que el manual, como otros tantos de este portal, es fabuloso: estoy aprendiendo un montón leyendo y rompiendo cosillas aquí en casa.

Lo hice sobre un viejo intel pentium IV al que "tuneé" con un poco más de RAM, y al que he añadido un segundo disco IDE en el segundo puerto IDE, mediante un segundo cable.

Lo único que he variado del manual ha sido, hasta donde recuerdo, formatear las particions sensibles en etx4 en vez de ext3, y evitar un volumen lógico /var/tmp (en el primer intento comprobé cómo, habiendo creado un vl /var/tmp ahí caía la instantánea de portage, y al haberla creado de sólo 2 GB se me quedaba corta). Bueno, y dado que el segundo disco es mayor que el primero, ajusté el tamaño de las particiones en él al tamaño del primero, y, creé una a mayores (/extra) que aún no he montado en fstab.Al contrario que en el manual, pues, mi sdb4 es ya una particion extendida que contiene dos lógicas (sdb5, espejo de sda4, y sdb6, la citada /extra). Por último, el md4 lo hice raid 1 ( --level=1 en listado de código 2.10 del manual).

El caso es que ahora, al reiniciar, la máquina me avisa de que no encuentra el intramfs; el mensaje en cuestión es el siguiente:

```
Booting 'Gentoo Linux'

root (hd0,0)

Filesystem type is ext2fs, partition type 0xfd

kernel /boot/kernel root /dev/sad3

[Linux-bzImage, setup=0x3a00, size=0x54b760]

initrd /boot/intramfs

Error 15: File not found
```

No es mayor problema el iniciar el sistema editando grub, borrándole la línea que apunta a initramfs, y apuntando root a md3

```
root (hd0,0)

kernel /boot/kernel root0/dev/md3

## (Y borrada la línea correspondiente a initramfs
```

En el inicio se puede leer el siguiente mensaje:

```
!!dmadm: No arrays found in config file or automatically
```

No obstante, el sistema arranca correctamente. Puesto a investigar, he podido comprobar que el nodo md4 no existe (y fue creado durante la instalación de acuerdo al listado de código 2.11 del manual), y sin embargo aparece un md127 que está funcionando correctamente:

```
darkness~# cat /proc/mdstat

Personalities : [raid1] [raid10] [raid6] [raid5] [raid4] 

md127 : active raid1 sdb5[1] sda4[0]

      33686428 blocks super 1.2 [2/2] [UU]

      

md1 : active raid1 sdb1[1] sda1[0]

      131008 blocks [2/2] [UU]

      

md3 : active raid1 sdb3[1] sda3[0]

      4194240 blocks [2/2] [UU]

      

unused devices: <none>
```

De modo que no existe el nodo md4, y es sustituído por md127, que, por lo demás, funciona correctamente:

```
darkness~# mdadm -D /dev/md127

/dev/md127:

        Version : 1.2

  Creation Time : Sun Feb  9 16:13:39 2014

     Raid Level : raid1

     Array Size : 33686428 (32.13 GiB 34.49 GB)

  Used Dev Size : 33686428 (32.13 GiB 34.49 GB)

   Raid Devices : 2

  Total Devices : 2

    Persistence : Superblock is persistent

    Update Time : Tue Feb 11 19:02:17 2014

          State : clean 

 Active Devices : 2

Working Devices : 2

 Failed Devices : 0

  Spare Devices : 0

           Name : livecd:4

           UUID : 748b4a76:8f516ac1:d94c9bd6:d410ab0f

         Events : 17

    Number   Major   Minor   RaidDevice State

       0       8        4        0      active sync   /dev/sda4

       1       8       21        1      active sync   /dev/sdb5
```

Quisiera corregir tanto el arranque (grub) como el asunto del nodo.

He entrado de nuevo desde el cd live, creando de nuevo el nodo, sigo en las mismas; en cuando a grub, no encuentro su archivo de config por ningún lado.

¿Alguna idea?

Si necesitáis algún pastebin más no dudéis en pedirlo.

Muchas gracias de antemano.Last edited by forestux on Tue Feb 11, 2014 10:20 pm; edited 1 time in total

----------

## Stolz

El archivo de configuración de grub es /boot/grub/grub.conf. Si no lo encuentras es posible que no tengas montada la partición /boot.

Sobre LVM2 no tengo ni idea pero sobre los raids, prueba lo siguiente para actualizar el nº minor:

```
umount /dev/md127 

mdadm --stop /dev/md127

mdadm --assemble --update=super-minor /dev/md4 /dev/sda4 /dev/sdb5

cat /proc/mdstat
```

Si aparece /dev/md4 y siempre que creases los raids con la opción --metadata=0.90 puedes hacer que la autodetección del kernel recuerde que el nodo del raid formado por /dev/sda4 y /dev/sdb5 debe ser /dev/md4. Para ello debes crear el fichero /etc/mdadm.conf con el siguiente comando

```
mdadm --detail --scan >> /etc/mdadm.conf
```

y asegurarte de que dicho fichero contiene la version de metadata, es decir, algo así (obviamente tu UUID será diferente).

```
ARRAY /dev/md4 metadata=0.90 UUID=f9481701:e4g3a1b4:bc99eh69:92cb911f
```

Por cierto, ¿cómo es que el raid md4 está formado por /dev/sda4 y /dev/sdb5 y no por ejemplo /dev/sda4 y /dev/sdb4 o /dev/sda5 y /dev/sdb5? ¿No usas discos idénticos?

----------

## forestux

La ruta de grub.conf la conozco... Indagaré a ver si /boot está o no montada.

En cuanto a los raids, te comento:

al tratar de desmontar /dev/md127 me arroja que no está montada... El segundo comando que comentas (detener /dev/md127) arroja también error, relacionado precisamente con LVM:

```
mdadm: cannot exclusive access to /dev/md127: Perhaps a running process, mounted filesystem or active volume group?
```

Buscaré a ver la manera de detener el grupo de volúmenes a ver, y probaré entonces.

Por supuesto el resto de comandos ni probar.

En cualquier caso, de acuerdo al manual, /dev/md4 lo había creado sin la opción --metadata=0.90

En cuanto a tu duda te cuento que sdb es el doble del tamaño de sda (80 GB frente a 40), por lo que creé una extendida en sdb (sdb4) que me acoje dos lógicas: sdb5, que es a la que apunta sda4, y sdb6, con 40 GB extras que ya veré para que uso.

Mi intención es montar una base de datos casera a la que los compañeros del curro podamos acceder -soy agente medioambiental- para anotar diversas actuaciones relacionadas con el trabajo: desde denuncias, decomisos, etc. hasta actuaciones en incendios forestales -aquí en CyL somos nosotros losque acudimos a los incendios en calidad de  jefes de extinción, y no los bomberos, como en Cataluña o Madrid -, pasando por llevar el pan a un pueblo bloqueado por la nieve, o dando la chapa con el medio ambiente a los rapaces en los colegios, que hacemos de todo. De esa manera, a la larga, tendremos una buena base de datos de actuaciones de la que podremos echar mano para estadísticas, etc. La base de datos, en raid1, la tendré a prueba de fallos, y posiblemente use ese tamaño extra de sdb para subir fotos de las actuaciones, dejando claro a los compañeros que de esas fotos ya pueden guardar buena copia porque no hay redundancia para /extra, por si se estruja el disco...   :Rolling Eyes: 

No sé si me habré metido en un berenjenal al que no pueda hacer frente, pero desde luego que ganas de aprender -y a mi edad no viene siendo habitual- no me faltan.

Mañana no podré hacer nada -trabajo todo el día- pero en cuanto vuelva por casa te cuento lo que fui haciendo.

Muchas gracias por la pronta respuesta, de un luser apasionado de GNU/Linux.

----------

## Stolz

Para poder renombrar el raid éste debe estar detenido. Para poder detenerlo éste no debe estar en uso. El comando umount solo era para cerciorase de que no está en uso y no pasa nada por que falle. El problema parece ser que LVM está usando el raid y por eso no puede detenerse. Como dije antes, soy un ignorante respecto a LVM por lo que no te puedo ayudar sobre como hacer que deje de usar el raid para poder detenerlo y renombrarlo. A ver si algún compañero del foro te puede orientar mejor sobre eso.

En cualquier caso, si los raids no han sido creados con --metadata=0.90 entonces el nombre de los raids se comporta de forma diferente y la autodeteccion por parte del kernel no está soportada. Aquí tienes información sobre como asignar un nombre a los raids con --metadata=1.X y sobre cómo montarlos:

https://bugzilla.redhat.com/show_bug.cgi?id=606481

Está en inglés, si no te aclaras intentaré buscarte la información en Español.

Saludozzzzzzzz

----------

## forestux

 *Stolz wrote:*   

> Para poder renombrar el raid éste debe estar detenido. Para poder detenerlo éste no debe estar en uso. El comando umount solo era para cerciorase de que no está en uso y no pasa nada por que falle. El problema parece ser que LVM está usando el raid y por eso no puede detenerse. Como dije antes, soy un ignorante respecto a LVM por lo que no te puedo ayudar sobre como hacer que deje de usar el raid para poder detenerlo y renombrarlo. A ver si algún compañero del foro te puede orientar mejor sobre eso.
> 
> En cualquier caso, si los raids no han sido creados con --metadata=0.90 entonces el nombre de los raids se comporta de forma diferente y la autodeteccion por parte del kernel no está soportada. Aquí tienes información sobre como asignar un nombre a los raids con --metadata=1.X y sobre cómo montarlos:
> 
> https://bugzilla.redhat.com/show_bug.cgi?id=606481
> ...

 

No fui capaz de desmontar el grupo de volúmenes (mira que le he dado vueltas a san google). Podía desmontar volúmenes tales como home, tmp y algún otro, pero /dev/mapper/var y /dev/mapper/usr se me resistían, arrojándome el mensaje de que estaban en uso. 

Hasta que se me ocurrió la idea de irme a init 1.

Se desmontan todos los volúmenes lógicos contenidos en /dev/mapper, pero /dev/md3 no lo hace. El error, aunque no es le mismo, es similar:

```
mdadm: cannot get exclusive access to /dev/md3:Perhaps a running process, mounted filesytem or active volume group?
```

Ahí dentro, a lo que entendí en la instalación, caen dev, sys y proc... Como para desmontarse.

Pero teniendo detenido md127, he podido arrojar el comando:

```
mdadm --assemble --update=super-minor /dev/md4 /dev/sda4 /dev/sdb5
```

Claro que ya me habías avisado de que, no habiendo sido creado md4 con la opción --metadata=0.90, el resultado era de esperar:

```
mdadm: --update=super-minor not understood for 1.x metadata
```

El enlace que me pasaste me resultó muy instructivo -he entendido la discusión en mi mal inglés-, y lo revisaré de nuevo. De acuerdo con lo que he entendido, creo que si soy capaz de que el sistema arranque con initramfs se arreglará el asunto, independientemente de que el kernel no soporte la autodetección de los raids. Y si no probaré a renombrar el raid.

Sigo aprendiendo cosas; arreglar los errores es ya casi secundario.

Lamentablemente no dispongo de todo el tiempo que me gustaría, pero estamos en ello.

Muchas gracias.

----------

## Stolz

Siendo nuevo (y no siendolo) una forma fácil de generar y usar automáticamente el fichero initramfs es usar el paquete sys-kernel/genkernel para compilar el kernel. Con él en vez de los clásicos

```
make -j4 && make modules_install && cp /usr/src/linux/arch/x86_64/boot/bzImage /boot
```

puedes hacer

```
genkernel all
```

.

Esto, además de compilarte el kernel que tengas en /usr/src/linux y sus módulos, también te creará el fichero initramfs y te copiará todo a /boot además de crearte automáticamente una entrada en fichero grub.conf con los parámetros adecuados para usar tanto el kernel como el initramfs.

Puedes gestionar qué cosas se te incluirán en el initramfs editando el fichero /etc/genkernel.conf. Este es el aspecto del mío

```
OLDCONFIG="yes"

MENUCONFIG="yes"

CLEAN="no"

MRPROPER="no"

MOUNTBOOT="yes"

SYMLINK="no"

SAVE_CONFIG="yes"

USECOLOR="yes"

CLEAR_CACHE_DIR="no"

POSTCLEAR="0"

MAKEOPTS="-j5"

LVM="no"

LUKS="no"

GPG="no"

DMRAID="no"

BUSYBOX="yes"

MULTIPATH="no"

ISCSI="no"

UNIONFS="1"

FIRMWARE="no"

DISKLABEL="yes"

BOOTLOADER="grub"

SPLASH="yes"

SPLASH_THEME="custom"

```

Obviamente tu tendrás que poner LVM="yes".

Durante años no usé genkernel porque pensé que solo servía para autoconfigurar el kernel y a mi me gusta controlar todo lo que se activa en mi kernel. Ahora lo uso principlamente para que me genere el  fichero initramfs y me olvido de comandos cpio, dracut, etc.

Más info: https://wiki.gentoo.org/wiki/Initramfs/HOWTO

----------

## opotonil

Por lo que recuerdo cuando reinicie tras instalar tambien cambio el nombre de los nodos del raid, no creo que yo les diera los nombres que tengo:

```

# ls -l /dev/md?*

brw-rw---- 1 root disk 9, 124 feb 14 21:26 /dev/md124

brw-rw---- 1 root disk 9, 125 feb 14  2014 /dev/md125

brw-rw---- 1 root disk 9, 126 feb 14 21:26 /dev/md126

brw-rw---- 1 root disk 9, 127 feb 14  2014 /dev/md127

-rw-r--r-- 1 root root      3 feb 14  2014 /dev/mdev.seq

```

Asi que decidi usar por ejemplo en el fstab los enlaces que se crean en /dev/md/

```

# ls -l /dev/md/

total 0

lrwxrwxrwx 1 root root 8 feb 14 21:26 server:1 -> ../md124

lrwxrwxrwx 1 root root 8 feb 14  2014 server:2 -> ../md125

lrwxrwxrwx 1 root root 8 feb 14 21:26 server:3 -> ../md126

lrwxrwxrwx 1 root root 8 feb 14  2014 server:5 -> ../md127

```

```

# cat /etc/fstab

/dev/md/server:1        /boot                   ext2            noauto,noatime  1 2

/dev/md/server:2        none                    swap            sw              0 0

/dev/md/server:3        /                       ext4            noatime         0 1

/dev/vg0/portage        /usr/portage            ext2            noatime         0 1

/dev/vg0/distfiles      /usr/portage/distfiles  ext2            noatime         0 1

/dev/vg0/src            /usr/src                ext2            noatime         0 1

/dev/vg0/var            /var                    ext4            noatime         0 1

/dev/vg0/tmp            /var/tmp                ext2            noatime         0 1

/dev/vg0/home           /home                   ext4            noatime         0 1

```

Tambien empece a usar genkernel para generar el initramfs facilmente pero me ha parecido muy como, igual que a @Stolz, y ahora lo uso siempre. Mi configuracion:

```

# cat /etc/genkernel.conf | egrep -i ^[a-z]

INSTALL="yes"

OLDCONFIG="yes"

MENUCONFIG="yes"

CLEAN="no"

MRPROPER="no"

MOUNTBOOT="yes"

SAVE_CONFIG="yes"

USECOLOR="yes"

MAKEOPTS="-j4"

MDADM="yes"

DISKLABEL="yes"

GK_SHARE="${GK_SHARE:-/usr/share/genkernel}"

CACHE_DIR="/var/cache/genkernel"

DISTDIR="${CACHE_DIR}/src"

LOGFILE="/var/log/genkernel.log"

LOGLEVEL=1

DEFAULT_KERNEL_SOURCE="/usr/src/linux"

```

La opcion MDADM="yes" creo que es el motivo por el que se necesita usar un initramfs. En mi caso el rootfs no esta en un LV asi que no necesito la opcion LVM="yes".

En cuanto al arranque uso grub2. Si no recuerdo mal, lo unico que tuve que hacer fue editar /etc/default/grub para descomentar y modificar la opcion GRUB_CMDLINE_LINUX_DEFAULT:

```

GRUB_CMDLINE_LINUX_DEFAULT="domdadm"

```

Salu2.

PD: Imagino que sea un error al copiar al foro: kernel /boot/kernel root /dev/sad3

----------

## forestux

```
# cat /proc/mdstat > ficherillo && mdadm --detail --scan >> ficherillo && cat ficherillo | wgetpaste

Your paste can be seen here: ht.............

   

Personalities : [raid1] [raid10] [raid6] [raid5] [raid4] 

md4 : active raid1 sdb5[1] sda4[0]

      33686428 blocks super 1.2 [2/2] [UU]

      

md1 : active raid1 sdb1[1] sda1[0]

      131008 blocks [2/2] [UU]

      

md3 : active raid1 sdb3[1] sda3[0]

      4194240 blocks [2/2] [UU]

      

unused devices: <none>

ARRAY /dev/md/3_0 metadata=0.90 UUID=eb042f7e:68f7162a:cb201669:f728008a

ARRAY /dev/md/1_0 metadata=0.90 UUID=83816698:7a8b3631:cb201669:f728008a

ARRAY /dev/md4 metadata=1.2 name=livecd:4 UUID=748b4a76:8f516ac1:d94c9bd6:d410ab0f
```

Demasiado tarde para andar teclando por aquí, que mañana curro (me toca este finde) pero a ver si mañana saco un ratillo, tiro de historial de comandos y os cuento el proceso.

Gracias!!

----------

## sag

Una nota la documentaciones de Español e Ingles en la parte de crear el initramfs, difieren un poco.

Docuemntación español

http://www.gentoo.org/doc/es/gentoo-x86+raid+lvm2-quickinstall.xml

```

 A continuación construya un initramfs desde el cual iniciar el sistema:

Listado de Código 2.24: Construyendo un initramfs

# emerge genkernel

# genkernel --install --no-ramdisk-modules initramfs

```

Documentación en ingles

https://www.gentoo.org/doc/en/gentoo-x86+raid+lvm2-quickinstall.xml

```
Code Listing 2.24: Building an initramfs

# emerge genkernel

# genkernel --install --no-ramdisk-modules --lvm --mdadm initramfs
```

Yo he usando la documentación en ingles y me ha funcionado bien, eso si no he usado LVM.

Tambien la parte de configuración de Grub, ademas de usar 'domdadm' uso 'rootfstype=ext4'

```
GRUB_CMDLINE_LINUX_DEFAULT="rootfstype=ext4 domdadm"
```

----------

## forestux

Muchas gracias por todas las ayudas.

Os comento cómo he resuelto el problema; asumo que no es muy ortodoxo, dado que en un servidor en producción no sería lo recomendable, pero al fin y al cabo yo estoy a aprender y el servidor lo tengo aquí, a mi lado, y de momento sólo "sirve" para quebrantarme la cabeza...  :Very Happy: 

He iniciado el sistema desde cd minimal (live), para así de inicio tener detenido el array (no podía desmontarlo), y al inicio es detectado por el sistema, pero no montado, de modo que:

```
mdadm --stop /dev/md127

mdadm --remove /dev/127

mdadm --zero-superblock /dev/dsa4 /dev/sdb5
```

De ese modo he eliminado el raid y su valor de metadata.

Seguidamente creé de nuevo el raid de acuerdo con el manual de instalación, y añadiéndole el parámetro:

```
metadata=0.90
```

Y listo; al reinicio ya se monta como /dev/md4; me ha parecido más cómodo que ponerle un nombre, por así tener todos los raids con la misma nomenclatura (mdX)

En cuanto a grub, también desde cd live, lo eliminé, hice un

```
dd if=/dev/zero of=/dev/sda bs=446 count=1 
```

Seguidamente instalé de nuevo grub de acuerdo con el manual en inglés:

```
emerge genkernel

 genkernel --install --no-ramdisk-modules --lvm --mdadm initramfs
```

Nota: edité mi genkernel.conf previamente de acuerdo con las instrucciones de Stolz, añadiendo soporte para dmadm y LVM.

Y violá: todo está ok.

Nota: evientemente para eliminar grub y volver a instalarlo lo hice desde entorno chroot con los raids montados.

Muchas gracias por vuestra ayuda.

La verdad es que con gentoo estoy aprendiendo un  wevo... Recuerdo cuando mapeaba puertos del amule a los amigos y pensaba que sabía algo... 	  :Laughing: 

Soy curioso por naturaleza, y GNU/Linux (empecé por ubuntu, como casi todos, me quedo con Slackware que me encanta y ya la entiendo bien, pero Gentoo es ya de tirar cohetes) me ha enseñado que en estos temas soy un simple novato, y lo que es más importante, me ha animado, a mi edad, a volver a estudiar (joe que hacía 15 años que no abría un libro)

Muchas gracias, y de nuevo enhorabuena por el foro...

Por aquí me quedaré, y me leeréis de vez en cuando.

----------

