systemadmin.es > Storage > Clonar la tabla de particiones entre dos discos

Clonar la tabla de particiones entre dos discos

En el caso que necesitemos tener dos discos particionados exactamente igual, ya sea con discos exactamente iguales como para discos ligeramente diferentes, podemos clonar la tabla de particiones de un disco a otro con sfdisk:

Podemos listar las particiones en un formato similar al fdisk con la opción -l:

# sfdisk -l /dev/loop0 
Disk /dev/loop0: cannot get geometry

Disk /dev/loop0: 130 cylinders, 255 heads, 63 sectors/track
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/loop0p1          0+     99     100-    803218+  8e  Linux LVM
/dev/loop0p2        100     119      20     160650   8e  Linux LVM
/dev/loop0p3        120     129      10      80325   8e  Linux LVM
/dev/loop0p4          0       -       0          0    0  Empty

O bien podemos usar la opción -d para listarlas en un formato que luego nos sirva como configuración:

# sfdisk -d /dev/loop0 
# partition table of /dev/loop0
unit: sectors

/dev/loop0p1 : start=       63, size=  1606437, Id=8e
/dev/loop0p2 : start=  1606500, size=   321300, Id=8e
/dev/loop0p3 : start=  1927800, size=   160650, Id=8e
/dev/loop0p4 : start=        0, size=        0, Id= 0

Aunque el dispositivo /dev/loop1 sea más grande que /dev/loop0 podemos clonar la tabla de particiones de un disco al otro con el siguiente comando:

# sfdisk -d /dev/loop0 | sfdisk /dev/loop1 
Checking that no-one is using this disk right now ...
BLKRRPART: Invalid argument
OK
Disk /dev/loop1: cannot get geometry

Disk /dev/loop1: 130 cylinders, 255 heads, 63 sectors/track
Old situation:
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/loop1p1          0+    129     130-   1044193+  83  Linux
/dev/loop1p2          0       -       0          0    0  Empty
/dev/loop1p3          0       -       0          0    0  Empty
/dev/loop1p4          0       -       0          0    0  Empty
New situation:
Units = sectors of 512 bytes, counting from 0

   Device Boot    Start       End   #sectors  Id  System
/dev/loop1p1            63   1606499    1606437  8e  Linux LVM
/dev/loop1p2       1606500   1927799     321300  8e  Linux LVM
/dev/loop1p3       1927800   2088449     160650  8e  Linux LVM
/dev/loop1p4             0         -          0   0  Empty
Warning: no primary partition is marked bootable (active)
This does not matter for LILO, but the DOS MBR will not boot this disk.
Successfully wrote the new partition table

Re-reading the partition table ...
BLKRRPART: Invalid argument

If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes:  dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)

Si mostramos el particionado con la opción -l veremos como son iguales:

# sfdisk -l /dev/loop0 
Disk /dev/loop0: cannot get geometry

Disk /dev/loop0: 130 cylinders, 255 heads, 63 sectors/track
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/loop0p1          0+     99     100-    803218+  8e  Linux LVM
/dev/loop0p2        100     119      20     160650   8e  Linux LVM
/dev/loop0p3        120     129      10      80325   8e  Linux LVM
/dev/loop0p4          0       -       0          0    0  Empty
# sfdisk -l /dev/loop1
Disk /dev/loop1: cannot get geometry

Disk /dev/loop1: 130 cylinders, 255 heads, 63 sectors/track
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/loop1p1          0+     99     100-    803218+  8e  Linux LVM
/dev/loop1p2        100     119      20     160650   8e  Linux LVM
/dev/loop1p3        120     129      10      80325   8e  Linux LVM
/dev/loop1p4          0       -       0          0    0  Empty

Tal como me ha comentado damonpei por correo, advertir que estamos clonando la tabla de particiones, no los datos que estas contengan. No se debe confundir, para clonar el disco entero (con los datos) deberíamos usar dd.

One comment to “Clonar la tabla de particiones entre dos discos”

  1. al clonar lal tabla de particiones de un disco mayor hacia uno menor 250g -> 160g, tendría que modificar la capacidad de la última partición?, que en mi caso sería la sdb4, ya q sdb3 es extendida y contiene a sdb5 sdb6, pero no se cómo hacerlo manualmente, podrías darme mano en ésta…??
    ahora estoy clonando igualmente el disco de 250 hacia el de 160, usando dd if=/dev/sda of=/deb/sdb bs=1M pero creo haberlo intentado antes dándome un error sobre asignación en el disco…
    mi intencion era clonar la tabla de particiones, y luego editarla, a la cantidad de sectores de la sdb4, para luego con dd o clonezilla clonar las pariciones completas al disco duro menor,…
    intenté hacerlo con sfdisk -d /dev/sda | /dev/sdb, pero me retorna un:
    bash: /dev/sdb: permiso denegado
    todo esto lo estoy haciendo en consola terminal, como root desde un live ubuntu12,10 en un portatil, el hdd 250 en el portatil, y el 160 por usb…
    mi cuestión sería, si puedo ver la tabla de particion del sda y luego editarla para clonarla en sdb?? gracias de antemano…!!

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>