Как уменьшить размер неиспользуемого LVM PV до минимума?

Вопрос или проблема

Когда я использую LVM для разбиения одного или нескольких хранилищ, я заметил, что по умолчанию он использует блоки размером 4 МиБ (физическая единица) , в то время как само хранилище обычно использует 512 байт на сектор.

Я думал, что это не должно быть проблемой, если я выровняю разделы LVM на 4 МиБ, но независимо от их размера всегда будет отображаться размер “неиспользуемый”, когда я запускаю pvdisplay:

--- Физический том ---
Имя PV               /dev/sda2
Имя VG               xpto
Размер PV            17.00 GiB / неиспользуемый 4.00 MiB
Подлежит аллокации   да (но заполнен)
Размер PE            4.00 MiB
Всего PE            4351
Свободные PE        0
Выделенные PE       4351
UUID PV             xxxxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxxxx

Но даже если я перераспределяю PV, чтобы соответствовать размеру минус неиспользуемый, это уменьшает общее количество PE и все равно остается неиспользуемый размер. Даже используя pvdisplay --unit B, чтобы увидеть точное число.

Меня интересует, каков точный размер заголовка LVM, я читал некоторые тексты, утверждающие, что он составляет 4 сектора по 512 байт, другие же утверждают, что это 180 КиБ, но я перепробовал все комбинации и не смог понять, как это рассчитывается.

Существует ли способ выровнять раздел PV, чтобы обнулить неиспользуемый размер, или хотя бы свести его к минимуму?

Для тех устройств, которые имеют размер сектора 4K, возможно, ваше устройство никогда не будет не выровненное, но для тех, у кого размер сектора 512 байт, вы должны выровнять первый сектор раздела так, чтобы он совпадал с размером, делящимся на 4096 байт, в этом случае – делимое на 8 (4096/512), но помните, что отсчет начинается с нуля.

Старый вопрос, и я не заметил его, когда он был задан, однако:

Оказывается, в LVM есть ошибка, которая заставляет его помещать неправильный PV dev_size в метаданные после pvresize, и pvdisplay впоследствии отображает / неиспользуемый <неправильное-число>.

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

Если размер PE равен 4.00 MiB и он говорит неиспользуемый 4.00 MiB, и нет округляющей ошибки, такой как отклонение на 1 сектор (проверьте с помощью --unit B, где округление не происходит), вы ожидали бы, что он выдаст вам дополнительный PE. Но этого не происходит, так как отображаемое число неверно.

17 GiB, деленный на 4 MiB, равен 4352. Вы получили бы столько физических единиц, если бы не было метаданных, но метаданные должны находиться где-то, поэтому вы получите на одну меньше. Если смещение метаданных составляет 1 МиБ, в то время как ваш PV составляет кратное 4 МиБ, тогда он должен показывать / неиспользуемый 3.00 MiB.

Вы могли бы изменить размер PE на 1 МиБ и получить три дополнительных единицы, но после pvresize он все равно будет показывать / неиспользуемый 1.00 MiB, даже если на самом деле это используется.

Ответ или решение

Чтобы минимизировать размер неиспользуемого пространства в Physical Volume (PV) LVM, следует учитывать несколько факторов, связанных с выделением пространства и метаданными, используемыми системой LVM. Понимание этих аспектов поможет вам правильно настроить вашу среду хранения и добиться оптимальных результатов.

Объяснение проблемы

Как вы уже отметили, стандартный размер физических экстентов (PE) в LVM — 4 МиБ. При работе с дисками, которые используют 512-байтные сектора, возможно возникновение неиспользуемого пространства из-за выравнивания между размерами PE и секторами. Это может привести к отображению в pvdisplay размера, который остается "неиспользуемым".

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

Способы минимизации неиспользуемого пространства

  1. Выравнивание начального сектора:

    • Убедитесь, что ваш PV начинается с сектора, который делится на 8, если вы используете 4 КиБ (или 4096 байт) для PE, а также делится на 512 байт. Это поможет избежать проблем с выравниванием, что может привести к дополнительным потерям пространства.
  2. Настройка размера PE:

    • Вы можете изменить размер PE на меньший, например на 1 МиБ, чтобы увеличить количество доступных экстентов. Однако имейте в виду, что даже при правильном выравнивании и изменении размера PE, метаданные могут продолжать отображать неиспользуемое пространство из-за вышеупомянутых недочетов в LVM.
  3. Проверка метаданных:

    • После выполнения команд pvresize или других операций проверьте метаданные LVM с помощью команды pvdisplay --unit B, чтобы выявить точные размеры и возможные округления. Это поможет вам определить, сколько пространства действительно осталось неиспользуемым.
  4. Использование альтернативных инструментов:

    • Иногда стоит рассмотреть возможность использования других инструментов для работы с дисками, которые могут позволить вам более гибко управлять пространством. Например, инструменты для работы с файловыми системами могут помочь установить более тонкие настройки.
  5. Мониторинг и управление:

    • Регулярно проверяйте состояние ваших PV и VG на предмет оптимизации. Это поможет убедиться, что у вас достаточно ресурсов и минимизировано неиспользуемое пространство.

Заключение

К сожалению, из-за ошибок в программном обеспечении LVM вы можете столкнуться с ситуациями, когда команда pvresize не отражает реальное состояние вашего пространства. Несмотря на все ваши усилия, в определенных случаях может не удастся полностью устранить неиспользуемое пространство из-за того, как LVM управляет метаданными.

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

Оцените материал
Добавить комментарий

Капча загружается...