¿Como hacer un backup efectivo de un disco rigido, crear una imagen o clonar un disco rigido ? En esta nota veremos…
- Instalacion disco rigido 500gb sata2 western digital 16mb en Linux.
- Instalacion de una nueva distro en el nuevo disco.
- backup completo de la instalacion anterior de linux.
- modificar /etc/fstab en la copia backup para apuntar al disco nuevo
- instalacion de grub en el nuevo disco para bootear desde la copia backup.
- removiendo el disco viejo, y probando el booteo desde el backup.
en pocas palabras, moveremos una instalacion existente al nuevo disco.
En el camino instalaremos una nueva distro y veremos algunos problemas con los que nos podemos encontrar … Al finalizar podremos elegir bootear desde el nuevo disco y de la nueva instalacion o de la vieja.
ADVERTENCIA: Como siempre al trabajar con el particionado de discos cabe la posibilidad de un error tanto de la maquina como del ser humano, y terminar borrando datos importantes. Mi mejor consejo aqui es realizar un buen backup a CD o DVD de los documentos y archivos importantes antes de realizar cualquier operacion de instalacion o particionamiento. Consejo que recomiendo doblemente para los usuarios que no tengan experiencia instalando o particionando discos, o para los usuarios novatos de Linux. Los comandos aqui expuestos son simplemente a modo de ejemplo. El usuario esta avisado y corre bajo su propia responsabilidad cualquier problema derivado del uso de los comandos aqui expuestos.
Introduccion
Existen varios motivos por los cuales uno quisiera mudar una particion o instalacion de un disco a otro. En mi caso simplemente necesitaba agregar mas espacio y al mismo tiempo sacar el disco viejo con menor capacidad para formatearlo e instalarlo en otra PC. De manera que necesitaba migrar todos los datos de un disco a otro, de la manera mas rapida y transparente posible Puede ser que simplemente queramos tener un backup completo de toda la particion, Si ademas queremos bootear del nuevo disco ( e independizarlo del disco viejo ) necesitaremos instalar GRUB (o cualquier otro gestor de arranque) en el nuevo disco.
hardware utilizado
En los siguientes ejemplos, he utilizado el siguiente hardware:
motherboard Asrock P4VM800 disco IDE maxtor 30 GB ( el disco viejo a copiar) disco SATA western digital 500 Gb ( el flamante nuevo disco )
DUDAS: La duda que se me planteaba justo antes de comprar el disco era si sería detectado sin problemas tanto por el motherboard como por el sistema operativo. Habia leido en algunos blogs que algunas combinaciones de motherboards/Sistemas tenian problemas para detectar o instalar los drivers para los nuevos discos SATA. Para colmo, el modelo del nuevo disco tiene una tasa de transferencia de 3Gb (SATA 2), y en el manual de mi motherboard decia claramente que soportaba tasas de transferencia de 1,5Gb (SATA 1). Tambien lei que algunos discos tenian un jumper para setear la tasa de transferencia, pero este modelo de disco no tenia ningun jumper. ¿ detectaria la tasa de transferencia automaticamente ? No obstante, las caracteristicas del nuevo disco eran muy tentadoras, y decidi correr el riesgo y adquirirlo de todas formas. Manos a la obra.
Justo despues de haber “enchufado” el nuevo disco …
**Problema: **La computadora no detecta el nuevo disco rigido sata.
Lo primero que debemos mirar es la configuracion del BIOS. En este caso, el BIOS estaba configurado para funcionar en modo RAID, y simplemente seteando el modo Non-RAID se ha resuelto el problema.
Ejemplo de la configuracion del BIOS y Deteccion del disco
BIOS SETUP UTILITY Boot -> Hard disk drives 1st Drive [HDD: PM-HD5722516VL] 2nd Drive [RAID: WDC WD5000AAK] Advanced IDE Configuration -> SATA -> operation mode -> RAID -> Non-RAID SATA1 [Not Detected] BIOS Advances ->IDE Configuration >SATA1 [Hard disk]
Al poner “SATA operation mode” en Non-RAID, ha detectado al disco.
SATA1 ------------------- Device: Hard Disk Vendor: WDL WD5000AAKS-00Y6A0 Size: 500.1 GB LBA Mode: supported Block Mode: 16 sectors PIO Mode: 4 Async DMA: Multiword DMA-2 Ultra DMA: Ultra DMA 6 S.M.A.R.T.: supported -------------------- Boot -> Hard disk drives 1st Drive: [HDD: PM-HD5722516VL] 2nd Drive: [HDD: 3M-WDC WD5000A]
1er booteo (luego de “enchufar” el disco).
Si configuran el disco nuevo como “esclavo”, pueden bootear con la instalacion anterior para particionar el disco nuevo. En mi caso, la relacion maestro/esclavo se configura desde el SETUP de la BIOS, simplemente cambiando el orden de los discos ( 1st drive, 2dn drive ).
Tambien se puede bootear con un live CD. Si se bootea con un Live CD de Ubuntu, recordar que para usar comandos como root, hay que agregar “sudo” delante de los comandos.
Luego de haber booteado, abrimos una consola y chequeamos si el sistema operativo ha detectado al disco.
ejemplos de comandos para obtener informacion del disco
# ls /dev/sd* /dev/sda # cfdisk /dev/sda Unidad de disco: /dev/sda tamaño: 500.1 GB cabezas: 255 sectores por pista: 63 cilindros: 60801 root@seba-desktop:/proc/scsi# cat scsi Attached devices: Host: scsi0 Channel: 00 Id: 00 Lun: 00 Vendor: ATA Model: WDC WD5000AAKS-0 Rev: 12.0 Type: Direct-Access ANSI SCSI revision: 05
Instalacion de “la nueva” distribucion en el nuevo disco
No voy a comentar aqui los pasos a seguir para instalar una distribucion de Linux, puesto que ya existe abundante documentacion en internet y distintos blogs que cubren muy bien esta area. En cambio, simplemente recordare al lector que tenga cuidado cuando selecciona las opciones de particionamiento durante la instalacion para no borrar accidentalmente la instalacion vieja. Especificamente para esta nota usare Ubuntu Dapper Drake 6.06 ( la instalacion existente en el disco viejo ) Y Ubuntu 7.10 Gutsy Gibon ( la cual instalaremos en el flamante nuevo disco )
Sin embargo, los procedimientos deberian ser bastante similares para otras distribuciones.
Como puede observarse de la informacion obtenida de los comandos anteriores, el nuevo disco se encuentra mapeado en /dev/sda El disco IDE viejo, se encuentra en /dev/hda
Particionamiento
Para realizar el particionamiento, podemos utilizar cualquiera de los programas: cfdisk, fdisk, gparted, o cualquier programa de particionamiento. En esta nota, asumire que el usuario conoce alguno de los programas de particionado y para el usuario no familiarizado con el tema, le quedara la tarea de investigar como utilizar algun programa de particionado. Aqui simplemente expondre los resultados de haber utilizado el programa cfdisk, y como quedan las particiones luego de haber realizado el particionamiento. Prestar mucha atencion de no confundirse y particionar el disco con datos, ya que al particionar si el disco siendo particionado cotenida datos, estos se borraran.
Ver informacion del disco ya particionado
#cfdisk /dev/sda total en Mb: 500107 /dev/sda /dev/sda1 ext3 / 29997 Mb /dev/sda2 ext3 /media/sda2 29997 Mb /dev/sda3 ext3 /media/sda3 39999 Mb /dev/sda5 swap 1998 Mb /dev/sda6 ext3 /home 100000 Mb /dev/sda7 ext3 /media/data 298108 Mb
el programa cfdisk.
Abajo puede verse el menu con las distintas opciones.
cfdisk 2.12r Unidad de disco: /dev/sda Tamaño: 500107862016 bytes, 500.1 GB Cabezas: 255 Sectores por pista: 63 Cilindros: 60801 Nombre Indicadores Tipo Tipo de S.F. [Etiqueta] Tamaño(MB) sda1 Inicio Primaria Linux ext3 29997,60 sda2 Primaria Linux ext3 29997,60 sda3 Primaria Linux ext3 39999,54 sda5 Lógica Linux swap / Solaris 1998,75 sda6 Lógica Linux ext3 100002,96 sda7 Lógica Linux ext3 298108,83 [Iniciable] [Suprimir] [ Ayuda ] [Maximizar] [Imprimir] [ Salir ] [ Tipo ] [Unidades] [Escribir] Conmuta el indicador de iniciable de la partición actual
Imagen de cfdisk
Salida del comando fdisk
root@seba-desktop:~# fdisk -l Disco /dev/sda: 500.1 GB, 500107862016 bytes 255 cabezas, 63 sectores/pista, 60801 cilindros Unidades = cilindros de 16065 * 512 = 8225280 bytes Disposit. Inicio Comienzo Fin Bloques Id Sistema /dev/sda1 1 3647 29294496 83 Linux /dev/sda2 3648 7294 29294527+ 83 Linux /dev/sda3 7295 12157 39062047+ 83 Linux /dev/sda4 12158 60801 390732930 5 Extendida /dev/sda5 12158 12400 1951866 82 Linux swap / Solaris /dev/sda6 12401 24558 97659103+ 83 Linux /dev/sda7 24559 60801 291121866 83 Linux Disco /dev/hda: 164.6 GB, 164696555520 bytes 255 cabezas, 63 sectores/pista, 20023 cilindros Unidades = cilindros de 16065 * 512 = 8225280 bytes Disposit. Inicio Comienzo Fin Bloques Id Sistema /dev/hda1 * 1 3824 30716248+ 7 HPFS/NTFS /dev/hda2 3825 20022 130110435 f W95 Ext'd (LBA) /dev/hda5 3825 8923 40957686 e W95 FAT16 (LBA) /dev/hda6 8924 18739 78846988+ e W95 FAT16 (LBA) /dev/hda7 18740 18804 522081 82 Linux swap / Solaris /dev/hda8 18805 20022 9783553+ 83 Linux
NOTA: La columna inicio indica si la particion esta marcada como “booteable” o no. El el caso del disco viejo “/dev/hda1″ puede verse esta marca. En el caso del disco nuevo, deberemos agregar este flag si queremos tambien poder bootear del disco nuevo. Para marcar una particion con el flag de booteo, se puede utilizar por ejemplo el programa cfdisk o el programa fdisk, mencionados anteriormente, siendo el programa cfdisk mas amigable y con menues.
Salida de fdisk en formato tabla de particiones para /dev/sda
----Inicio---- -----Final---- Comienzo Número de Nº Ind. Cab. Sec. Cil. ID Cab. Sec. Cil. Sector Sectores 1 0x00 1 1 0 0x83 254 63 1023 63 58588992 2 0x00 254 63 1023 0x83 254 63 1023 58589055 58589055 3 0x00 254 63 1023 0x83 254 63 1023 117178110 78124095 4 0x00 254 63 1023 0x05 254 63 1023 195302205 781465860 5 0x00 254 63 1023 0x82 254 63 1023 63 3903732 6 0x00 254 63 1023 0x83 254 63 1023 63 195318207 7 0x00 254 63 1023 0x83 254 63 1023 63 582243732
Backup de la particion / instalacion
Una vez instalada la nueva distribucion en el nuevo disco, procedemos a realizar el backup o migracion de la instalacion vieja al nuevo disco.
Existen en la actualidad varios programas libres, especificos para esta tarea. Sin embargo, me decidi por probar primero con algo bien simple:
# find . -depth -print0 | cpio –null -pvd new-dir |
En el modo copy-pass, cpio copia archivos de un arbol de directorio hacia otro, combinando el modo copy-out y copy-in sin crear un archivo. Este lee la lista de archivos de la entrada standard; El directorio en el cual este copiara los archivos es dado como argumento sin opcion.
find /media/hda1/ -depth -print0 | cpio --null --sparse -pvd /media/sda2
Este comando funciona muy bien, y copia tambien los archivos especiales (como archivos de dispositivos y temporales ), lo que garantiza una copia imagen de la instalacion origen.
Otro comando que se podria intentar es algo como dd if=/dev/origen of=/dev/destino Sin embargo el problema que encontre con el comando dd es que para que el backup funcione correctamente, es necesario que ambos discos sean del mismo tamaño. Ademas hay que tener en cuenta que con el comando dd se borraran todos los datos del disco destino, en cambio utilizando cpio simplemente necesitamos un directorio destino en otra particion con suficiente espacio como para guardar los datos del disco origen, pero no es necesario borrar todo el disco destino.
Es necesario no estar usando la particion o unidad de disco a copiar en el momento de realizar el backup. Por ejemplo, siempre es mejor bootear desde otra instalacion o desde un Live CD para realizar esta tarea. De esta manera, nos aseguramos de que se copia todo correctamente, y de que no queden archivos especiales o temporales que podrian afectar la copia.
En mi caso, simplemente arranque desde la nueva distribucion. Antes de poder realizar el backup, hay que montar el disco viejo en la nueva distribucion.
Modificando el /etc/fstab (dentro de la particion de backup)
Luego de haber copiado la instalacion vieja al disco nuevo, hay que modificar el archivo /etc/fstab dentro de la copia backup, para actualizar las rutas de los puntos de montaje, que ahora deben apuntar al nuevo disco. Como ejemplo, aca puede verse la modificacion del /etc/fstab original. Notar la linea comentada #/dev/hda8 (donde recide la instalacion original) reemplazada por la ruta donde ahora reside la copia: /dev/sda2 En otra linea, el swap anterior /dev/hda7 es comentado y reemplazado por la ruta del nuevo swap: /dev/sda5 Tambien, al final he agregado 2 lineas mas con informacion de particiones adicionales ( sda7 y sda6 )
# /etc/fstab: static file system information. # # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 #/dev/hda8 / ext3 defaults,errors=remount-ro 0 1 /dev/sda2 / ext3 defaults,errors=remount-ro 0 1 #/dev/hda1 /media/hda1 ntfs defaults,nls=utf8,umask=007,gid=46 0 1 #/dev/hda5 /media/hda5 ext3 defaults,errors=remount-ro 0 1 #/dev/hda6 /media/hda6 ext3 defaults,errors=remount-ro 0 1 #/dev/hda7 none swap sw 0 0 /dev/sda5 none swap sw 0 0 /dev/hdc /media/cdrom0 udf,iso9660 user,noauto 0 0 /dev/sda7 /media/data ext3 defaults,errors=remount-ro 0 1 /dev/sda6 /media/sda6 ext3 defaults,errors=remount-ro 0 1
GRUB
Procedemos a instalar un gestor de arranque en el nuevo disco. De esta forma, podremos bootear desde el nuevo disco. Recordar que la 1er particion donde instalaremos el gestor de arranque debe tener seteado el flag de booteo. Este se verifica y cambia desde las herramientas de particionamiento (cfdisk, fdisk, gparted, etc).
informacion sobre grub:
# man grub # man grub-install
posibles problemas al correr grub-install
Error /dev/hdX does not have any corresponding BIOS drive
Este error se soluciona con la opcion –recheck.
# grub-install --recheck /dev/sda
ver archivo: /boot/grub/device.map
luego del recheck ….
root@seba-desktop:/boot/grub# cat device.map (fd0) /dev/fd0 (hd0) /dev/hda (hd1) /dev/sda (hd2) /dev/sdb
Para hacerlo mas interesante, instalaremos GRUB utilizando directamente la consola grub, a la cual puede accederse con el comando grub:
#grub
**NOTA: **A la consola de grub puede accederse de 2 formas: 1) con el comando grub mencionado anteriormente (con el usuario root) 2) durante el booteo, una vez dentro del menu de booteo de grub, presionar la tecla ‘c’ para entrar en la consola de grub.
Una vez dentro de la consola grub…
grub> find /boot/grub/stage1 (hd0,7) (hd1,0)
———- NOTA: la nomenclatura de GRUB es distinta a la nomenclatura de /dev/ aqui, (hd0,7) significa /dev/hda8 (hd1,0) significa /dev/sda1
hd0 = primer disco, 7 = octava particion hd1 = segundo disco, 0 = primera particion ———–
grub>root (hd1,0) grub>setup (hd1) checking if "/boot/grub/stage1" exists...yes checking if "/boot/grub/stage2" exists...yes checking if "/boot/grub/stage1.5" exists...yes Running [...]
El utlimo comando ingresado en la consola efectivamente instala grub en la 1ra particion del 2do disco, o sea en mi caso /dev/sda1
Para salir de la consola grub, simplemente escribir quit:
grub>quit
Listo. Ya deberiamos poder bootear desde el nuevo disco, tanto de la copia de la instalacion anterior como de la nueva.
Pero … Opps …. podemos encontrarnos con
GRUB y el problema de unidades intercambiadas …
Sintoma: Luego de haber ejecutado correctamente la instalacion de grub (ya sea mediante grub-install o mediante la consola grub) y sin recibir ningun mensaje de error, al intentar bootear recibimos alguno de estos mensajes:
Error 17: cannot mount selected partition -> 7.10
Error 22: No such partition -> /dev/hda8
Solucion: modificando /boot/grub/menu.lst
Las 3 primeras opciones fueron agregadas automaticamente al instalar Ubuntu 7.10
root@seba-desktop:/media/sda1/boot/grub# pager menu.lst title Ubuntu 7.10, kernel 2.6.22-14-generic root (hd0,0) kernel /boot/vmlinuz-2.6.22-14-generic root=UUID=09397d29-fb23-4631-a3e5-4a7f891bfb34 ro quiet splash initrd /boot/initrd.img-2.6.22-14-generic quiet title Ubuntu 7.10, kernel 2.6.22-14-generic (recovery mode) root (hd0,0) kernel /boot/vmlinuz-2.6.22-14-generic root=UUID=09397d29-fb23-4631-a3e5-4a7f891bfb34 ro single initrd /boot/initrd.img-2.6.22-14-generic title Ubuntu 7.10, memtest86+ root (hd0,0) kernel /boot/memtest86+.bin quiet title Ubuntu 6.06, kernel 2.6.15-26-386 (on /dev/sda2) root (hd0,1) kernel /boot/vmlinuz-2.6.15-26-386 root=/dev/sda2 ro quiet splash initrd /boot/initrd.img-2.6.15-26-386 savedefault boot
Para bootear con la vieja instalacion movida al nuevo disco Basicamente, tuve que reemplazar (hd1,7) por (hd0,1) ( o sea, /dev/hda8 por /dev/sda2 ) en el archivo /boot/grub/menu.lst
La salida del comando diff entre la configuracion original y la modificada, en forma resumida presenta los siguientes cambios:
> > title Ubuntu 6.06, kernel 2.6.15-26-386 (on /dev/sda2) > root (hd0,1) > kernel /boot/vmlinuz-2.6.15-26-386 root=/dev/sda2 ro quiet splash > initrd /boot/initrd.img-2.6.15-26-386 > savedefault > boot > > --- > root (hd1,0) < root (hd0,7) --- > root (hd1,7) < root (hd0,7) ---
NOTA: comparar el archivo original con el modificado a continuacion para entender la notacion de las modificaciones:
El archivo /boot/grub/menu.lst ORIGINAL
NOTA: Se borran todos los comentarios para abreviar
root@seba-desktop:/media/sda1/boot# cat grub.bak/menu.lst default 0 timeout 10 title Ubuntu 7.10, kernel 2.6.22-14-generic root (hd1,0) kernel /boot/vmlinuz-2.6.22-14-generic root=UUID=09397d29-fb23-4631-a3e5-4a7f891bfb34 ro quiet splash initrd /boot/initrd.img-2.6.22-14-generic quiet title Ubuntu 7.10, kernel 2.6.22-14-generic (recovery mode) root (hd1,0) kernel /boot/vmlinuz-2.6.22-14-generic root=UUID=09397d29-fb23-4631-a3e5-4a7f891bfb34 ro single initrd /boot/initrd.img-2.6.22-14-generic title Ubuntu 7.10, memtest86+ root (hd1,0) kernel /boot/memtest86+.bin quiet # This entry automatically added by the Debian installer for an existing # linux installation on /dev/hda8. title Ubuntu, kernel 2.6.15-26-386 (on /dev/hda8) root (hd0,7) kernel /boot/vmlinuz-2.6.15-26-386 root=/dev/hda8 ro quiet splash initrd /boot/initrd.img-2.6.15-26-386 savedefault boot # This entry automatically added by the Debian installer for an existing # linux installation on /dev/hda8. title Ubuntu, kernel 2.6.15-26-386 (recovery mode) (on /dev/hda8) root (hd0,7) kernel /boot/vmlinuz-2.6.15-26-386 root=/dev/hda8 ro single initrd /boot/initrd.img-2.6.15-26-386 savedefault boot # This entry automatically added by the Debian installer for an existing # linux installation on /dev/hda8. title Ubuntu, memtest86+ (on /dev/hda8) root (hd0,7) kernel /boot/memtest86+.bin savedefault boot
El archivo /boot/grub/menu.lst CORREGIDO
root@seba-desktop:/media/sda1/boot# cat grub/menu.lst default 0 timeout 10 title Ubuntu 7.10, kernel 2.6.22-14-generic root (hd0,0) kernel /boot/vmlinuz-2.6.22-14-generic root=UUID=09397d29-fb23-4631-a3e5-4a7f891bfb34 ro quiet splash initrd /boot/initrd.img-2.6.22-14-generic quiet title Ubuntu 7.10, kernel 2.6.22-14-generic (recovery mode) root (hd0,0) kernel /boot/vmlinuz-2.6.22-14-generic root=UUID=09397d29-fb23-4631-a3e5-4a7f891bfb34 ro single initrd /boot/initrd.img-2.6.22-14-generic title Ubuntu 7.10, memtest86+ root (hd0,0) kernel /boot/memtest86+.bin quiet title Ubuntu 6.06, kernel 2.6.15-26-386 (on /dev/sda2) root (hd0,1) kernel /boot/vmlinuz-2.6.15-26-386 root=/dev/sda2 ro quiet splash initrd /boot/initrd.img-2.6.15-26-386 savedefault boot # This entry automatically added by the Debian installer for an existing # linux installation on /dev/hda8. title Ubuntu, kernel 2.6.15-26-386 (on /dev/hda8) root (hd1,7) kernel /boot/vmlinuz-2.6.15-26-386 root=/dev/hda8 ro quiet splash initrd /boot/initrd.img-2.6.15-26-386 savedefault boot # This entry automatically added by the Debian installer for an existing # linux installation on /dev/hda8. title Ubuntu, kernel 2.6.15-26-386 (recovery mode) (on /dev/hda8) root (hd1,7) kernel /boot/vmlinuz-2.6.15-26-386 root=/dev/hda8 ro single initrd /boot/initrd.img-2.6.15-26-386 savedefault boot # This entry automatically added by the Debian installer for an existing # linux installation on /dev/hda8. #title Ubuntu, memtest86+ (on /dev/hda8) #root (hd1,7) #kernel /boot/memtest86+.bin #savedefault #boot
NOTA: Luego de remover el disco rigido viejo, hay que comentar todas las entradas que contienen /dev/hda8 pues ahora apuntaran a un disco inexistente. Como ejemplo, en el ultimo archivo se comenta la ultima entrada del menu #title Ubuntu, memtest86+ (on /dev/hda8), simplemente anteponiendo el caracter # delante de todas las lineas que forman una entrada del menu.
Tambien te puede interesar
Si tienes alguna pregunta, consejo (o simplemente quieres saludar) por favor deja un comentario de esta nota.
Copyright: http://snarvaez.poweredbygnulinux.com Sebastián Narváez este documento ha sido publicado bajo la siguiente licencia: “Verbatim copying and distribution of this entire article are permitted in any medium provided this notice is preserved.”