- 🌜 Как перезагрузить таблицу разделов в Linux без перезагрузки системы?
- Как перезагрузить таблицу разделов в Linux с помощью команды partprobe
- Как перезагрузить таблицу разделов в Linux с помощью команды blockdev
- Как перезагрузить таблицу разделов в Linux с помощью команды hdparm
- Как перезагрузить таблицу разделов в Linux с помощью команды partx
- Что-то не так с таблицей разделов, как это исправить?
- Перечитать раздел после расширения без перезагрузки
- Перечитать таблицу разделов без перезагрузки?
🌜 Как перезагрузить таблицу разделов в Linux без перезагрузки системы?
Как администратор Linux, вы можете выполнять задачу разделения диска несколько раз в день.
В большинстве случаев таблица разделов успешно изменялась после разделения диска в виртуальных средах (таких как VMWare, Virtualbox и т. д.).
Но это не происходит на физических серверах, тогда какое решение сообщить ОС об изменениях таблицы разделов?
Тем не менее, мы не можем давать вам гарантию, что оно будет работать на 100%, но оно будет работать в большинстве случаев.
Я могу сказать другими словами. Это будет работать на 99% согласно моему опыту и знаниям.
Эти методы заставляют ядро перезагружать таблицу разделов и повторно заполнять ее идентификаторы в /dev.
Если вы ищете утилиты для разделов диска, вы можете попробовать одну из них.
Утилиты дискового разделения – это fdisk и parted.
Если вы хотите прочитать соответствующие статьи о разделах диска, вы можете перейти к следующим статьям.
Вы можете получить вывод, подобный приведенному ниже, в большинстве случаев в виртуальной среде, когда вы выполняете разделение диска.
Вы можете получить такой же вывод в большинстве случаев в физической среде, когда вы выполняете разделение диска.
Я протестировал приведенные ниже команды в системе 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. Помните, что вам нужно ввести имя вашего устройства вместо нашего.
dmesg используется для проверки или управления кольцевым буфером ядра.
Итак, используйте следующую команду, чтобы увидеть изменения в ядре.
Да, я вижу изменения, потому что в dmesg есть новый лог для устройства SDB.
Как перезагрузить таблицу разделов в Linux с помощью команды blockdev
Утилита blockdev позволяет вызывать ioctl блочных устройств из командной строки.
Мы можем использовать команду blockdev для выполнения этой задачи.
Используйте следующую команду dmesg, чтобы увидеть изменения в ядре.
Да, я вижу изменения, потому что в dmesg снова появился новый лог для устройства sdb.
Как перезагрузить таблицу разделов в Linux с помощью команды hdparm
hdparm предоставляет интерфейс командной строки для различных интерфейсов ядра, поддерживаемых подсистемой «libata» Linux SATA / PATA / SAS и более старой подсистемой драйверов IDE.
В качестве альтернативы, мы можем использовать команду hdparm для выполнения этой задачи.
Используйте следующую команду dmesg, чтобы увидеть изменения в ядре.
Да, я вижу изменения, потому что в dmesg снова появился новый лог для устройства sdb.
Как перезагрузить таблицу разделов в Linux с помощью команды partx
partx сообщает ядру о наличии и нумерации разделов на диске.
Команда partx является частью пакета util-linux и доступна из архива ядра Linux.
В качестве альтернативы, мы можем использовать команду partx для выполнения этой задачи.
Вы можете дважды подтвердить это, выполнив следующую команду.
Если таблица разделов успешно перезагружена и видна ядру, вы можете увидеть эти новые разделы в этом месте.
Эту же информацию можно найти с помощью следующей команды ls.
Эту же информацию можно найти с помощью следующей команды partx.
Источник
Что-то не так с таблицей разделов, как это исправить?
Правда, есть другая проблема – груб будет ставиться только в MBR, уже и так занятую тем грубом, который в Арч. Выхода два – или загружать убунту через груб от Арч, или загружать АРч через груб от убунты.
malody
четвёртый — ext4 Домашний раздел
пятый — ext4 Дата 🙂 (фильмы там всякие и прочее).
чтобы gparted увидел разделы нужно изменить любой раздел с помощью acronis, тем самым перепишется таблица разделов и все будет ок
сам столкнулся с этой проблемой еще 6 лет назад
1. Удалить dmraid и libdmraid — не помогло (по крайней мере мне, т.к. запускался с установочной флешки, и система ругалась что диск только для чтения. Кто в установленной системе будет это проделывать, пакеты конечно удалятся, и возможно поможет)
2. http://forum.ubuntu.ru/index.php?topic=130373.45 — совет воспользоватся fixparts не помог (вдруг кому поможет).
3. Acronis Disk Director Home — спасибо stmc! — помогло. Gparted видит разделы, установщик Mint тоже.
Что я делал: удалил раздел который предназначался для Mint. Не помогло. Потом сделал раздел на месте удалённого (вместо основного получился логический), тоже не помогло. Удалил этот раздел вновь. И ура! gparted
PS. Поэтому и testdisk ругается (на несоответствие геометрии диска)
А комбайн parted, который по идее и должен быть таким средством, на деле ведёт себя ещё хуже, и вместо коррекции разделов тупо отказывается работать, не давая даже вменяемой диагностики проблемы, не говоря уже о возможности её устранить.
Но отрадно одно — они же спокойно позволяют и читать такие таблицы разделов. В то время как линуксовые parted/gparted отказываются, но зато они и не позволяют создавать такие ошибочные таблицы разделов.
Поэтому я сделал для себя вывод
— если на диске только линукс — применяй утилиты линукса
— если винда — то и утилиты только винды
— если винда и линукс — то готовить диск (разбивка на разделы) целесообразно утилитами винды, форматировать разделы целесообразнее при установке системы ее же родными утилитами.
— и конечно, проверять границы разделов.
vasek
Обратите внимание — общее количество секторов 488397168, а расширенный раздел sda4 заканчивается 488408129 сектором, т.е. выходит за пределы диска
Хорошо. Вернёмся немного назад. Допустим у меня по прежнему parted не видит диск, из-за того что расширенный раздел выходит за его пределы. Как это можно исправить? Вариант один — удалить раздел и создать его как надо?
vasek
Главное непонятно — почему некоторые виндовые утилиты по работе с диском позволяют себе нелепости выхода за пределы диска.
Но отрадно одно — они же спокойно позволяют и читать такие таблицы разделов. В то время как линуксовые parted/gparted отказываются
vasek
почему некоторые виндовые утилиты по работе с диском позволяют себе нелепости выхода за пределы диска.
vasek
Поэтому я сделал для себя вывод
.
— если винда и линукс — то готовить диск (разбивка на разделы) целесообразно утилитами винды, форматировать разделы целесообразнее при установке системы ее же родными утилитами.
— и конечно, проверять границы разделов.
Источник
Перечитать раздел после расширения без перезагрузки
Есть примонтированный по оптике с дискового массива раздел.
На хосте он разбит под LVM и отформатирован в ext3.
Возникла нужда увеличить соответствующий LUN на массиве.
Вопрос следующий: можно ли сделать так, чтобы хост увидел увеличение раздела без перезагрузки?
blockdev —rereadpt /dev/sd*
Только если на нём нет запущенного корня
В общем случае: может быть
Есть примонтированный по оптике с дискового массива раздел.
fc адаптер может ресканить шину? Если да, рескан шины и рескан диска
echo — — — > /sys/clas/scsi_host/ /scan
echo 1 > /sys/block/ /device/rescan
На хосте он разбит под LVM и отформатирован в ext3.
physical volume может быть расширен на лету
ext3 в достаточно новых ядрах может быть расширен на лету через resize2fs
Но если PV создан на РАЗДЕЛЕ (primary volume / extended volume) — только перезагрузка.
или, по крайней мере, деактивация VG
Спасибо, корня там нет. Несколько смущает расхождение во мнениях с router
А ты проверь, может я ошибаюсь. для обычных разделов работает, для LVM хз 🙂
Для обычных разделов? С какого ядра?
У меня если на блочном устройстве есть раздел ( primary volume ) с смонтированной ФС либо LVM PV, rereadpt никак не повлияет на этот раздел. Т.е. ты сможет создать новый раздел на добавленном дисковом пространстве, но не расширить существующий.
По крайней мере, в rhel до 5 (на 6-й ещё не было случая проверить) включительно и в дебиан до stable включительно
>fc адаптер может ресканить шину?
Как это узнать?
Из документации или у старших товарищей. ИМХО, в твоём случае гораздо проще создать новый диск, добавить в VG и расширить ФС.
fc адаптер может ресканить шину?
zolden>Как это узнать?
rescan for fiber (lpfc driver)
echo «1» > /sys/class/fc_host/host#/issue_lip
echo «- — -» > /sys/class/scsi_host/host#/scan
>rescan for fiber (lpfc driver)
добавлю для qlogic:
# ресканим 1-й девайс
echo «scsi-qlascan» > /proc/scsi/qla2xxx/1
# смотрим, что у нас есть
cat /proc/scsi/qla2xxx/1
# добавляем 8-й lun через 1-й девайс
echo «scsi add-single-device 1 0 0 8» > /proc/scsi/scsi
Источник
Перечитать таблицу разделов без перезагрузки?
Иногда, изменяя размер или иным образом копаясь в разделах на диске, cfdisk скажет:
Wrote partition table, but re-read table failed. Reboot to update table.
(Это также происходит с другими инструментами разбиения, поэтому я думаю, что это проблема Linux, а не проблема cfdisk.) Почему это происходит, и почему это происходит только иногда , и что я могу сделать, чтобы избежать этого?
Примечание: Пожалуйста, предположите, что ни один из разделов, которые я редактирую, не открыт, не смонтирован и не используется иным образом.
cfdisk использует ioctl(fd, BLKRRPART, NULL) Linux для перечитывания таблицы разделов. Два других рекомендованных инструмента ( hdparm -z DEVICE , sfdisk -R DEVICE ) делают то же самое. Команда partprobe DEVICE , с другой стороны, похоже, использует новый ioctl под названием BLKPG, который может быть лучше; Я не знаю. (Он также возвращается к BLKRRPART в случае сбоя BLKPG.)
Похоже, что BLKPG — это операция «этот раздел изменился; вот новый размер», и она выглядела так, как будто partprobe она вызывалась индивидуально на всех переданных разделах устройства, поэтому она должна работать, если отдельные разделы не используются. Однако у меня не было возможности попробовать это.
ИМХО самый надежный / лучший ответ
Перечитывание информации таблицы разделов не всегда работает, но попробуйте
Если это работает, значения в / proc / partitions изменятся.
На Centos7:
Ты должен попытаться :
Это сработало для меня.
Примечание: Пожалуйста, предположите, что ни один из разделов, которые я редактирую, не открыт, не смонтирован и не используется иным образом.
Учитывая это предположение, таблица разделов может быть успешно повторно проверена, и проблема не возникнет. Если вы получаете эту ошибку, это потому, что таблица разделов в настоящее время используется, и, следовательно, не может быть повторно проверена без создания несоответствий.
Он не основан на разделе, который вы редактируете.
Предположим, у вас есть только один жесткий диск ( /dev/sda ) и два раздела ( /dev/sda1 , /dev/sda2 ), и вы смонтировали только один раздел ( /dev/sda1 ). Если вы удалите или измените что-либо в другом разделе, который даже не смонтирован ( /dev/sda2 ), вы получите ошибку, что перечитывание таблицы разделов не удалось и ядро будет использовать старую таблицу.
Но если у вас есть два жестких диска ( /dev/sda , /dev/sdb ) и ни один из разделов ( /dev/sdb ) не используется. Затем вы можете добавлять / удалять / изменять размер / редактировать разделы, /dev/sdb и они будут перечитаны без каких-либо проблем. Но даже если один раздел / dev / sdb был смонтирован во время изменения. Тогда ядро продолжит использовать старую таблицу.
У меня (первоначального опрашивающего) была ситуация несколько дней назад, когда ни один из других ответов (включая partprobe /dev/sdX принятый и получивший наибольшее количество голосов) не работал. Что сделали работу, однако, это:
(Я не знаю, почему это сработало, а другие нет, но я рад, что это сработало, поскольку это спасло меня от перезагрузки на занятом сервере.)
Я нахожусь на Centos 6,5 х64; ядро 2.6.32. и я проверяю трюк fdisk, чтобы изменить размер.
Все следующие команды не делали ядро перечитанным разделом:
- partprobe / dev / sda (предупреждение: ядру не удалось перечитать . )
- hdparm -z / dev / sda (сбой BLKRRPART: устройство или ресурс заняты)
- blockdev -rereadpt / dev / sda (сбой BLKRRPART: устройство или ресурс занят)
- sfdisk -R / dev / sda (сбой BLKRRPART: устройство или ресурс заняты)
мне все еще нужна перезагрузка, чтобы она заработала
При всех несмонтированных точках монтирования работает Yocto 2.4:
Не удалось перезагрузить таблицу разделов после удаления разделов на устройстве. Также попробовал — и не удалось:
Все сообщали об аналогичных ошибках «Ошибка BLKRRPART: устройство или ресурс занят . », указывающие на перезагрузку. Возможно, этот сбой ранее использовавшихся методов связан с тем, что udev теперь находится под контролем systemd? Размышляя в том же духе, я попытался:
И вдруг мой диск снова доступен, без перезагрузки!
Когда команда вроде blockdev —rereadpt /dev/sdX не работает с
это обычно означает, что какой-то (старый) раздел действительно все еще каким-то образом используется ядром.
Возможные причины / исправления:
- раздел sdX — скажем sdX1 — все еще подключен — проверьте mount и размонтируйте его
- /dev/sdX1 является частью программного рейда — проверьте cat /proc/mdstat и, возможно, остановите соответствующие массивы, например mdadm —stop /dev/md126
- /dev/sdX1 является частью физического тома LVM — проверьте с помощью pvdisplay / vgdisplay и, возможно, деактивируйте с помощью vgchange
- /dev/sdX1 является частью некоторого отображения устройства — например , с помощью cryptsetup — проверить /dev/mapper и , lsblk и , возможно , удалить отображение (например cryptsetup luksClose )
- Соревнование с некоторой проверкой udev — проверьте запущенные процессы ps и, возможно, уничтожьте
Если один инструмент — сказать blockdev —rereadpt не может, как правило , подобные из них , как ( partx -uv , kpartx , partprobe , kpartprobe ) не в состоянии подобным образом , пока основная причина не будет устранена.
Источник