Обновить таблицу разделов linux

How to Reload partition table without Reboot in Linux

As a Linux administrator you might perform a disk partition task quite often. Most of the time the partition table will be altered successfully after the disk partition in the virtual environments (such as VMWare, Virtualbox, etc).

But things do not go as planned every time, because sometimes your system doesn’t alter the partition table with new disk information, which often happens in physical systems. If so, what is the solution to inform the OS about partition table changes?

There is a solution to this. However, we can not guarantee that it will work 100%, but it will work most of the time as per my experience and knowledge.

These commands are to: 1) force the Kernel to reload the partition table and 2)re-populate its ids in /dev.

In Linux, disk partitioning can be done using multiple commands and most users prefer to use fdisk or parted. Please choose the desired command based on your need.

Visit to the following URLs to learn more about disk partitions:

Most of the time you can get the output below in virtual environment when you are performing the disk partitions:

The partition table has been altered. Syncing disks.

At the same time when you make disk partitions, you may get the below output in the physical environment:

The partition table has been altered. Calling ioctl() to re-read partition table. Re-reading the partition table failed.: Device or resource busy The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).

I have tested the below four commands on Arch Linux system and all are working fine except ‘partx’ command, because I didn’t find any information about the partition change in the ‘dmesg’ log after running the partx command.

However, the partx command works as expected on RHEL 7 systems.

I would suggest you to run any of the below commands after adding a partition in Linux system to inform the OS about the partition table changes.

In this guide, we’ll show you how to re-load partition table without reboot in Linux using the following four commands:

  • partprobe: partprobe is a program that informs the operating system kernel of partition table changes, by requesting that the operating system re-read the partition table.
  • blockdev: The utility blockdev allows to call block device ioctls from the command line.
  • hdparm: hdparm provides a command line interface to various kernel interfaces supported by the Linux SATA/PATA/SAS “libata” subsystem and the older IDE driver subsystem.
  • partx: partx is telling the kernel about presence and numbering of on-disk partitions.
Читайте также:  Rosetta stone in linux

1) Reloading partition table in Linux with partprobe command

partprobe is a program that informs the operating system kernel of partition table changes, by requesting the operating system to re-read the partition table. For instance, if you create a new partition on one of your disks using parted command, you should run partprobe afterwards to make the kernel aware of the new partition configuration.

This is standard and native command to perform this task.

In this example, we will use /dev/sdb to demonstrate this. Please make sure to input your device name instead of ours in the command below:

dmesg is used to examine or control the kernel ring buffer. So, use the following command to see the kernel changes. And indeed, i can saw the changes in my test run, because there is a new log for ‘sdb’ device in the dmesg.

$ dmesg | grep sdb [ 3.143163] sd 3:0:0:0: [sdb] 20971520 512-byte logical blocks: (10.7 GB/10.0 GiB) [ 3.143186] sd 3:0:0:0: [sdb] Write Protect is off [ 3.143192] sd 3:0:0:0: [sdb] Mode Sense: 00 3a 00 00 [ 3.143276] sd 3:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn’t support DPO or FUA [ 3.145620] sd 3:0:0:0: [sdb] Attached SCSI disk [ 188.810583] sdb: sdb1 sdb2 sdb3 sdb4 < sdb5 >[ 219.112109] sdb: sdb1 sdb2 sdb3 sdb4

2) How to reload partition table without system reboot in Linux using blockdev command

The utility blockdev allows us to call block device ioctls from the command line.

We can use the blockdev command to perform this task as shown below:

$ sudo blockdev --rereadpt -v /dev/sdb

Use the following dmesg command to see the kernel changes.

And I was able to see the changes in my test run, because there is a new log again for ‘sdb’ device in the dmesg.

$ dmesg | grep sdb [ 3.143163] sd 3:0:0:0: [sdb] 20971520 512-byte logical blocks: (10.7 GB/10.0 GiB) [ 3.143186] sd 3:0:0:0: [sdb] Write Protect is off [ 3.143192] sd 3:0:0:0: [sdb] Mode Sense: 00 3a 00 00 [ 3.143276] sd 3:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn’t support DPO or FUA [ 3.145620] sd 3:0:0:0: [sdb] Attached SCSI disk [ 188.810583] sdb: sdb1 sdb2 sdb3 sdb4 < sdb5 >[ 219.112109] sdb: sdb1 sdb2 sdb3 sdb4 < sdb5 >[ 422.506376] sdb: sdb1 sdb2 sdb3 sdb4

3) Reloading partition table in Linux using hdparm command

hdparm provides a command line interface to various kernel interfaces supported by the Linux SATA/PATA/SAS “libata” subsystem and the older IDE driver subsystem.

Alternatively, we can use hdparm command to perform this task as shown below:

$ sudo hdparm -z /dev/sdb /dev/sdb: re-reading partition table

Use the following dmesg command to see the kernel changes:

Читайте также:  Canon mf4550d driver linux

And, I could see the changes in my test run, because there is a new log again for ‘sdb’ device in the dmesg.

$ dmesg | grep sdb [ 3.143163] sd 3:0:0:0: [sdb] 20971520 512-byte logical blocks: (10.7 GB/10.0 GiB) [ 3.143186] sd 3:0:0:0: [sdb] Write Protect is off [ 3.143192] sd 3:0:0:0: [sdb] Mode Sense: 00 3a 00 00 [ 3.143276] sd 3:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn’t support DPO or FUA [ 3.145620] sd 3:0:0:0: [sdb] Attached SCSI disk [ 188.810583] sdb: sdb1 sdb2 sdb3 sdb4 < sdb5 >[ 219.112109] sdb: sdb1 sdb2 sdb3 sdb4 < sdb5 >[ 422.506376] sdb: sdb1 sdb2 sdb3 sdb4 < sdb5 >[ 504.328312] sdb: sdb1 sdb2 sdb3 sdb4

4) Reload Partition table without reboot in Linux using partx command

partx is telling the kernel about the presence as well as the numbering of on-disk partitions.

The partx command is part of the util-linux package and is available from Linux Kernel Archive.

As an alternate, we can use partx command to perform this task as shown below:

$ sudo partx -a /dev/sdb or $ sudo partx -u /dev/sdb partx: /dev/sdb: error adding partitions 1-5

You can confirm this by running the following command. If the partition table is successfully reloaded and it’s visible to the kernel, then you should be able to see those new partitions in this location.

$ cat /proc/partitions major minor #blocks name 8 0 31457280 sda 8 1 31455232 sda1 8 16 10485760 sdb 8 17 1048576 sdb1 8 18 512000 sdb2 8 19 512000 sdb3 8 20 1 sdb4 8 21 1048576 sdb5 8 32 10485760 sdc

The same information can be found using the following ls command:

$ ls -l /dev/sdb* brw-rw---- 1 root disk 8, 16 Mar 8 07:23 /dev/sdb brw-rw---- 1 root disk 8, 17 Mar 8 07:23 /dev/sdb1 brw-rw---- 1 root disk 8, 18 Mar 8 07:23 /dev/sdb2 brw-rw---- 1 root disk 8, 19 Mar 8 07:23 /dev/sdb3 brw-rw---- 1 root disk 8, 20 Mar 8 07:23 /dev/sdb4 brw-rw---- 1 root disk 8, 21 Mar 8 07:23 /dev/sdb5

And the same information can also be found using the following partx command:

$ sudo partx -l /dev/sdb # 1: 2048- 2099199 ( 2097152 sectors, 1073 MB) # 2: 2099200- 3123199 ( 1024000 sectors, 524 MB) # 3: 3123200- 4147199 ( 1024000 sectors, 524 MB) # 4: 4147200- 20971519 ( 16824320 sectors, 8614 MB) # 5: 4149248- 6246399 ( 2097152 sectors, 1073 MB)

Closing Notes

In this guide, we have shown you four commands to reload partition table without system Reboot in Linux.

If you have any questions or feedback, feel free to comment below. Happy learning!

Источник

Обновить таблицу разделов linux

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x1d88bff0

Device Boot Start End Blocks Id System
/dev/sda1 1 243 1951866 82 Linux swap / Solaris
/dev/sda2 * 244 1216 7815622+ 83 Linux
/dev/sda3 1217 49847 390628507+ 5 Extended
/dev/sda5 1217 49847 390628476 83 Linux

Читайте также:  Linux скрипт для установки

8 0 488386584 sda
8 1 1951866 sda1
8 2 7815622 sda2

BLKRRPART: Device or resource busy

Добавить заметку
Версия для печати
Последние заметки
18.04 Перевод шифрованного раздела на LUKS2 и более надёжную функцию формирования ключа
31.03 Пример правил nftables с реализацией port knoсking для открытия доступа к SSH
27.02 Обновление сертификатов oVirt
20.11 Решение проблемы со шрифтами в Steam после выставления времени после 2038 года
18.11 Раскладка клавиатуры для ввода символов APL
10.09 Настройка СУБД Postgresql для аутентификации пользователей через Active Directory
09.09 Настройка СУБД PostgreSQL 13 под управлением Pacemaker/Corosync в Debian 11
08.09 Создание виртуальных машин с помощью Qemu KVM
25.07 Создание программ под SynapseOS
24.07 Случайная задержка в shell-скрипте, выполняемом из crontab (без башизмов)
RSS | Следующие 15 записей >>

Источник

перезагрузить таблицу разделов в Linux без перезагрузки системы

Thank you for reading this post, don’t forget to subscribe!

Эти мето­ды застав­ля­ют ядро пере­за­гру­жать таб­ли­цу раз­де­лов и повтор­но запол­нять ее иден­ти­фи­ка­то­ры в /dev.

Если вы ище­те ути­ли­ты для раз­де­лов дис­ка, вы може­те попро­бо­вать одну из них.

Ути­ли­ты дис­ко­во­го раз­де­ле­ния — это fdisk и parted.

Вы може­те полу­чить вывод, подоб­ный при­ве­ден­но­му ниже, в боль­шин­стве слу­ча­ев в вир­ту­аль­ной сре­де, когда вы выпол­ня­е­те раз­де­ле­ние диска.

Вы може­те полу­чить такой же вывод в боль­шин­стве слу­ча­ев в физи­че­ской сре­де, когда вы выпол­ня­е­те раз­де­ле­ние диска.

The kernel still uses the old table . The new table will be used at the next reboot or after you run partprobe ( 8 ) or kpartx ( 8 ) .

Я про­те­сти­ро­вал при­ве­ден­ные ниже коман­ды в систе­ме Arch Linux, и они рабо­та­ли нор­маль­но, кро­ме коман­ды partx.

Пото­му что я не вижу ника­ких логов жур­на­ле dmesg после запус­ка коман­ды partx.

Одна­ко он рабо­тал нор­маль­но, как и ожи­да­лось в систе­мах RHEL 7.

Я бы посо­ве­то­вал вам выпол­нить любую из при­ве­ден­ных ниже команд после добав­ле­ния раз­де­ла в систе­му Linux, что­бы про­ин­фор­ми­ро­вать ОС об изме­не­ни­ях таб­ли­цы разделов.

Это мож­но сде­лать с помо­щью сле­ду­ю­щих четы­рех методов.

  • partprobe: partprobe — это про­грам­ма, кото­рая инфор­ми­ру­ет ядро опе­ра­ци­он­ной систе­мы об изме­не­ни­ях таб­ли­цы раз­де­лов, запра­ши­вая у опе­ра­ци­он­ной систе­мы пере­чи­ты­ва­ние таб­ли­цы разделов.
  • blockdev: Ути­ли­та blockdev поз­во­ля­ет вызы­вать ioctl для блоч­ных устройств из команд­ной строки.
  • hdparm: hdparm предо­став­ля­ет интер­фейс команд­ной стро­ки для раз­лич­ных интер­фей­сов ядра, под­дер­жи­ва­е­мых под­си­сте­мой «libata» Linux SATA / PATA / SAS и более ста­рой под­си­сте­мой драй­ве­ров IDE .
  • partx: partx сооб­ща­ет ядру о нали­чии и нуме­ра­ции раз­де­лов на диске.

Как перезагрузить таблицу разделов в Linux с помощью команды partprobe

partprobe — это про­грам­ма, кото­рая инфор­ми­ру­ет ядро опе­ра­ци­он­ной систе­мы об изме­не­ни­ях таб­ли­цы раз­де­лов, запра­ши­вая у систе­мы, что­бы она пере­чи­та­ла таб­ли­цу разделов.

Это стан­дарт­ная и натив­ная коман­да для выпол­не­ния этой задачи.

В этом при­ме­ре я соби­ра­юсь исполь­зо­вать /dev/sdb. Помни­те, что вам нуж­но вве­сти имя ваше­го устрой­ства вме­сто нашего.

Источник

Оцените статью
Adblock
detector