Иногда, изменяя размер или иным образом копаясь в разделах на диске, 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
она вызывалась индивидуально на всех переданных разделах устройства, поэтому она должна работать, если отдельные разделы не используются. Однако у меня не было возможности попробовать это.
man sfdisk
говорит:Since version 2.26 sfdisk no longer provides the -R or --re-read option to force the kernel to reread the partition table. Use blockdev --rereadpt instead.
Ответы:
ИМХО самый надежный / лучший ответ
источник
kpartx
и вudevadm trigger
течение 10 минут. Спасибо!Перечитывание информации таблицы разделов не всегда работает, но попробуйте
или же
Если это работает, значения в / proc / partitions изменятся.
источник
hdparm
команда будет работать, только если разделы не смонтированы.sfdisk -R
был удален где-то между util-linux 2.24.2 и 2.26.1man sfdisk
говорит:Since version 2.26 sfdisk no longer provides the -R or --re-read option to force the kernel to reread the partition table. Use blockdev --rereadpt instead.
На Centos7:
Согласно https://access.redhat.com/solutions/199573
Ты должен попытаться :
Это сработало для меня.
источник
Учитывая это предположение, таблица разделов может быть успешно повторно проверена, и проблема не возникнет. Если вы получаете эту ошибку, это потому, что таблица разделов в настоящее время используется, и, следовательно, не может быть повторно проверена без создания несоответствий.
источник
Он не основан на разделе, который вы редактируете.
Предположим, у вас есть только один жесткий диск (
/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, чтобы изменить размер.
Все следующие команды не делали ядро перечитанным разделом:
мне все еще нужна перезагрузка, чтобы она заработала
источник
При всех несмонтированных точках монтирования работает Yocto 2.4:
Не удалось перезагрузить таблицу разделов после удаления разделов на устройстве. Также попробовал - и не удалось:
Все сообщали об аналогичных ошибках «Ошибка BLKRRPART: устройство или ресурс занят ...», указывающие на перезагрузку. Возможно, этот сбой ранее использовавшихся методов связан с тем, что udev теперь находится под контролем systemd? Размышляя в том же духе, я попытался:
И вдруг мой диск снова доступен, без перезагрузки!
источник
systemd
мире ЭТО правильный ответ. Обратите внимание, что вам также необходимо перезапустить один из них (или оба)systemd-udev-settle
иsystemd-udev-trigger
. Перезапуска,systemd-udevd
как сказал Кэмп, было недостаточно для меня. Но перезапуск также двух других сделал свое дело!Когда команда вроде
blockdev --rereadpt /dev/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
)ps
и, возможно, уничтожьтеЕсли один инструмент - сказать
blockdev --rereadpt
не может, как правило , подобные из них , как (partx -uv
,kpartx
,partprobe
,kpartprobe
) не в состоянии подобным образом , пока основная причина не будет устранена.источник
Вы также можете попробовать:
(Но не сработает, см. Комментарий ниже)
источник
kpartx -a <partition>
может быть запущен два раза на вновь созданном разделе .... вместо перезагрузки системы.источник
sync; sync; sync
»? Smell Я чувствую запах суеверия ...Не забудьте проверить, что сервис udev запущен. Это особенно полезно, когда partprobe, hdparm, blockdev и различные другие команды, кажется, не имеют никакого значения, какие файлы устройств доступны в каталоге / dev /.
источник
Для меня ни
partprobe
илиblockdev
решений работали. Хотя, этот работает:источник
Если вы прочитали man-страницу «man oracleasm-scandisks», то обратите внимание на текст ниже. oracleasm использует / proc / partitions в качестве источника всего сканирования, которое он выполняет. Вы должны получить список ваших необработанных устройств в / proc / partitions, прежде чем сможете сделать скандиск. Параметры Scanorder и Scanexclude, которые вы помещаете в / etc / sysconfig / oracleasm, относятся к именам, найденным в / proc / partitions (!!!!).
---------- человек оракул-скандис ------ ...
КАК ПРОИСХОДИТ СКАНИРОВАНИЕ Сканирование проходит в четыре основных этапа.
источник
oracleasm-scandisks