- 🌜 Как перезагрузить таблицу разделов в Linux без перезагрузки системы?
- Как перезагрузить таблицу разделов в Linux с помощью команды partprobe
- Как перезагрузить таблицу разделов в Linux с помощью команды blockdev
- Как перезагрузить таблицу разделов в Linux с помощью команды hdparm
- Как перезагрузить таблицу разделов в Linux с помощью команды partx
- Дисковая подсистема Linux
- Материал из Xgu.ru
- Содержание
- [править] Жёсткие диски
- [править] Добавление нового диска
- [править] Настройка и оптимизация жёсткого диска
- [править] Проблемы с размером диска
- [править] Перечитать таблицу разделов
- [править] Дисковые разделы более 2TB
- [править] Файловые системы
- [править] Создание файловых систем
- [править] Монтирование файловых систем
- [править] Работа с файловыми системами
- [править] Сброс и очистка кэша
- [править] Отключение диска
- [править] Надёжное удаление данных
- [править] Работа с файлами как с блочными устройствами
- [править] Экспорт блочных устройств по сети
- [править] RAID-массивы
- [править] Системы управления томами
- [править] Мониторинг и диагностика
- [править] Мониторинг с помощью SMART
- Перечитать раздел после расширения без перезагрузки
- Перечитать таблицу разделов без перезагрузки?
🌜 Как перезагрузить таблицу разделов в 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.
Источник
Дисковая подсистема Linux
Материал из Xgu.ru
|
Данная страница находится в разработке. Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной. |
Если вы считаете, что её стоило бы доработать как можно быстрее, пожалуйста, скажите об этом.
Содержание
[править] Жёсткие диски
[править] Добавление нового диска
Добавить новый диск можно в выключенную систему или без её выключения, если система поддерживает возможность горячего подключения жёстких дисков.
Если речь идёт о SATA-дисках, то их можно попробовать подключить без выключения питания.
Или же командой:
[править] Настройка и оптимизация жёсткого диска
[править] Проблемы с размером диска
Диск большого размера может определяться как диск значительно меньшего размера (причём, как в операционной системе, так и в BIOS). Например, диск размером 1TB может быть виден как диск размером 33MB.
Не нужно ничего менять на диске: пересоздавать таблицу разделов, изменять геометрию, файловые системы. Все данные должны уцелеть и будут вновь видны, после того как размер диска восстановится.
Проблема, скорее всего, связана с механизмом HPA (Host Protected Area). Проверить это можно выполнив команду:
где /dev/sdc — имя проблемного жёсткого диска.
Результатом выполнения команды должно быть нечто наподобие этого:
Для того чтобы заставить компьютер видеть весь диск, нужно дать команду:
Эти изменения сохранятся до перезагрузки.
Для того чтобы сделать изменения постоянными, необходимо дать команду:
То есть, использовать дополнительный ключ p. В этом случае изменения становятся постоянными.
На старых ядрах ( [править] Создание дисковых разделов
[править] Перечитать таблицу разделов
(из пакета parted).
Здесь везде вместо DISK название соответствующего устройства (sda, sdb, sdc).
[править] Дисковые разделы более 2TB
Используйте GPT и parted.
[править] Файловые системы
ОС Linux поддерживает огромное количество разнообразных файловых систем. В каталоге fs/ дерева исходных кодов ядра находится более 60 подкаталогов, каждый из которых соответствует одной файловой системе. Кроме этого, существует интерфейс FUSE, обеспечивающий поддержку ещё большего количества файловых систем, реализованных не в пространстве ядра (kernel level), а в пространстве пользователя (user level).
Традиционно файловые системы разделяют на четыре класса:
- Локальные файловые системы;
- Сетевые файловые системы;
- Кластерные файловые системы;
- Файловые системы специального назначения.
К основным локальным файловым системам Linux относят:
- ext2, ext3 и теперь ext4, которая с декабря 2008 года (ядро 2.6.28) считается стабильной;
- XFS,
- JFS,
- Reiserfs и Reiser4.
Ведётся работа над файловой системой btrfs, которая, возможно, войдёт в число основных файловых систем Linux, но пока до этого ещё далеко.
К основным сетевым файловым системам в Linux относят:
- NFS, основная сетевая файловая система в UNIX (в Linux поддерживается как NFSv3, так и NFSv4);
- CIFS
Также можно выделить файловую систему AFS, поддержка которой в ядре Linux существенно развилась за последнее время.
Файловые системы отличаются:
- функциональностью;
- производительностью;
- надёжностью;
- эффективностью хранения данных.
Для улучшения этих и других характеристик в файловых системах используются различные подходы, решения и техники, в том числе:
[править] Создание файловых систем
[править] Монтирование файловых систем
Для того чтобы смонтировать файловую систему UFS2 (FreeBSD) в Linux в режиме read/write, необходимо разрешить это в ядре.
[править] Работа с файловыми системами
[править] Сброс и очистка кэша
Запись несохранённых изменений в кэше на диск:
Очистить кэш страниц (pagecache):
Очистить кэш каталогов и индексных дескрипторов:
Очистить кэш страниц, кэш каталогов и индексных дескрипторов:
Эта возможность появилась начиная с ядра версии 2.6.16.
[править] Отключение диска
[править] Надёжное удаление данных
Очистка первого раздела на первом диске (PATA|SATA), с помощью:
Заполнение псевдослучайными данными:
-b wipe special block device.
-ms use 7-pass Bruce Schneier’s wiping scheme.
-v verbose output.
[править] Работа с файлами как с блочными устройствами
Для того, чтобы создать файловую систему в файле, как в блочном устройстве, достаточно задать его параметром в команде создания ФС.
Создание пустого файла:
Создание в нём ФС:
Монтирование файла с ФС, как блочного устройства:
Аналогичным образом можно монтировать iso-образы дисков и т.д.
[править] Экспорт блочных устройств по сети
[править] RAID-массивы
[править] Системы управления томами
[править] Мониторинг и диагностика
[править] Мониторинг с помощью SMART
Аналогичным образом можно смотреть состояние SCSI-дисков или массивов:
- cciss,0 — первый физический диск;
- /dev/cciss/c0d0 — контроллер.
Другие способы узнать о состоянии дисков и массивов Smart Array перечислены здесь [4].
Источник
Перечитать раздел после расширения без перезагрузки
Есть примонтированный по оптике с дискового массива раздел.
На хосте он разбит под 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 ) не в состоянии подобным образом , пока основная причина не будет устранена.
Источник