Re-read The Partition Table Without Rebooting Linux System

IIf you are using hot swappable hard disk and created a new partition using the fdisk, then you need to reboot Linux based system to get partition recognized. Without reboot, you will NOT be able to create a filesystem on your newly created or modified partitions with the mke2fs command.
The kernel still uses the old table. The new table will be utilized at the next reboot or after you run partprobe or kpartx command. Both of these programs informs the operating system kernel of partition table changes, by requesting that the operating system re-read the partition table.

You will seen an error that read as follows:

Re-reading the partition table failed.: Device or resource busy

A sample session:

fdisk command in action

fdisk command in action

After the fdisk command session (which makes changes to partition table) just type the following command:
# partprobe
# partprobe /dev/sdXpartprobepartprobe
Replace /dev/sdX or /dev/hdX with actual device name. Now you will able to create filesystem on new partition with the mke2fs command.

Inform the OS of partition table changes

The partprobe command is part of GNU parted software. parted is a disk partitioning and partition resizing program. It allows you to create, destroy, resize, move and copy ext2, ext3, linux-swap, FAT, FAT32, and reiserfs partitions. It can create, resize and move Macintosh HFS partitions, as well as detect jfs, ntfs, ufs, and xfs partitions. It is useful for creating space for new operating systems, reorganising disk usage, and copying data to new hard disks.

Install parted

To use partprobe command install parted. If you are using Debian / Ubuntu Linux, enter:
$ sudo apt-get install parted
OR if you are using RHEL version <= 4, enter: # up2date parted
OR if you are using CentOS / RHEL 5/6, enter:
# yum install parted
OR if you are Fedora, enter:
$ sudo dnf install parted
Now you can use the partprobe command.

Install kpartx

The kpartx tool, derived from util-linux’ partx, reads partition tables on specified device and create device maps over partitions segments detected. It is called from hotplug upon device maps creation and deletion. To use kpartx command install kpartx. If you are using Debian / Ubuntu Linux, enter:
$ sudo apt install kpartx
To use, type:
# kpartx -u /dev/sdd2

See also:

🐧 Get the latest tutorials on Linux, Open Source & DevOps via RSS feed or Weekly email newsletter.

🐧 38 comments so far... add one
CategoryList of Unix and Linux commands
Disk space analyzersncdu pydf
File Managementcat
FirewallAlpine Awall CentOS 8 OpenSUSE RHEL 8 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 20.04
Network UtilitiesNetHogs dig host ip nmap
OpenVPNCentOS 7 CentOS 8 Debian 10 Debian 8/9 Ubuntu 18.04 Ubuntu 20.04
Package Managerapk apt
Processes Managementbg chroot cron disown fg jobs killall kill pidof pstree pwdx time
Searchinggrep whereis which
User Informationgroups id lastcomm last lid/libuser-lid logname members users whoami who w
WireGuard VPNAlpine CentOS 8 Debian 10 Firewall Ubuntu 20.04
38 comments… add one
  • Jeganatham Jun 21, 2006 @ 15:28

    Its a very good tip that can be used in a production evironment without any downtime

    • S.D Oct 5, 2010 @ 12:13

      partprobe won’t always work. If you are lucky hdparm -z will work, but again cannot be guartenteed. The problem with Linux and partition tables carries on into the 21st century’s second decade.

  • domen Dec 7, 2006 @ 12:48

    Thank you!

    And to make this a bit more googlable:
    fdisk printout: “Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy”

  • Jason Apr 17, 2007 @ 21:29

    When partprobe isn’t available you can also (sometimes) use:

    # hdparm -z /dev/sdX

    which will re-read that device’s partition table.

    • Rakesh Gupta Jun 4, 2011 @ 4:37

      BLKRRPART failed: Device or resource busy

  • James Cassell Sep 11, 2008 @ 1:51

    Thank You!

    You saved me from having to restart my server!

    (restarting is a real pain in the neck)

  • Romaric Sep 15, 2008 @ 20:49

    Thanks a lot !

    And in order to install parted for gentoo users :

    emerge -av parted


  • Matti Feb 12, 2009 @ 8:30

    Thanks for the tips (LINUXTITLI, Jason) and also thanks domen for making this more googlable!

    Created a new partition from unformatted disk space (got error in re-reading the partition table: device busy) , partprobed, mkfs.ext3’d, e2labeled and mounted!
    No reboot needed, thanks again. 🙂

    • Rakesh Gupta May 23, 2011 @ 13:40

      i am run this command in rhel6 .and i want without reboot update partition table.when i am use partprobe ,kpartx, and hdperm -z command .
      system are given massage device or resource busy due to failed .

      • DaveQB May 24, 2011 @ 3:09

        Try stopping services like samba and nfs. I found restarting nfs freed up my disk even after I used fdisk on it.

  • jason May 27, 2009 @ 22:21

    I found this website while I was trying to figure out what the difference between the three ways I’ve found so far (partprobe, hdparm -z /dev/disk, and blockdev –rereadpt /dev/disk) is.

    • V字龍 Feb 10, 2016 @ 13:55

      According to ltrace and strace, hdparm and blockdev are basically the same(they all called ioctl(3, BLKRRPART, 0) to reread partition table).

      partprobe is much complex the the above but I don’t know what they’re doing underhood.

  • Schmoove Sep 2, 2009 @ 11:12

    Boy was I happy to find this post. Just added a new partition to my gentoo production server after 463 days uptime and stumbled across the above mentioned ioctl warning. Thanks guys for the post and the comments 🙂

  • Harish Oct 18, 2009 @ 17:16

    Never was able to get the disk formatting re-read using partprobe. Had to reboot servers. May be to note that I am working on Redhat clusters with gfs. That shouldn’t matter much, as I run partprobe on both nodes.

  • Eric Oct 24, 2009 @ 12:32

    on RH systems you may need to run udevstart after partprobe

    • Rakesh Gupta May 23, 2011 @ 7:08

      i am run this command in rhel6 .and i want without reboot update partition table.when i am use partprobe ,kpartx, and hdperm -z command .
      system are give massage device or resource busy due to failed .
      so what are doing me pls help???

      • DaveQB May 24, 2011 @ 2:56

        I found that even after all the fdisk’ing, the partition/disk was still in use. Ended up being nfs (even though I was not sharing that disk any more and had run exportfs -av a few times). I had to restart nfs server to free the disk, then partprobe worked.

        I thought I was heading for a reboot.

  • DaveQB Nov 27, 2009 @ 1:33

    A 4th way is:

    echo 1 > /sys/block/sdc/device/rescan

    And follow dmesg to see the kernel rescan the disk. I found this worked on a server that partprobe did not.

  • Nepto Nov 27, 2010 @ 14:32

    Thank you very much for this great advice.

    Btw, if you want to know what partitions kernel sees, glance at the /proc/partitions file

  • Tony Jan 5, 2011 @ 22:09

    Thank you, I was going crazy trying to figure out why my table was not refreshing. Thank you,,,thank you,,,thank you.

  • Fantomas Sep 7, 2011 @ 15:22


    thank you very much!

  • HighKing Jun 19, 2012 @ 9:33

    Doesn’t seem to work for the disk that houses the root-partition or CentOS/RHEL machines. The resize2fs command simply stats the filesystem is already at maximum size. If I enter a value of 100 blocks less then available resize2fs tells me that the devices is not that big. Any hints?

    – “partprobe” or “partprobe /dev/sda” does not provide any output and nothing is written in dmesg.
    – “hdparm -z /dev/sda” throws me the same “device or resource busy” message as fdisk.
    – “echo 1 > /sys/block/sda/device/rescan” doesn’t help either.

    This is quite annoying as almost all of our machines are virtual machines which we can expand on-the-fly. Even more annoying is the fact that we can accomplish this with just a few clicks on a Windows machine…

  • dylan Jul 5, 2012 @ 20:34

    Rakesh Gupta,

    I’m getting the exact same errors. If you run across a fix for centos 6 please let me know.

  • Naren Aug 30, 2012 @ 22:35

    I am trying to add partprobe in a bash script after I format the disk.
    but its not rereading the partition table, can you suggest me a way to achieve it?

  • Jay Porter Oct 10, 2012 @ 4:32


    For those on RH6/CentOS6 wondering why this does not work stop wondering, it never will. Due to stupid people frying their systems playing with partitions on the side the device will always block you with “BUSY” if there is even one active partition on a disk still in use. This was implemented by one of the developers, cant remember where I saw it but it was on BugZilla somewhere listed as a bug.

    For example:

    sda1 – In use
    sda2 – Not in use

    If you modify the partition data for sda2 and try to get it to reread in live without a reboot it will throw a device busy because sda1 is still active and in use. This at the end of the day is always going to lead to one of two paths, kill everything, unmount everything and try again or reboot. Both result in the same case scenario anyway, downtime of services.

    You can rescan the bus for the devices but that wont reread in the partition information, only physical disk size. So you will have a disk that now accurately reflects the increase, say from 10GB to 20GB but you still wont be able to resize the partition to fill the space because the kernel cant reread in the changes to it you have made until after a reboot.

    Please, if someone wants to point this out as being incorrect I beg of you please go right ahead because I seem to just keep running into dead ends.

    • Kuba Ober Feb 4, 2015 @ 21:27

      The solution is rather simple: the 1st disk should have a small /boot partition, and the rest should be a single LVM physical volume. That’s why I’ve never bothered with that sort of a problem in years. LVM makes life quite wonderful, and offers features that don’t exist even on Windows 🙂

  • Jay Porter Oct 10, 2012 @ 4:33


    Further to my comment above here is the bug report I deduced this from:


  • fubupc Dec 19, 2012 @ 5:59

    @Jay Porter, your problem should be caused by old version parted . After I upgrade from 2.1 ( centos6.3 default ) to 3.1 (build from source). I can happily make/delete partitions without booting now!

    • Chandan Feb 15, 2013 @ 22:12

      Looks like it is problem with older version parted. So gist of the story if you don’t have parted 3.1 in your system be ready to reboot your system. As none of the technique seems to work on RHEL 6

  • Ben Jan 8, 2013 @ 16:26

    new parted(3.1) cann’t reload partition table for me when some program use one partition.

  • sudo sudo Feb 20, 2014 @ 13:07

    Just FYI

    Also check if any partition is not part of a logical volume. You can use the pvdisplay command, it helped a lot. This was on Centos.

  • Justin Mar 12, 2014 @ 23:24

    Anyone else still having trouble with this, I found a solution for RHEL 6 somewhere else

    Read the partition table with partx -a /dev/sda

    It spits out an error but the second time I ran partx it showed the 3rd partition I created with cfdisk.

  • HappyMike Jun 14, 2014 @ 14:38

    i’ve solve my problem with
    sudo partx -u /dev/sda (as -a reported some errors)
    sudo resize2fs /dev/sda1

    • gkasap Apr 21, 2015 @ 15:19

      @HappyMike you have saved me.
      I’ve tried all other ways listed above but none works in CentOS6.4
      Using partx (twice) read the new partition.

      Thanks alot

  • Zain Jul 10, 2014 @ 4:45

    Is there any equivalent for rereading the partition table without reboot on windows using an NTFS file system ?

  • Justin Edmands Aug 7, 2014 @ 22:17

    If you are using RHEL/CENTOS6 with LVM do the following:

    -/dev/sdb1 was created and is LVM partition.
    -In VMware I extended the Virtual Disk file an extra 100GB
    -I added a new partition called /dev/sdb2
    -OS states I need to run kpartx or partprobe
    -OS states drive is busy and cannot continue

    In order to get the drive working, I did the following;

    umount /mnt/
    vgchange -an vg_data
    blockdev –rereadpt /dev/ (ex /dev/sdb not /dev/sdb1,2,3,4…)
    vgchange -ay
    pvcreate /dev/sdb2

    • zain Aug 9, 2014 @ 15:05

      Any idea how to do this on windows ?

  • YC Jan 7, 2016 @ 11:44

    Thanks, that was a life-saver!

Leave a Reply

Your email address will not be published.

Use HTML <pre>...</pre> for code samples. Still have questions? Post it on our forum