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

MetrosunXX en Linux




Friday, 10 June 2005, 4:47:06 pm
Creado el maestro con el procedimiento de abajo Falta meter en el maestro los programas que lo distinguen de database (tanto lo de TCE como los programas compilados con Pro*C).

Descripción del proyecto


He creado una copia de database con el siguiente procedimiento (es un poco largo, pero no se tarda demasiado en hacer --por otro lado espero no equivocarme en nada en esta descripción ya que la estoy escribiendo de memoria):

  1. Se pone un disco duro virgen en hda y la cederromera en hdc
  2. Se arranca desde el "Debian GNU/Linux 3.1 Sarge Netinst CD (rc3)"
  3. Se aceptan las opciones de idioma, teclado y se le pone al pc una dirección IP (en mi caso le he puesto IP: 3.0.1.171 Gateway: 3.0.1.51 DNS: 3.0.1.51 hostname: metrosunXX domainname: metro.local
  4. Te vas a la consola 2 (Alt+F2) y pulsas ENTER para activarla
  5. Particionas el disco con un fdisk. Las particiones que he puesto son las siguientes (disco duro de 120GB):
    hda1: /boot (50MB)
    hda2: extended (todo el resto del HDD; lo que hace por defecto)
    hda5: swap (2G)
    hda6: / (8GB)
    hda7: /u01 (5GB)
    hda8: /u02 (20GB)
    hda9: /u03 (20GB)
    hda10 /u04 (20GB)
    hda11: /u05 (20GB)
    hda12: /u06 (22GB)
  6. Marcas la partición hda1 como bootable.
  7. Pones a todas las particiones el tipo fd (Linux RAID). NOTA: La hda2 no tiene tipo, ya que es una partición extended que solo está para contener otras particiones.
  8. Haces enlaces desde los dispositivos udev a los nombres "clasicos":
    # cd /dev
    # for i in 1 2 3 4 5 6 7 8 9 10 11 12 ; do ln -s /dev/discs/disc0/part$i /dev/hda$i ; done
    # ln -s /dev/discs/disc0/disc /dev/hda
  9. Tenemos que conseguir que cargue los módulos de RAID. La única manera que sé de hacerlo bien es forzando a que el instalador lo haga por nosotros. Para eso, vuelves al instalador de debian (alt-f1) y le das a particionar manualmente
  10. Allí le dices RAID
  11. Entonces le das a sí y a crear un nuevo volumen.
  12. Eliges RAID-1, y le aceptas los valores por defecto de 2 discos y 0 spares.
  13. Entonces seleccionas solo la partición part1 y le das a ok
  14. Le dices que has terminado de particionar
  15. Ya tenemos hecha una partición RAID, lo que significa que están cargados todos los módulos necesarios. Vuelves a la consola (alt-F2)
  16. Creamos los dispositivos "antiguos" de raid (lo necesitamos para que luego todo funcione):
    # cd /dev/md ; for i in * ; do ln -s /dev/md/$i /dev/md$i ; done
  17. Deshacemos la partición raid que había creado el instalador de debian (en el siguiente punto la crearemos "a nuestra manera").
    # mdadm --stop /dev/md0
    # mdadm --zero-superblock /dev/hda1
  18. Ahora creamos los dispositivos raid "a nuestra manera" (lo que queremos es que los nombres de los dispositivos md se correspondan con los de las particiones del disco duro, que es mucho más fácil de mantener después):
    # for i in 1 5 6 7 8 9 10 11 12 ; do mdadm --create /dev/md$i --level=1 --raid-disks=2 /dev/hda$i missing ; done
  19. Formateamos las particiones ext3:
    # for i in 1 6 7 8 9 10 11 12 ; do mkfs.ext3 /dev/md$i ; done
  20. Preparamos la partición de swap:
    # mkswap -v1 /dev/md5
  21. Montamos todo para prepararnos a copiar database en este PC:
    # cd /tmp
    # mkdir dest
    # mount -t ext3 /dev/md6 /tmp/dest
    # cd dest
    # mkdir boot
    # mount -t ext3 /dev/md1 /tmp/dest/boot
    # for i in 1 2 3 4 5 6 ; do mkdir /tmp/dest/u0$i ; mount -t ext3 /dev/md$(($i+6) /tmp/dest/u0$i ; done
  22. Obtenemos los programas que vamos a necesitar para poder hacer la copia
    # cd /tmp/dest
    # wget ftp://metro:laclave@3.0.1.124/bin/gzip
    # wget ftp://metro:laclave@3.0.1.124/bin/tar

    # wget ftp://metro:laclave@3.0.1.124/bin/nc
    # chmod 755 tar gzip nc
  23. Ponemos a metrosunXX a esperar los datos:
    # cd /tmp/dest
    # export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.
    # PATH=$PATH:.
    # nc -l -p 10000 | tar -xvzpf -
  24. En database iniciamos el volcado de datos:
    database # cd /
    database# mount -o remount,rw /boot
    database# tar -cvpf - . | gzip -1 | ./socket-upipe-client 3.0.1.171 10000
  25. Esperamos a que temine de copiar (tarda bastante, pero debería der menos de 1 hora...).
  26. En metrosunXX salimos y volvemos a activar la consola (pata quitar va variable de entorno de LD_LIBRARY_PATH):
    # exit
    Press enter to activate this console.[ENTER]
  27. Entramos con un chroot al nuevo hdd
    # cd /tmp
    # chroot dest
  28. Modificamos el /etc/network/interfaces y ponemos la ip que le queremos dar al PC (en mi caso, 3.0.1.171)
    # vi /etc/network//interfaces
  29. Modificamos el /etc/fstab para que use los sistemas de archivos como ext3 (más seguro que ext2).
  30. Modificamos el lilo.conf para que no proteste por no tener segundo disco duro:
    En el /etc/lilo.conf cambiamos la línea
    raid-extra-boot=/dev/hda,/dev/hdc
    Por la línea
    raid-extra-boot=/dev/hda
  31. Ejecutamos el lilo:
    # lilo
  32. Volvemos a poner bien el lilo.conf
    En el /etc/lilo.conf cambiamos la línea
    raid-extra-boot=/dev/hda
    Por la línea
    raid-extra-boot=/dev/hda,/dev/hdc
  33. Salimos del entorno chroot
    # exit
  34. Desmontamos los dispositivos:
    # for j in 1 2 ; do for i in `df | grep dest | cut -c 57-` ; do umount $i ; done ; done
  35. Reiniciamos pulsando Control+Alt+Suprim y lo apagamos cuando está haciendo los chequeos de la BIOS.
  36. Quitamos el CD-ROM
  37. Añadimos el segundo disco duro (hdc)
  38. Arrancamos
  39. Entramos cono root
  40. Copiamos la tabla de partición del primer disco al segundo
    # sfdisk -d /dev/hda | sfdisk /dev/hdc
  41. Añadimos las nuevas particiones al RAID
    # for i in 1 5 6 7 8 9 10 11 12 ; do mdadm --add /dev/md$i /dev/hda$i ; done
  42. Ejecutamos el lilo para que ponga el arranque en el segundo HDD:
    # lilo
  43. Esperamos a que termine de sincronizar los discos (esto hay que hacerlo en un terminal bastante grande, usa un xterm y escribe en el un resize antes de ejecutar este comando):
    # watch /proc/mdstat
  44. Una vez que ha terminado de sincronizar, sal con un Control+C
  45. Ya puedes apagar el ordenador con un
    # shutdown -h now.