View this PageEdit this PageUploads to this PageVersions of this PageHomeRecent ChangesSearchHelp Guide

Preparar un disco RAID de SIV desde los .tgz de las particiones

Usando información de uuids en particiones, uuids en raid, instalar el grub (y otro howto del grub y la doc. oficial de ubuntu), se ha preparado las iguiente script en:
 uiharu:/data/ptoledo

El ejemplo siguiente detalla cómo se hace para un disco IDE de 40GB conectado con el adaptador USB-IDE de uiharu, que aparece como /dev/sdc en el "dmesg".

 create-disk.sh
#!/bin/bash
cd /data/ptoledo
for i in 1 2 3 ; do 
cat /proc/mdstat | grep ^md | expand | cut -d ' ' -f 1 | while read l ; do mdadm --stop /dev/$l ; done
umount /tmp/dest/boot /tmp/dest/opt /tmp/dest
mdadm --zero-superblock /dev/sdc1
mdadm --zero-superblock /dev/sdc5
mdadm --zero-superblock /dev/sdc6
mdadm --zero-superblock /dev/sdc7
done
echo "Se va a borrar el /dev/sdc"
echo "Pulse ENTER para continuar..."
read dummy
dd if=/dev/zero of=/dev/sdc bs=16384 count=1024
cat sdc.sfdisk | sfdisk /dev/sdc
dd if=/dev/zero of=/dev/sdc1 bs=16384 count=1024
dd if=/dev/zero of=/dev/sdc5 bs=16384 count=1024
dd if=/dev/zero of=/dev/sdc6 bs=16384 count=1024
dd if=/dev/zero of=/dev/sdc7 bs=16384 count=1024
mdadm --create /dev/md0 --level=1 --metadata=0.90 --raid-disks=2 --homehost=any --uuid=9e3e779f:f17974ae:f1ac3e11:db1c5774 missing /dev/sdc1
mdadm --create /dev/md1 --level=1 --metadata=0.90 --raid-disks=2 --homehost=any --uuid=fc610d8e:89e7e34f:926fea3a:e734fd6b missing /dev/sdc5
mdadm --create /dev/md2 --level=1 --metadata=0.90 --raid-disks=2 --homehost=any --uuid=ba3c70ac:4dbdc277:96cee126:37ab148d missing /dev/sdc6
mdadm --create /dev/md3 --level=1 --metadata=0.90 --raid-disks=2 --homehost=any --uuid=dac38a19:4e406bc3:9ededa8a:cc522842 missing /dev/sdc7
partprobe
echo "RAID creado, pulsa ENTER para continuar..."
read dummy
mkfs.ext3 -U 12b28e2d-d3e8-4f20-a33b-3dfeadd1bbc1 /dev/md0
mkfs.ext3 -U 27f3331b-da22-4731-98a5-7b58dfa9f17d /dev/md2
mkfs.ext3 -U d50303b3-3a8c-450d-a40f-22e76078b0c3 /dev/md3
mkswap -v1 -U fc610d8e-89e7-e34f-926f-ea3ae734fd6b /dev/md1
echo "Particiones formateadas, pulsa ENTER para continuar..."
read dummy
mkdir -p /tmp/dest
mount -t auto /dev/md2 /tmp/dest
cd /tmp/dest/
tar -xvzf /data/ptoledo/sda6.tgz 
mount -t auto /dev/md3 /tmp/dest/opt/
cd opt/
tar -xvzf /data/ptoledo/sda7.tgz 
cd ..
mount -t auto /dev/md0 /tmp/dest/boot/
cd boot/
tar -xvzf /data/ptoledo/sda1.tgz 
cd /data/ptoledo
echo "Contenido copiado, pulsa ENTER para continuar..."
read dummy
for i in dev dev/pts sys proc srv ; do
        mount --bind /$i /tmp/dest/$i
done
echo "(hd0) /dev/sdc" > /tmp/dest/boot/grub/device.map
echo "grub-install"
chroot /tmp/dest /usr/sbin/grub-install --no-floppy /dev/sdc
chroot /tmp/dest /usr/sbin/update-grub
echo "(hd0) /dev/hda" > /tmp/dest/boot/grub/device.map
echo "(hd1) /dev/hdc" >> /tmp/dest/boot/grub/device.map
for i in dev/pts dev sys proc srv ; do
        umount /tmp/dest/$i
done
# Desmontamos todo
umount /tmp/dest/boot/
umount /tmp/dest/opt/
umount /tmp/dest
cat /proc/mdstat 
mdadm --stop /dev/md[0123]



 create-blank-secondary.sh
#!/bin/bash
cd /data/ptoledo
for i in 1 2 3 ; do 
cat /proc/mdstat | grep ^md | expand | cut -d ' ' -f 1 | while read l ; do mdadm --stop /dev/$l ; done
umount /tmp/dest/boot /tmp/dest/opt /tmp/dest
mdadm --zero-superblock /dev/sdc1
mdadm --zero-superblock /dev/sdc5
mdadm --zero-superblock /dev/sdc6
mdadm --zero-superblock /dev/sdc7
done
echo "Se va a borrar el /dev/sdc"
echo "Pulse ENTER para continuar..."
read dummy
dd if=/dev/zero of=/dev/sdc bs=16384 count=1024
cat sdc.sfdisk | sfdisk /dev/sdc
dd if=/dev/zero of=/dev/sdc1 bs=16384 count=1024
dd if=/dev/zero of=/dev/sdc5 bs=16384 count=1024
dd if=/dev/zero of=/dev/sdc6 bs=16384 count=1024
dd if=/dev/zero of=/dev/sdc7 bs=16384 count=1024
echo "Disco borrado y particiones creadas"



 chroot-to-disk.sh
#!/bin/bash
cd /data/ptoledo
for i in 1 2 3 ; do 
umount /tmp/dest/boot /tmp/dest/opt /tmp/dest
cat /proc/mdstat | grep ^md | expand | cut -d ' ' -f 1 | while read l ; do mdadm --stop /dev/$l ; done
done
mdadm --assemble --run /dev/md0 /dev/sdc1
mdadm --assemble --run /dev/md1 /dev/sdc5
mdadm --assemble --run /dev/md2 /dev/sdc6
mdadm --assemble --run /dev/md3 /dev/sdc7
mkdir -p /tmp/dest
mount -t auto /dev/md2 /tmp/dest
mount -t auto /dev/md3 /tmp/dest/opt/
mount -t auto /dev/md0 /tmp/dest/boot/
for i in dev dev/pts sys proc srv ; do
        mount --bind /$i /tmp/dest/$i
done
chroot /tmp/dest
for i in dev/pts dev sys proc srv ; do
        umount /tmp/dest/$i
done
cd /data/ptoledo
umount /tmp/dest/boot/
umount /tmp/dest/opt/
umount /tmp/dest
cat /proc/mdstat 
mdadm --stop /dev/md[0123]



El disco al que se le ha hecho esto es un IDE de 40GB conectado en sdc con el adaptador USB-IDE:
 cat sdc.sfdisk
label: dos
label-id: 0x8e459e62
device: /dev/sdc
unit: sectors

/dev/sdc1 : start=        2048, size=       61440, type=fd
/dev/sdc2 : start=       63488, size=    78101872, type=5
/dev/sdc5 : start=       65536, size=     8388608, type=fd
/dev/sdc6 : start=     8456192, size=    62914560, type=fd
/dev/sdc7 : start=    71372800, size=     6792560, type=fd



Los tgz del contenido de las particiones son los siguientes:
root@uiharu:/data/ptoledo# ls -l *.tgz
-rw-r--r-- 1 dario dario  22775625 may  4 08:53 sda1.tgz
-rw-r--r-- 1 dario dario 996593565 may  4 08:57 sda6.tgz
-rw-r--r-- 1 dario dario       132 may  4 09:00 sda7.tgz
root@uiharu:/data/ptoledo#



Procedimiento


1. Se conecta el disco IDE que va a ser el primario a uiharu usando el adaptado USB-IDE y se espera que aparezca como /dev/sdc en el dmesg

2. Se "plancha" dicho disco (como root, en uiharu):
cd /data/ptoledo
./create-disk.sh


3. Se quita el disco

4. Se conecta el disco IDE que va a ser el secundario a uiharu y se espera que aparezca como /dev/sdc en el dmesg

5. Se "plancha" dicho disco (como root, en uiharu):
cd /data/ptoledo
./create-blank-secondary.sh


6. Se pinchan ambos discos en la plataforma final y se arranca el PC.

7. Se ejecutan los siguientes comandos como root, para añadir el disco secundario al RAID:
mdadm --add /dev/md0 /dev/hdc1
mdadm --add /dev/md1 /dev/hdc5
mdadm --add /dev/md2 /dev/hdc6
mdadm --add /dev/md3 /dev/hdc7


8. Esperas a que termine la sincronización del disco "boot" (/dev/md0 en el ejemplo). Puedes hacer un "watch cat /proc/mdstat", y usar Ctrl-C para salir del watch.

9. Una vez que ha sincronizado el /dev/md0 (que contiene el grub), puedes instalar el grub en el disco secundario con lo siguiente:
echo "(hd0) /dev/hda" > /tmp/dest/boot/grub/device.map
echo "(hd1) /dev/hdc" >> /tmp/dest/boot/grub/device.map
/usr/sbin/grub-install --no-floppy /dev/hdc


10. Con eso ya está el disco completamente preparado.