Clone partition table

  LVM / filesystemen / RAID / DISK

Om eenvoudig een copy of een backup, te maken van een partition table kan je gebruik maken van sfdisk. In onderstaand voorbeeld ging het om het vervangen van een kapote HD in een dell laptop. op de kapoten disk stond een rescue image van dell. het doel was deze terug te zetten op de nieuwe disk.

De oude disk is verwijderd uit de laptop en de nieuwe disk zit er in, Boot daarna van een Linux live CD of een rescue cd, in het voorbeeld ben ik geboot van een Ubuntu live cd. De oude disk heb ik weer aan het systeem gehangen middels een “Converter kabel sata+ide naar USB”

De nieuwe disk dient uiteraard wel groter of even groot te zijn.

als systeem gestart is controleren of we beide disken zien, gebruik hier voor fdisk -l.

root@ubuntu:~# fdisk -l 

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sda doesn't contain a valid partition table

Disk /dev/sdb: 58.5 GB, 58506416640 bytes
255 heads, 63 sectors/track, 7113 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x434e78fe

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          10       80293+  de  Dell Utility
/dev/sdb2   *          11        6719    53890042+   7  HPFS/NTFS
/dev/sdb3            6721        7112     3148740   db  CP/M / CTOS / ...

De oude disk is /dev/sdb 60GB en de nieuwe een 160GB disk vinden we terug als /dev/sda en de nieuwe is leeg.

je kan de partition table in 1 stap copieren maar je kan het ook eerst naar een file doen. voordeel is dan dat je eventueel de size kan aanpassen als moet je er voorzichtig mee zijn.

eerst naar een file

root@ubuntu:~# sfdisk -d /dev/sdb > parttable.txt

en zo ziet de file er uit.

 root@ubuntu:~# cat parttable.txt 
 # partition table of /dev/sdb
 unit: sectors

 /dev/sdb1 : start=       63, size=   160587, Id=de
 /dev/sdb2 : start=   160650, size=107780085, Id= 7, bootable
 /dev/sdb3 : start=107956800, size=  6297480, Id=db
 /dev/sdb4 : start=        0, size=        0, Id= 0

'”`UNIQ–google-00000003-QINU`”‘

Nu kunnen we de file wegschrijven naar de nieuwe disk.

 root@ubuntu:~# sfdisk /dev/sda < parttable.txt 
 Checking that no-one is using this disk right now ...
 OK

 Disk /dev/sda: 19457 cylinders, 255 heads, 63 sectors/track

 sfdisk: ERROR: sector 0 does not have an msdos signature
  /dev/sda: 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/sda1            63    160649     160587  de  Dell Utility
 /dev/sda2   *    160650 107940734  107780085   7  HPFS/NTFS
 /dev/sda3     107956800 114254279    6297480  db  CP/M / CTOS / ...
 /dev/sda4             0         -          0   0  Empty
 Successfully wrote the new partition table 

 Re-reading the partition table ...

 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).)

Als je nu niet zo’n usb converter hebt kan je deze methode ook gebruiken door met een live cd te booten. dan een het parttable.txt bestand wegschrijven op bv een usb drive of een netwerk share. vervolgens het systeem uitzetten en dan de disk wisselen weer booten van live cd en de partition table op de nieuwe disk zetten.

Zonder tussen stap

heb je beide disken wel tegelijk aan het systeem hangen kan je de partition table ook in 1 keer er op zetten.

root@ubuntu:~# sfdisk -d /dev/sdb | sfdisk /dev/sda

je kan bovengenoemde bv ook gebruiken als je bv een disk moet vervangen die onderdeel is van een software RAID set. zie Vervangen kapotte disk in RAID