Search This Blog

Friday, 13 May 2016

Fdisk table update command without rebooting the system

[root@sharepoint usershare]# partx -v -a /dev/sda


Resolution

partprobe was commonly used in RHEL 5 to inform the OS of partition table changes on the disk. In RHEL 6, it will only trigger the OS to update the partitions on a disk that none of its partitions are in use (e.g. mounted). If any partition on a disk is in use, partprobe will not trigger the OS to update partitions in the system because it is considered unsafe in some situations.

So in general we would suggest:

  1. Unmount all the partitions of the disk before modifying the partition table on the disk, and then run partprobe to update the partitions in system.
  2. If this is not possible (e.g. the mounted partition is a system partition), reboot the system after modifying the partition table. The partitions information will be re-read after reboot.

If a new partition was added and none of the existing partitions were modified, consider using the partx command to update the system partition table. Do note that the partx command does not do much checking between the new and the existing partition table in the system and assumes the user knows what they are are doing. So it can corrupt the data on disk if the existing partitions are modified or the partition table is not set correctly. So use at one's own risk.

For example, a partition #1 is an existing partition and a new partition #2 is already added in /dev/sdb by fdisk. Here we use partx -v -a /dev/sdb to add the new partition to the system:

# ls /dev/sdb*    /dev/sdb  /dev/sdb1    

List the partition table of disk:

# partx -l /dev/sdb  # 1:        63-   505007 (   504945 sectors,    258 MB)    # 2:    505008-  1010015 (   505008 sectors,    258 MB)    # 3:         0-       -1 (        0 sectors,      0 MB)    # 4:         0-       -1 (        0 sectors,      0 MB)    

Read disk and try to add all partitions to the system:

# partx -v -a /dev/sdb                                           device /dev/sdb: start 0 size 2097152    gpt: 0 slices    dos: 4 slices    # 1:        63-   505007 (   504945 sectors,    258 MB)    # 2:    505008-  1010015 (   505008 sectors,    258 MB)    # 3:         0-       -1 (        0 sectors,      0 MB)    # 4:         0-       -1 (        0 sectors,      0 MB)    BLKPG: Device or resource busy  error adding partition 1  

(These last 2 lines are normal in this case because partition 1 is already added in the system before partition 2 is added)

Check that we have device nodes for /dev/sdb itself and the partitions on it:

# ls /dev/sdb*    /dev/sdb  /dev/sdb1  /dev/sdb2  

No comments:

Post a Comment