Partprobe linux что это

Обновлено: 04.07.2024

Всем доброго дня, ночи! Этот пост будет полезен тем, кто использует шифрование данных LUKS и хочет производить decryptдешифровку дисков под Linux (Debian, Ubuntu) на стадии расшифровки root раздела. И такой информации в интернете я найти не смог.

Совсем недавно с увеличением количества дисков в полках, столкнулся с проблемой расшифровки дисков с использованием более чем известного метода через /etc/crypttab. Лично я выделяю несколько проблем использования этого метода, а именно то, что файл читается только после загрузки (mount) root-раздела, что негативно сказывается на импорте ZFS, в частности если они были собраны из разделов на *_crypt устройстве, или же mdadm рейды, собранные так же из разделов. Мы же все знаем, что можно использовать parted на LUKS контейнерах? И также проблема раннего старта других служб, когда массивов еще нет, а использовать уже что-то надо (я работаю с кластеризованным Proxmox VE 5.x и ZFS over iSCSI).

iSCSI работает у меня через LIO, и собственно когда стартует iscsi-таргет и не видит ZVOL устройств, он их просто-напросто удаляет из конфигурации, что не дает возможности загружаться гостевым системам. Отсюда либо восстановление бэкапа json файла, либо ручное добавление устройств с идентификаторами каждой VM, что просто ужас, когда таких машин десятки и в конфигурации каждой более 1 диска.

И второй вопрос, который я рассмотрю, это чем производить расшифровку (это ключевой момент статьи). И об этом мы поговорим ниже, заходите под кат!

Чаще всего на просторах интернета используют ключевой файл (само-собой добавленный перед этим в слот командой — cryptsetup luksAddKey), либо в редких исключениях (в русско-язычном интернете очень скудная информация) — скрипт decrypt_derived, лежащий в /lib/cryptsetup/script/ (конечно, есть еще способы, но я использовал именно эти два, что и легло в основу статьи). Так же я стремился к полному автономному включению после перезагрузок, без каких либо дополнительных команд в консоли, чтобы у меня всё «взлетало» сразу. Поэтому, зачем ждать? —

Предполагаем систему, например Debian, установленную на crypto-раздел sda3_crypt и десяток дисков, готовых к шифрованию и созданию чего душе угодно. Мы имеем ключевую фразу (passphrase) для разблокировки sda3_crypt и именно с этого раздела мы будем на запущенной (расшифрованной) системе снимать «хэш» от пароля и добавлять на остальные диски. Всё элементарно, в консоли выполняем:


где X — это наши диски, разделы и т.д.

После шифрования дисков «хешем» от нашей ключевой-фразы, необходимо узнать UUID, либо ID — смотря кто и к чему привык. Берём данные из /dev/disk/by-uuid и by-id соответственно.

Следующий этап подготовка файлов и мини-скриптов для работы необходимых нам функций, приступаем:


Как администратор Linux, вы можете выполнять задачу разделения диска несколько раз в день.

В большинстве случаев таблица разделов успешно изменялась после разделения диска в виртуальных средах (таких как VMWare, Virtualbox и т. д.).

Но это не происходит на физических серверах, тогда какое решение сообщить ОС об изменениях таблицы разделов?

Тем не менее, мы не можем давать вам гарантию, что оно будет работать на 100%, но оно будет работать в большинстве случаев.

Я могу сказать другими словами. Это будет работать на 99% согласно моему опыту и знаниям.

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

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

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

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

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

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

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

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

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

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

Как перезагрузить таблицу разделов в Linux с помощью команды 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 для выполнения этой задачи.

Вы можете дважды подтвердить это, выполнив следующую команду.

Если таблица разделов успешно перезагружена и видна ядру, вы можете увидеть эти новые разделы в этом месте.

Всем привет! Недавно столкнулся с простой на первый взгляд задачей — увеличить «на горячую» размер диска на сервере Linux.

Описание задачи

Есть сервер в облаке. В моем случае, это Google Cloud — Compute Engine. Операционная система — Ubuntu, файловая система ext4 (подойдет для всех ext). Сейчас подключен диск размером 30 Гб. База растет, файлы пухнут, поэтому нужно увеличить размер диска, допустим, до 50 Гб. При этом мы ничего не отключаем, ничего не перезагружаем.

Внимание! Перед тем как начать, делаем бекап всей важной информации!

1. Для начала, проверим, сколько у нас всего свободного пространства. В консоли Linux пишем:




Простыми словами, у меня 30 Гб всего и 7.9 Гб сейчас свободно. Нужно увеличить.

2. Дальше я иду и через консоль своего хостера подключаю еще немного Гб. В Google Cloud это делается легко, без перезагрузки. Захожу в Compute Engine -> Диски -> Выбираю диск своего сервера — ему и поменяем размер:



Захожу внутрь, нажимаю «Редактировать» и увеличиваю размер диска до нужных мне размеров (в моем случае, до 50 Гб).

3. Итак, теперь у нас 50 Гб. Проверим это на сервере командой:

image



Видим свои новые 50 Гб, но пока использовать мы можем только 30 Гб.

4. Теперь удалим текущий раздел диска на 30 Гб, создадим новый на 50 Гб. У вас может быть несколько разделов. Возможно, вам нужно будет создать и несколько новых разделов. Для этой операции будем использовать программу fdisk, которая позволяет управлять разделами жесткого диска. Также важно понимать, что такое разделы диска и для чего они нужны — читаем тут. Для запуска программы fdisk используем команду:


5. Внутри интерактивного режима программы fdisk выполняем несколько операций.

image



Команда выводит список наших текущих разделов. В моем случае один раздел на 30 Гб и еще 20 Гб в свободном плавании, если так можно сказать.

6. Затем вбиваем:

image



Удаляем текущий раздел для того, чтобы создать новый на все 50 Гб. Перед операцией еще раз проверяем, сделали ли мы бекап важной информации!

7. Далее указываем программе:

image



Команда создает новый раздел. Все параметры стоит устанавливать по умолчанию — можно просто нажимать Enter. Если же у вас какой-то особый случай, то указываете свои параметры. Как видно из скриншота, я создал раздел на 50 Гб — то, что мне нужно.

8. В итоге указываю программе:

9. Мы вышли из fdisk и вернулись в основную Linux — строку. Далее вбиваем, как нам посоветовали ранее:

Подсказка! Установить partprobe можно вот так:

10. Теперь осталось переопределить размер раздела с помощью программы resize2fs. Она сделает это в режиме онлайн — у меня даже в этот момент скрипты работали и писали на диск.

Программа resize2fs перезапишет метаданные файловой системы. Для этого используем следующую команду:

image



Здесь sda1 — это имя вашего раздела. В большинстве случаев, это sda1, но возможны и исключения. Будьте внимательны. В итоге программа изменила нам размер раздела. Думаю, что это успех.

11. Теперь давайте убедимся, что размер раздела изменился и теперь у нас 50 Гб. Для это повторим самую первую команду:

Всем привет! Недавно столкнулся с простой на первый взгляд задачей — увеличить «на горячую» размер диска на сервере Linux.

Описание задачи

Есть сервер в облаке. В моем случае, это Google Cloud — Compute Engine. Операционная система — Ubuntu, файловая система ext4 (подойдет для всех ext). Сейчас подключен диск размером 30 Гб. База растет, файлы пухнут, поэтому нужно увеличить размер диска, допустим, до 50 Гб. При этом мы ничего не отключаем, ничего не перезагружаем.

Внимание! Перед тем как начать, делаем бекап всей важной информации!

1. Для начала, проверим, сколько у нас всего свободного пространства. В консоли Linux пишем:




Простыми словами, у меня 30 Гб всего и 7.9 Гб сейчас свободно. Нужно увеличить.

2. Дальше я иду и через консоль своего хостера подключаю еще немного Гб. В Google Cloud это делается легко, без перезагрузки. Захожу в Compute Engine -> Диски -> Выбираю диск своего сервера — ему и поменяем размер:



Захожу внутрь, нажимаю «Редактировать» и увеличиваю размер диска до нужных мне размеров (в моем случае, до 50 Гб).

3. Итак, теперь у нас 50 Гб. Проверим это на сервере командой:

image



Видим свои новые 50 Гб, но пока использовать мы можем только 30 Гб.

4. Теперь удалим текущий раздел диска на 30 Гб, создадим новый на 50 Гб. У вас может быть несколько разделов. Возможно, вам нужно будет создать и несколько новых разделов. Для этой операции будем использовать программу fdisk, которая позволяет управлять разделами жесткого диска. Также важно понимать, что такое разделы диска и для чего они нужны — читаем тут. Для запуска программы fdisk используем команду:


5. Внутри интерактивного режима программы fdisk выполняем несколько операций.

image



Команда выводит список наших текущих разделов. В моем случае один раздел на 30 Гб и еще 20 Гб в свободном плавании, если так можно сказать.

6. Затем вбиваем:

image



Удаляем текущий раздел для того, чтобы создать новый на все 50 Гб. Перед операцией еще раз проверяем, сделали ли мы бекап важной информации!

7. Далее указываем программе:

image



Команда создает новый раздел. Все параметры стоит устанавливать по умолчанию — можно просто нажимать Enter. Если же у вас какой-то особый случай, то указываете свои параметры. Как видно из скриншота, я создал раздел на 50 Гб — то, что мне нужно.

8. В итоге указываю программе:

9. Мы вышли из fdisk и вернулись в основную Linux — строку. Далее вбиваем, как нам посоветовали ранее:

Подсказка! Установить partprobe можно вот так:

10. Теперь осталось переопределить размер раздела с помощью программы resize2fs. Она сделает это в режиме онлайн — у меня даже в этот момент скрипты работали и писали на диск.

Программа resize2fs перезапишет метаданные файловой системы. Для этого используем следующую команду:

image



Здесь sda1 — это имя вашего раздела. В большинстве случаев, это sda1, но возможны и исключения. Будьте внимательны. В итоге программа изменила нам размер раздела. Думаю, что это успех.

11. Теперь давайте убедимся, что размер раздела изменился и теперь у нас 50 Гб. Для это повторим самую первую команду:

Читайте также: