This is a small demonstration on how to backup and restore partition table data in a Linux system. For this demo, I've taken '/dev/sde' hard drive as an example. So, in the first part, I'd backup the drive partition table and later part we'd destroy the data, hence, we'd restore it finally using the backup copy.
1) The device '/dev/sde' which got one partition '/dev/sde1' with a label '/label_test' mounted on '/test2' as seen below:
{Checking the partition details of the device}
[root@RHEL4 ~]# fdisk -l /dev/sde
Disk /dev/sde: 213 MB, 213909504 bytes
64 heads, 32 sectors/track, 204 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks Id System
/dev/sde1 1 204 208880 83 Linux
{Checking the mount status of the device}
[root@RHEL4 ~]# mount | grep sde
/dev/sde1 on /test2 type ext3 (rw)
{Checking the label associated with the device}
[root@RHEL4 ~]# e2label /dev/sde1
/label_test
{Checking to see if this device is added in fstab for automatic mount on bootup}
[root@RHEL4 ~]# grep test2 /etc/fstab
LABEL=/label_test /test2 ext3 defaults 1 2
2) Backup '/dev/sde' partition table using 'sfdisk' command:
[root@RHEL4 ~]# sfdisk -d /dev/sde > /root/partition_table_backup/sde.ptable
{Checking to see the file contents}
[root@RHEL4 ~]# cat /root/partition_table_backup/sde.ptable
# partition table of /dev/sde
unit: sectors
/dev/sde1 : start= 32, size= 417760, Id=83
/dev/sde2 : start= 0, size= 0, Id= 0
/dev/sde3 : start= 0, size= 0, Id= 0
/dev/sde4 : start= 0, size= 0, Id= 0
3) Now, let's erase the partition table of '/dev/sde'.
[root@RHEL4 ~]# dd if=/dev/zero of=/dev/sde bs=1 count=512
512+0 records in
512+0 records out
4) Check the partition of /dev/sde1 now, it should not be available:
[root@RHEL4 ~]# fdisk -l /dev/sde
Disk /dev/sde: 213 MB, 213909504 bytes
64 heads, 32 sectors/track, 204 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Disk /dev/sde doesn't contain a valid partition table
-
System could be rebooted here, however, it would throw up Control D
error since could not find the device /dev/sde1. So, need to comment
this entry in fstab and reboot. After which we could restore this.
5) Let's restore the partition table of the device '/dev/sde'.
[root@RHEL4 ~]# sfdisk /dev/sde < /root/partition_table_backup/sde.ptable
Checking that no-one is using this disk right now ...
OK
Disk /dev/sde: 204 cylinders, 64 heads, 32 sectors/track
sfdisk: ERROR: sector 0 does not have an msdos signature
/dev/sde: unrecognized partition
Old situation:
No partitions found
New situation:
Units = sectors of 512 bytes, counting from 0
Device Boot Start End #sectors Id System
/dev/sde1 32 417791 417760 83 Linux
/dev/sde2 0 - 0 0 Empty
/dev/sde3 0 - 0 0 Empty
/dev/sde4 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 ...
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).)
6) Verify if partition table is restored.
[root@RHEL4 ~]# fdisk -l /dev/sde
Disk /dev/sde: 213 MB, 213909504 bytes
64 heads, 32 sectors/track, 204 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks Id System
/dev/sde1 1 204 208880 83 Linux
Partition table has been restored successfully!
References :
No comments:
Post a Comment