Как администратор Linux, вы можете выполнять задачу разделения диска несколько раз в день.
В большинстве случаев таблица разделов успешно изменялась после разделения диска в виртуальных средах (таких как VMWare, Virtualbox и т. д.).
Но это не происходит на физических серверах, тогда какое решение сообщить ОС об изменениях таблицы разделов?
Есть решение.
Тем не менее, мы не можем давать вам гарантию, что оно будет работать на 100%, но оно будет работать в большинстве случаев.
Я могу сказать другими словами. Это будет работать на 99% согласно моему опыту и знаниям.
Эти методы заставляют ядро перезагружать таблицу разделов и повторно заполнять ее идентификаторы в /dev.
Если вы ищете утилиты для разделов диска, вы можете попробовать одну из них.
Утилиты дискового разделения – это fdisk и parted.
Если вы хотите прочитать соответствующие статьи о разделах диска, вы можете перейти к следующим статьям.
- 12 методов проверки разделов жесткого диска и сам жесткий диск в Linux
- 7 методов для определения раздела диска / UUID файловой системы в Linux
- Как сжать раздел Linux, используемый LVM
- Настройте LVM и создайте логический том
- Как настроить SnapRAID на сервере Ubuntu
Вы можете получить вывод, подобный приведенному ниже, в большинстве случаев в виртуальной среде, когда вы выполняете разделение диска.
The partition table has been altered. Syncing disks.
Вы можете получить такой же вывод в большинстве случаев в физической среде, когда вы выполняете разделение диска.
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).
Я протестировал приведенные ниже команды в системе 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. Помните, что вам нужно ввести имя вашего устройства вместо нашего.
$ sudo partprobe /dev/sdb
dmesg используется для проверки или управления кольцевым буфером ядра.
Итак, используйте следующую команду, чтобы увидеть изменения в ядре.
Да, я вижу изменения, потому что в dmesg есть новый лог для устройства SDB.
$ 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 >
Как перезагрузить таблицу разделов в Linux с помощью команды blockdev
Утилита blockdev позволяет вызывать ioctl блочных устройств из командной строки.
Мы можем использовать команду blockdev для выполнения этой задачи.
$ sudo blockdev --rereadpt -v /dev/sdb
Используйте следующую команду dmesg, чтобы увидеть изменения в ядре.
Да, я вижу изменения, потому что в dmesg снова появился новый лог для устройства sdb.
$ 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 >
Как перезагрузить таблицу разделов в Linux с помощью команды hdparm
hdparm предоставляет интерфейс командной строки для различных интерфейсов ядра, поддерживаемых подсистемой «libata» Linux SATA / PATA / SAS и более старой подсистемой драйверов IDE.
В качестве альтернативы, мы можем использовать команду hdparm для выполнения этой задачи.
$ sudo hdparm -z /dev/sdb /dev/sdb: re-reading partition table
Используйте следующую команду dmesg, чтобы увидеть изменения в ядре.
Да, я вижу изменения, потому что в dmesg снова появился новый лог для устройства sdb.
$ 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 < sdb5 >
Как перезагрузить таблицу разделов в Linux с помощью команды partx
partx сообщает ядру о наличии и нумерации разделов на диске.
Команда partx является частью пакета util-linux и доступна из архива ядра Linux.
В качестве альтернативы, мы можем использовать команду partx для выполнения этой задачи.
$ sudo partx -a /dev/sdb или $ sudo partx -u /dev/sdb partx: /dev/sdb: error adding partitions 1-5
Вы можете дважды подтвердить это, выполнив следующую команду.
Если таблица разделов успешно перезагружена и видна ядру, вы можете увидеть эти новые разделы в этом месте.
$ 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
Эту же информацию можно найти с помощью следующей команды ls.
$ 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
Эту же информацию можно найти с помощью следующей команды partx.
$ 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)