Raid 1 en un sistema ya instalado
En el artículo del Raid 1 en linux veíamos cómo montar un raid 1 con Debian para tener fiablidad en nuestros datos y en el caso de que fallase un disco no perderlos. De esta forma aseguramos nuestros datos, pero en caso de fallo del disco de sistema irremediablemente tendríamos que instalar de nuevo todo.
Lo que vamos a ver en este artículo es cómo montar un raid 1 completo de todo el sistema Debian, con éste ya instalado y funcionando. De esta forma contesto a varias personas que me han pedido este artículo tanto en los comentarios del primero como por email. Para no hacer muy pesado el artículo obviaré algunas partes que están detalladas en el artículo anterior del raid 1, por lo que si algún paso no lo comprendes, por favor lee el artículo anterior para aclarar las dudas.
Debo aclarar que este tutorial está pensado para Debian y similares por lo que en otras distribuciones no funcionará correctamente al no existir el comando update-initramfs.
Partimos de un sistema ya instalado con tres particiones distintas: /dev/sda1 para /boot, /dev/sda5 para el swap y /dev/sda6 para /.
Después de añadir el disco a la máquina utilizamos el truco que ya usamos en el artículo original para copiar la tabla de particiones de un disco a otro:
Editamos con fdisk las particiones de /dev/sdb y cambiamos del tipo a fd de las número 1, 5 y 6. El resultado final es:
Ahora creamos los dispositivos raid para las particiones.
Formateamos las nuevas particiones.
Actualizamos el archivo mdadm.conf con los nuevos dispositivos raid.
Montamos las particiones del raid.
Editamos el archivo /etc/fstab y cambiamos sda1, sda5 y sda6 por los nuevos dispositivos del raid (md0, md1 y md2 respectivamente).
Editamos el archivo /boot/grub/menu.lst de configuración del grub para añadir las entradas a ambos discos duros. Duplicamos la línea que tenemos del arranque, cambiamos sda6 por md2 y cambiamos el disco duro del que arranca.
Ahora actualizamos el ramdisk para que se reflejen los cambios que hemos hecho.
Copiamos los datos de las particiones antiguas a las nuevas del raid. La opción 'x' es muy importante porque sino al copiar desde / copiaríamos todo de manera recursiva.
Instalamos y reconfiguramos grub en los dos discos.
Y ya podemos reinicar la máquina. Hay que tenemos en cuenta que la máquina sólo arrancará del segundo disco porque el primero todavía no forma parte del raid. Si todo va bien, una vez que arranque veremos algo como esto:
Lo más difícil ya está hecho. Tenemos el raid funcionando en modo degradado porque sólo está disponible el disco sdb. Ahora repetimos casi el mismo proceso para el disco antiguo. Cambiamos el tipo de particiones a fd y las añadimos particiones al raid.
Empezará entonces la reconstrucción de los raid.
Un vez terminada la reconstrucción tendremos listo el sistema. Ahora, si queremos probar que todo funciona correctamente podemos reinicar de nuevo la máquina y comprobar que es capaz de arrancar desde cualquiera de los dos discos.
Con este tipo de configuración estamos seguros de que aunque falle un disco nuestro servidor estará disponible y no tendremos que reinstalar ni reconfigurar nada. Sólo será necesario cambiar el disco defectuoso, reconstruir el raid y reconfigurar el grub.
Lo que vamos a ver en este artículo es cómo montar un raid 1 completo de todo el sistema Debian, con éste ya instalado y funcionando. De esta forma contesto a varias personas que me han pedido este artículo tanto en los comentarios del primero como por email. Para no hacer muy pesado el artículo obviaré algunas partes que están detalladas en el artículo anterior del raid 1, por lo que si algún paso no lo comprendes, por favor lee el artículo anterior para aclarar las dudas.
Debo aclarar que este tutorial está pensado para Debian y similares por lo que en otras distribuciones no funcionará correctamente al no existir el comando update-initramfs.
Partimos de un sistema ya instalado con tres particiones distintas: /dev/sda1 para /boot, /dev/sda5 para el swap y /dev/sda6 para /.
Filesystem Size Used Avail Use% Mounted on
/dev/sda6 7.4G 509M 6.5G 8% /
tmpfs 63M 0 63M 0% /lib/init/rw
udev 10M 84K 10M 1% /dev
tmpfs 63M 0 63M 0% /dev/shm
/dev/sda1 177M 11M 157M 7% /boot
shian:~# sfdisk -d /dev/sda | sfdisk /dev/sdb
Checking that no-one is using this disk right now ...
OK
Disk /dev/sdb: 1044 cylinders, 255 heads, 63 sectors/track
sfdisk: ERROR: sector 0 does not have an msdos signature
/dev/sdb: unrecognized partition table type
Old situation:
No partitions found
New situation:
Units = sectors of 512 bytes, counting from 0
Device Boot Start End #sectors Id System
/dev/sdb1 63 385559 385497 83 Linux
/dev/sdb2 385560 16771859 16386300 5 Extended
/dev/sdb3 0 - 0 0 Empty
/dev/sdb4 0 - 0 0 Empty
/dev/sdb5 385623 1172744 787122 82 Linux swap / Solaris
/dev/sdb6 1172808 16771859 15599052 83 Linux
...
Command (m for help): p
Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 24 192748+ fd Linux raid autodetect
/dev/sdb2 25 1044 8193150 5 Extended
/dev/sdb5 25 73 393561 fd Linux raid autodetect
/dev/sdb6 74 1044 7799526 fd Linux raid autodetect
shian:~# mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb1
mdadm: array /dev/md0 started.
shian:~# mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb5
mdadm: array /dev/md1 started.
shian:~# mdadm --create /dev/md2 --level=1 --raid-disks=2 missing /dev/sdb6
mdadm: array /dev/md2 started.
shian:~# mkfs.ext2 /dev/md0
shian:~# mkswap /dev/md1
shian:~# mkfs.ext3 /dev/md2
shian:~# cd /etc/mdadm
shian:/etc/mdadm# cp mdadm.conf mdadm.conf.`date +%y%m%d`
shian:/etc/mdadm# echo "DEVICE partitions" > mdadm.conf
shian:/etc/mdadm# mdadm --detail --scan >> mdadm.conf
shian:~# mkdir /mnt/md0
shian:~# mkdir /mnt/md2
shian:~# mount /dev/md0 /mnt/md0
shian:~# mount /dev/md2 /mnt/md2
# /etc/fstab: static file system information.
#
#
proc /proc proc defaults 0 0
/dev/md2 / ext3 defaults,errors=remount-ro 0 1
/dev/md0 /boot ext2 defaults 0 2
/dev/md1 none swap sw 0 0
/dev/hdc /media/cdrom0 udf,iso9660 user,noauto 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0
# Línea original
#title Debian GNU/Linux, kernel 2.6.18-4-686
#root (hd0,0)
#kernel /vmlinuz-2.6.18-4-686 root=/dev/sda6 ro
#initrd /initrd.img-2.6.18-4-686
#savedefault
# Nuevas líneas
title Debian GNU/Linux, kernel 2.6.18-4-686 (HD1)
root (hd1,0)
kernel /vmlinuz-2.6.18-4-686 root=/dev/md2 ro
initrd /initrd.img-2.6.18-4-686
savedefault
title Debian GNU/Linux, kernel 2.6.18-4-686 (HD0)
root (hd0,0)
kernel /vmlinuz-2.6.18-4-686 root=/dev/md2 ro
initrd /initrd.img-2.6.18-4-686
savedefault
shian:~# update-initramfs -u
update-initramfs: Generating /boot/initrd.img-2.6.18-4-686
shian:~# cp -ax / /mnt/md2
shian:~# cd /boot/
shian:/boot# cp -ax . /mnt/md0
shian:~# grub
grub> root (hd0,0)
Filesystem type is ext2fs, partition type 0x83
grub> setup (hd0)
Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... yes
Checking if "/grub/stage2" exists... yes
Checking if "/grub/e2fs_stage1_5" exists... yes
Running "embed /grub/e2fs_stage1_5 (hd0)"... 15 sectors are embedded.
succeeded
Running "install /grub/stage1 (hd0) (hd0)1+15 p (hd0,0)/grub/stage2 /grub/menu.lst"... succeeded
Done.
grub> root (hd1,0)
Filesystem type is ext2fs, partition type 0xfd
grub> setup (hd1)
Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... yes
Checking if "/grub/stage2" exists... yes
Checking if "/grub/e2fs_stage1_5" exists... yes
Running "embed /grub/e2fs_stage1_5 (hd1)"... 15 sectors are embedded.
succeeded
Running "install /grub/stage1 (hd1) (hd1)1+15 p (hd1,0)/grub/stage2 /grub/menu.lst"... succeeded
Done.
shian:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/md2 7.4G 509M 6.5G 8% /
tmpfs 63M 0 63M 0% /lib/init/rw
udev 10M 100K 10M 1% /dev
tmpfs 63M 0 63M 0% /dev/shm
/dev/md0 183M 13M 161M 8% /boot
shian:~# mount
/dev/md2 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/md0 on /boot type ext2 (rw)
shian:~# fdisk /dev/sda
...
Command (m for help): p
Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 24 192748+ fd Linux raid autodetect
/dev/sda2 25 1044 8193150 5 Extended
/dev/sda5 25 73 393561 fd Linux raid autodetect
/dev/sda6 74 1044 7799526 fd Linux raid autodetect
...
shian:~# mdadm --add /dev/md0 /dev/sda1
mdadm: added /dev/sda1
shian:~# mdadm --add /dev/md1 /dev/sda5
mdadm: added /dev/sda5
shian:~# mdadm --add /dev/md2 /dev/sda6
mdadm: added /dev/sda6
shian:~# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md2 : active raid1 sda6[2] sdb6[1]
7799424 blocks [2/1] [_U]
[=====>...............] recovery = 25.2% (1967936/7799424) finish=1.1min speed=81997K/sec
md1 : active raid1 sda5[0] sdb5[1]
393472 blocks [2/2] [UU]
md0 : active raid1 sda1[0] sdb1[1]
192640 blocks [2/2] [UU]
unused devices:
Un vez terminada la reconstrucción tendremos listo el sistema. Ahora, si queremos probar que todo funciona correctamente podemos reinicar de nuevo la máquina y comprobar que es capaz de arrancar desde cualquiera de los dos discos.
Con este tipo de configuración estamos seguros de que aunque falle un disco nuestro servidor estará disponible y no tendremos que reinstalar ni reconfigurar nada. Sólo será necesario cambiar el disco defectuoso, reconstruir el raid y reconfigurar el grub.

44 comments:
Tengo la mala costumbre de leer las cosas por encima, y luego no encajan las piezas. Al leerlo de nuevo todo encaja, pues haz echo un cp del sistema raíz al disco del raid, y luego has añadido el otro al arrancar. La pregunta es... como detecta el sistema cual es el disco degradado? El que has añadido nuevo? siempre se comporta así? es decir, sda6? Supongo que tendrá alguna opción para añadirlo en modo no-degradado y que el nuevo disco sea el origen de la replicación del RAID1.
Hola Gura,
La clave está en la creación del raid. Cuando ponemos el comando:
# mdadm --create /dev/md2 --level=1 --raid-disks=2 missing /dev/sdb6
En vez de crear el raid con las particiones sda6 y sdb6 ponemos missing en el lugar de sda6. De esta forma creamos el raid 1 degradado con sólo sdb6 disponible. Después de copiar los datos, cuando añadimos la partición sda6 al raid, lo que hace mdadm es copiar todos los datos a esta nueva partición.
Es decir, siempre va a copiar los datos del dispositivo que esté en el raid al nuevo que añadamos. No hay posibilidad de que se copien al contrario y se puedan perder.
La forma de crearlo "normal" (no degradado) es poner todas las particiones en la creación. En este caso no lo hacemos así porque el sistema ya está instalado.
Espero habértelo aclarado, sino, no dudes en preguntar de nuevo.
Saludos, Iván.
Muy buen artículo. Muy interesante. Yo sabía como montarlo, pero reinstalando todo. Así como lo planteas es mucho mejor para un raid 1, claro. :)
Muchas gracias Anónimo,
me alegro de que te haya gustado. Claro, así es mejor porque una vez montado el sistema ya no tienes que reinstalar todo de cero, simplemente poner el disco nuevo y "a correr"...
Saludos, Iván.
Hola. Yo pondría más veces la palabra "debian" repartida por el texto :-)
O bien explicaría las posibles alternativas al comado:
update-initramfs -u
ya que es parte clave del proceso (puedes avabar con un sistema que no arranca si no incluyes los ficheros necesarios en el initrd).
Saludos.
Gracias Anonimo,
ya he actualizado el artículo para indicar que sólo funcionará con Debian y similares.
Saludos, Iván.
¡Excelente entrada!
Te vas a convertir en el sitio de referencia en castellano para trabajar con RAID en Linux ;-)
Hola, Ivan
Felicidades por tu articulo. Muy, muy bueno, claro y da muchas pistas sobre utilidades de linux que yo no había usado (sfdisk, mdamd, cp -ax, etc)
Tengo tres preguntas, a ver si me puedes ayudar:
- Consumo de cpu tengo un servidor de ficheros samba funcional. si le pongo raid por software ¿como puedo averiguar si tengo cpu de margen para no perder rendimiento?
- Disposicion de dispositivos ide. como es una placa antigua, solo tiene dos ide, ahora mismo tiene dos dispositivos master cada uno en su canal: hdd y lectora dvd. Si pusiera otro hdd ide ¿cómo me aconsejas que lo coloque? (secundario en canal 1, master en canal 2, secundario en canal 2,...)
- Rendimiento lectura/escritura creo recordar que el raid1 acelera las lecturas (doble canal) si mi información es correcta ¿obtendria mayor rendimiento mi samba?
Tranquilo, ya me callo, esto es todo. Felicidades de nuevo, te has ganado un lector. Saludos desde Malaga
Muy interesante el artículo.
Tengo una duda. En el tutorial, ejecutas
mdadm --detail --scan >> mdadm.conf
y bastante después haces los varios
mdadm --add /dev/md0 /dev/sda1
¿No habría que volver a ejectar el "scan", una vez concluidos los "add", a fin de obtenet un "mdadm.conf" más actualizado?
Saludos y felicidades por el artículo.
Quisiera comentar que he realizado todo el proceso con éxito. Es un muy buen artículo Iván.
Comentar que en el fstab y el grub se puede substituir /dev/mdX por su UUID, como ya realiza ubuntu desde algunas versiones. En algunos sistemas, como el mio, es necesario pues mi bios en funcion de los dispositivos usb conectados me ordena de un modo u otro los discos SATA y por tanto, sin los UUID muchas veces tengo que tocar la configuracion del grub o arrancar del cd para cambiar los dispositivos del fstab... Asi que usar UUID's es bastante comodo porque te olvidas de configurar nada si cambias el orden de los discos o añades otros.
En respuesta a Pepe, no es necesario, porque en ese fichero se indica el UUID de los miembros que forman parte del raid, si compruebas el UUID de los miembros con # vol_id /dev/miembro comprobaras que corresponde con el del mdadm.conf
Saludos.
Hola!
[Super Coco], gracias por el comentario. Le estoy cogiendo el gustillo a esto del raid...
[Patata], me alegro de que te haya gustado!. Sobre tus preguntas:
- Consumo de CPU: No sabría decirte porque en mi servidor no lo he mirado, pero no creo que sea mucho.
- Para optimizar al máximo el rendimiento del raid deberías colocar los discos cada uno en un conector ide independiente.
- En principio sí se aumentan las lecturas porque se reparten entre ambos discos. Sin embargo ten en cuenta que el tiempo de escritura será el del disco más lento.
[Pepe], ya te ha respondido Neo. Exactamente, como él dice, en el mdadm.conf están los IDs de los dispositivos raid, y estos IDs no cambian cuando se añade un disco nuevo al raid.
[Neo], gracias por compartir la información del UUID y por la respuesta a Pepe!.
Muchas gracias a todos por vuestros comentarios.
Saludos, Iván.
Antes de nada felicitarte por tu trabajo y darte las gracias por compartirlo con los lectores de tu blog, entre los que me incluyo. Tengo una pequeña duda en uno de los pasos. Cuando se hace el update-initramfs, este comando actualiza el archivo en /boot, por lo que mi pregunta es: ¿no debería estar montado en /boot el dispositivo /dev/md0 para que la nueva imagen se aloje en el raid 1? Es que no veo este paso claro y yo entiendo que si se actualiza la ramdisk en el /boot antiguo (/dev/sda1) cuando iniciemos desde el raid 1 no tendrá en /boot, que sería /dev/md0 en este caso, la ramdisk actualizada.
Comento mi caso particular por si le sirve a alguien. Mi caso es similar sólo que necesito que el ordenador se encienda sólo, es decir, no puedo usar un archivo de configuración para el grub común para los dos discos duros, pues requeriría que estuviese yo físicamente en el servidor para escoger la entrada correcta en el grub en caso de que fallara un disco. Debido a esto me he decidido a dejar una partición de boot en cada disco fuera del raid, en cada una de ellas pongo como entrada por defecto en la configuración del grub la que tiene como root el disco correspondiente. Así dependiendo del disco a partir del cual se arranque el grub se ejecutará una entrada de su configuración u otra y se podrá reiniciar el ordenador después del fallo del primer disco sin necesidad de escoger la segunda entrada manualmente en el grub y viceversa.
Quizás haya echo una locura (o se pueda hacer de forma más sencilla haciendo que el grub intente con todas las entradas o algo así), si el caso por favor avisadme, gracias.
Hola Dani,
sobre tu pregunta del update-initramfs, no es necesario que esté montado en el raid. Se actualiza en /boot con la nueva información del mdadm.conf cuando ejecutamos el comando y posteriormente copiamos los archivos ya modificados a /mnt/md0 para que estén disponible en el siguiente arranque.
Tu solución para no tener que elegir desde donde quieres arrancar me parece buena. Échale un vistazo a la opción fallback de la configuración del grub porque puede que te sirva.
Saludos y gracias por tu comentario, Iván.
Sobre lo de update-initramfs tienes toda razón después se copia la nueva ramdisk a /dev/md0, no sé como hice cuando lo leí cambié esos pasos de orden, mil disculpas. He seguido tu recomendación y después de trastear un rato conseguí mi propósito a través de la opción fallback del grub. Se debe usar acompañada de un default saved, todas las entradas deben estar correctamente configuradas, pues si una falla sí salta a la siguiente, pero si una está mal especificada se queda clavado. A mayores se debe actualizar cada vez que se enciende correctamente la máquina la opción por defecto del grub con grub-set-default. Muchas gracias es sin duda una solución mucho más elegante, ahora sólo me queda hacer otro raid con las particiones de boot que tenía separadas, aunque como las particiones de boot apenas cambian, básicamente como lo tenía yo el efecto era el mismo; sólo que debía copiar el contendio de una boot a la otra cuando hiciera un cambio, acordándome de cambiar la configuración del grub. Un saludo y muchas gracias otra vez.
Hola de nuevo Dani,
me alegro de que te hay funcionado y muchas gracias por contarnos tu experiencia. Tal y como dices, es necesario ejecutar en cada arranque el grub-set-default, pero eso se soluciona fácilmente en algún script de arranque.
Y sobre lo del raid para el boot, pues como dices, apenas cambian, aunque estaría bien hacerlo para tener todo la configuración homogénea y que si un día cambias algo te despreocupas de actualizar.
Saludos, Iván.
Hola ivan,
buen artículo!
En referencia a crear una imagen de aranque (initrd) en Debian se puede usar:
update-initramfs -u
o también:
mkinitrd --preload='modulo1' --preload='moduloN' /boot/initrd-2.6-X.img 2.6.X
modulo1..moduloN: deben ser los modulos raid1, dm_raid...
los podemos buscar entre la lista "lsmod".
Supongo que mkinitrd será más general que update-initramfs -u y servirá para más distros.
Al menos a mi me ha funcionado.
saludos
Muchas gracias Josep por compartir con todos tu experiencia y por completar el artículo.
Saludos, Iván.
Hola Iván:
Acabo de empezar a trabajar como administrador de sistemas y me está viniendo genial tu blog, gracias por esta labor.
Con respecto a esta entrada, me surge la duda de si en lugar de usar cp -ax para copiar las particiones podríamos usar dump.
Muchas gracias de nuevo. Un saludo.
Hola Enrique,
la verdad es que no se me había ocurrido lo del dump, no te sabría decir puesto que no lo he probado. Lo único que tienes que conseguir es que los datos estén exactamente igual que en la partición origen, el cómo lo hagas es indiferente. También podrías utilizar herramientas para clonar particiones y demás.
Saludos, Iván.
Hola de nuevo, Iván:
Me surge otra duda. He visto que en la creación del RAID, formateas la partición de arranque con ext2...¿esto es una errata o lo haces a conciencia por alguna razón?
Hola Enrique,
no es ninguna errata. La partición /boot la tengo formateada como ext2. Realmente para esa partición que apenas se modifica no necesito el journaling. De todas formas es una manía, la puedes formatear con ext3 sin problemas.
Saludos, Iván.
Y aquí vuelvo otra vez! Me surge otra duda, con la configuración del grub en esta ocasión. En menu.lst haces distinción de cada disco y así lo configuras luego en grub, pero en otros tutoriales he visto que el segundo dispositivo lo configuran así:
#grub
> device (hd0) /dev/sdb
> root (hd0,0)
> setup (hd0)
Con esto se supone que se apuntaba hd0 al segundo disco y se configuraba el MBR del segundo. ¿Es incompatible esto con tu solución?
De nuevo muchas gracias por tu trabajo. Un saludo.
Hola de nuevo Enrique,
no conocía esa forma de configurar grub y la verdad es que no sé si funcionará. Si dices que la has visto en otros tutoriales es de suponer que sí. Me lo apunto para probarlo en algún momento.
Saludos, Iván.
Hola:
Tengo un server ya instalado y casualmente necesitaba hacer un raid1 y nada que esto me llego como anillo al dedo...
En si lo que quería plantear es un error que me da en el paso en el que "Instalamos y reconfiguramos grub en los dos discos", me da el siguiente error:
---
grub> root (hd0,0)
Filesystem type is ext2fs, partition type 0x83
grub> setup (hd0)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/e2fs_stage1_5" exists... yes
Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 15 sectors are embedded.
succeeded
Running "install /boot/grub/stage1 (hd0) (hd0)1+15 p (hd0,0)/boot/grub/stage2
/boot/grub/menu.lst"... succeeded
Done.
grub> root (hd1,0)
Filesystem type is ext2fs, partition type 0xfd
grub> setup (hd1)
Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... no
Error 2: Bad file or directory type
grub>
---
Lo único que varia en mi configuración es que yo tengo tres particiones, como sda1 tengo a /, como a sda2 tengo a /mnt/data que es mi partición de datos y sda3 es mi swap. Como ven no tengo partición /boot. Por supuesto que he omitido en todo el manual lo referente a /boot pues no existe como partición en mi sistema, se encuentra dentro de sda1. Pero bueno hasta este punto todo ha salido bien, estoy trabado aquí, no tengo idea que puede ser la razón... espero me puedan ayudar, por lo pronto tuve que virar todos los cambios para atrás por si hay que reiniciar el server no aya problemas.
Gracias Josué
Hola Josué Vladimir,
por la información que da parece que no has copiado los datos de un disco al otro.
Fíjate que cuando comprueba los archivos en el segundo disco, no los encuentra:
grub> setup (hd1)
Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... no
Espero haberte podido ayudar.
Saludos, Iván.
Hola,
Ao executar el comando :
mdadm --add /dev/md1 /dev/sda2
Resulta :
Aug 25 18:03:12 waikiki kernel: [ 834.435252] res 51/40:a1:9b:32:ee/40:01:01:00:00/e0 Emask 0x9 (media error)
Aug 25 18:03:12 waikiki kernel: [ 834.490813] ata4.00: configured for UDMA/133
Aug 25 18:03:12 waikiki kernel: [ 834.490823] ata4: EH complete
Aug 25 18:03:16 waikiki kernel: [ 838.255788] res 51/40:a1:9b:32:ee/40:01:01:00:00/e0 Emask 0x9 (media error)
Aug 25 18:03:16 waikiki kernel: [ 838.307689] ata4.00: configured for UDMA/133
Aug 25 18:03:16 waikiki kernel: [ 838.307699] ata4: EH complete
Aug 25 18:03:19 waikiki kernel: [ 842.032638] res 51/40:a1:9b:32:ee/40:01:01:00:00/e0 Emask 0x9 (media error)
Aug 25 18:03:19 waikiki kernel: [ 842.084628] ata4.00: configured for UDMA/133
Aug 25 18:03:19 waikiki kernel: [ 842.084641] ata4: EH complete
Aug 25 18:03:23 waikiki kernel: [ 845.826073] res 51/40:a1:9b:32:ee/40:01:01:00:00/e0 Emask 0x9 (media error)
Aug 25 18:03:23 waikiki kernel: [ 845.881507] ata4.00: configured for UDMA/133
Aug 25 18:03:23 waikiki kernel: [ 845.881516] ata4: EH complete
Aug 25 18:03:27 waikiki kernel: [ 849.636009] res 51/40:a1:9b:32:ee/40:01:01:00:00/e0 Emask 0x9 (media error)
Aug 25 18:03:27 waikiki kernel: [ 849.688372] ata4.00: configured for UDMA/133
Aug 25 18:03:27 waikiki kernel: [ 849.688382] ata4: EH complete
Aug 25 18:03:31 waikiki kernel: [ 853.404169] res 51/40:a1:9b:32:ee/40:01:01:00:00/e0 Emask 0x9 (media error)
Aug 25 18:03:31 waikiki kernel: [ 853.455278] ata4.00: configured for UDMA/133
Aug 25 18:03:31 waikiki kernel: [ 853.455305] sd 3:0:0:0: [sdb] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE,SUGGEST_OK
Aug 25 18:03:31 waikiki kernel: [ 853.455310] sd 3:0:0:0: [sdb] Sense Key : Medium Error [current] [descriptor]
Aug 25 18:03:31 waikiki kernel: [ 853.455317] Descriptor sense data with sense descriptors (in hex):
Aug 25 18:03:31 waikiki kernel: [ 853.455320] 72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00
Aug 25 18:03:31 waikiki kernel: [ 853.455334] 01 ee 32 9b
Aug 25 18:03:31 waikiki kernel: [ 853.455339] sd 3:0:0:0: [sdb] Add. Sense: Unrecovered read error - auto reallocate failed
Aug 25 18:03:31 waikiki kernel: [ 853.455347] end_request: I/O error, dev sdb, sector 32387739
Aug 25 18:03:31 waikiki kernel: [ 853.455360] ata4: EH complete
Aug 25 18:03:31 waikiki kernel: [ 853.473993] sd 3:0:0:0: [sdb] 234441648 512-byte hardware sectors (120034 MB)
Aug 25 18:03:31 waikiki kernel: [ 853.483153] sd 3:0:0:0: [sdb] Write Protect is off
Aug 25 18:03:31 waikiki kernel: [ 853.491371] sd 3:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
Aug 25 18:03:31 waikiki kernel: [ 853.511859] sd 3:0:0:0: [sdb] 234441648 512-byte hardware sectors (120034 MB)
Aug 25 18:03:31 waikiki kernel: [ 853.533851] sd 3:0:0:0: [sdb] Write Protect is off
Aug 25 18:03:31 waikiki kernel: [ 853.544541] sd 3:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
Aug 25 18:03:35 waikiki kernel: [ 857.324135] res 51/40:01:9b:32:ee/40:01:01:00:00/e1 Emask 0x9 (media error)
Aug 25 18:03:35 waikiki kernel: [ 857.382069] ata4.00: configured for UDMA/133
Aug 25 18:03:35 waikiki kernel: [ 857.382077] ata4: EH complete
Aug 25 18:03:38 waikiki kernel: [ 861.105400] res 51/40:01:9b:32:ee/40:01:01:00:00/e1 Emask 0x9 (media error)
Aug 25 18:03:38 waikiki kernel: [ 861.158943] ata4.00: configured for UDMA/133
Aug 25 18:03:38 waikiki kernel: [ 861.158951] ata4: EH complete
Aug 25 18:03:42 waikiki kernel: [ 864.885350] res 51/40:01:9b:32:ee/40:01:01:00:00/e1 Emask 0x9 (media error)
Aug 25 18:03:42 waikiki kernel: [ 864.945870] ata4.00: configured for UDMA/133
Aug 25 18:03:42 waikiki kernel: [ 864.945878] ata4: EH complete
Aug 25 18:03:46 waikiki kernel: [ 868.642968] res 51/40:01:9b:32:ee/40:01:01:00:00/e1 Emask 0x9 (media error)
Aug 25 18:03:46 waikiki kernel: [ 868.702798] ata4.00: configured for UDMA/133
Aug 25 18:03:46 waikiki kernel: [ 868.702806] ata4: EH complete
Aug 25 18:03:50 waikiki kernel: [ 872.381778] res 51/40:01:9b:32:ee/40:01:01:00:00/e1 Emask 0x9 (media error)
Aug 25 18:03:50 waikiki kernel: [ 872.439748] ata4.00: configured for UDMA/133
Aug 25 18:03:50 waikiki kernel: [ 872.439758] ata4: EH complete
Aug 25 18:03:53 waikiki kernel: [ 876.148715] res 51/40:01:9b:32:ee/40:01:01:00:00/e1 Emask 0x9 (media error)
Aug 25 18:03:54 waikiki kernel: [ 876.226599] ata4.00: configured for UDMA/133
Aug 25 18:03:54 waikiki kernel: [ 876.226610] sd 3:0:0:0: [sdb] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE,SUGGEST_OK
Aug 25 18:03:54 waikiki kernel: [ 876.226615] sd 3:0:0:0: [sdb] Sense Key : Medium Error [current] [descriptor]
Aug 25 18:03:54 waikiki kernel: [ 876.226623] Descriptor sense data with sense descriptors (in hex):
Aug 25 18:03:54 waikiki kernel: [ 876.226626] 72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00
Aug 25 18:03:54 waikiki kernel: [ 876.226639] 01 ee 32 9b
Aug 25 18:03:54 waikiki kernel: [ 876.226645] sd 3:0:0:0: [sdb] Add. Sense: Unrecovered read error - auto reallocate failed
Aug 25 18:03:54 waikiki kernel: [ 876.226653] end_request: I/O error, dev sdb, sector 32387739
Aug 25 18:03:54 waikiki kernel: [ 876.226663] ata4: EH complete
Aug 25 18:03:54 waikiki kernel: [ 876.226901] sd 3:0:0:0: [sdb] 234441648 512-byte hardware sectors (120034 MB)
Aug 25 18:03:54 waikiki kernel: [ 876.227083] sd 3:0:0:0: [sdb] Write Protect is off
Aug 25 18:03:54 waikiki kernel: [ 876.250482] sd 3:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
Aug 25 18:03:54 waikiki kernel: [ 876.250829] sd 3:0:0:0: [sdb] 234441648 512-byte hardware sectors (120034 MB)
Aug 25 18:03:54 waikiki kernel: [ 876.251008] sd 3:0:0:0: [sdb] Write Protect is off
Aug 25 18:03:54 waikiki kernel: [ 876.251312] sd 3:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
Hola Anónimo,
lo que te está mostrando ese error es que el disco tiene sectores defectuosos y con error:
Unrecovered read error - auto reallocate failed
Aug 25 18:03:31 waikiki kernel: [ 853.455347] end_request: I/O error, dev sdb, sector 32387739.
Pero te los está mostrando en el disco sdb y tú estás añadiendo el sda al raid.
Saludos, Iván.
Hola Iván,gracias por tu pronta respuesta por mail.He tenido aparcado el tema del servidor porque me estaba volviendo loco,como te comenté estaba montando raid1 con ubuntu 7 server,como no lo conseguía he probado con debian y por supuesto me pasaba lo mísmo,me decía que "el dispositivo está ocupado",pero por fín me he parado a pensar un poco y he arrancado el sistema eligiendo el segundo dico(sdb),era la 1ª vez que lo probaba en debian,y he probado a añadir al raid la partición(sda6) y para mi sorpresa ya lo tengo sicronizando...
Yo juraría que con ubuntu 7 server habia arrancado con el segundo disco (sdb) pero o no me arrancaba bien o tampoco me dejaba, seguramente estaba metiendo la pata yo,de todas formas lo probaré de nuevo y ya te comentaré si me funciona y que es lo que hacía mal.
Saludos,Juan.
Hola Juan,
me alegro de que hayas solucionado tu problema y por fin hayas podido añadir el otro disco al raid.
Para cualquier otra duda ya sabes donde estoy.
Saludos, Iván.
hola
he seguido los pasos al pie de la letra, pero cuando intento arrancar del disco duro 1 (hd1) el grub me indica lo siguiente:
root (hd1,0)
Filesystem type is ext2fs, partition type 0xfd
kernel /vmlinuz-2.6.18-6-k7 root=/dev/md2 ro
Error 15: File not found.
Es una copia exacta del arranque del disco 0, salvo en vez de root (hd0,0) tiene (hd1,0).
Pero nada, se queda ahi y no arranca, tengo que arrancar desde la otra entrada del menu, ¿alguien sabe que puede ser?. muchas gracias.
saludos
Hola Anónimo,
tiene toda la pinta de que no estás copiando todos los archivos de un disco al otro. En particular parece que no estás copiando /boot.
Saludos, Iván.
Hola iván,
podrías indicar como una vez instalado volveríamos a cero, es decir, al sistema anterior con un hd sin raid..
es que he al seguir los pasos, nose algo seguro hice mal y no va bien, solo detecta 1 hd los cambios el otro no, me lie porq tengo 1 hd master con cdrom slave en ide1 y 1 hd master en ide2 y tambie mis particiones son 1 swap y otra para nada mas...
gracias iván
Hola Anónimo,
la forma más fácil de volver a como estabas... quitando un disco duro :-P. Trabajarías con un raid 1 pero con sólo un disco.
Si te refieres a deshacer todos los pasos, sería algo como crear las particiones en el disco duro que no tengas datos, formatearlas, montarlas, copiar los datos y cambiar los archivos de arranque para que apunten a ese nuevo disco.
Saludos, Iván.
pero es q me da errores de disco montado y demas pegas con el mdadm :( estoy pensando en empezar desde cero el linux :( q mala suerte....
gracias ivan
Hola de nuevo,
estas cosas con las que no se tiene mucha práctica (o sí) es mejor hacerlas primero en un entorno de prueba. Todos somos humanos y aunque creamos que tenemos todo controlado a veces fallamos. A mi ni se me ocurriría probar cosas directamente en mi raid 1 de "producción". Si quiero hacer cualquier cosa, primero lo pruebo en "desarrollo" y luego ya hago el PaP :-P.
Saludos, Iván.
Excelente tutorial.
Um dos raros disponibilizados, que realmente funcionam - trabalho de profissional.
Parabens
Fernando Santos
BRASIL - Rio de janeiro
Hola Fernando,
me alegro de que te haya parecido interesante y te haya gustado el tutorial.
Saludos, Iván.
El raid fue montado en fedora sin problemas
solo hubo que usar el comando mkinird por update-initramfs.
mkinitrd -f /boot/initrd-2.6.24.7-92.fc8.img 2.6.24.7-92.fc8
Muchas Gracias por el post
saludos
Nahuel
Hola Nahuel,
gracias por contarnos que también funciona sin problemas en Fedora y los cambios que tenemos que hacer.
Saludos, Iván.
Este post me parece una auténtica maravilla. Es un must xD
Lo único en lo que no estoy de acuerdo, aunque es un debate de esos eternos, es en no hacer RAID 1 en la swap. Hay quien opina que si se corrompe la swap puede irse al carajo algún proceso en ejecución. Yo la meto en RAID 1 también.
Vale, no he dicho nada xDD el tipo 82 estaba asignado en el particionado original. Cojonudo el post, recalco.
Hola coder,
me alegro de que te haya gustado el post y te parezca un must, muchas gracias!. Respecto a lo del swap en el raid, ya te has dado cuenta... ;-).
Saludos, Iván.
El artículo es muy muy útil, ahora viene la pregunta
Si la partición sda no está como fd el mdadm no lo encuentra como parte del array , por lo que la parte del missing sobraría, ¿verdad?
Hola Javier,
me alegro de que el artículo te guste y te sea útil.
No sé si entiendo correctamente la pregunta. Si no tienes una partición como tipo fd, entonces no es de tipo raid y este tutorial no te sirve ;-).
Si lo que quieres es crear un raid 1 de cero te sugiero que leas este otro artículo: Raid 1 en Linux.
Publicar un comentario en la entrada