Вопрос или проблема
Когда я использую 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, что также может привести к неправильной интерпретации размера неиспользуемого пространства.
Способы минимизации неиспользуемого пространства
-
Выравнивание начального сектора:
- Убедитесь, что ваш PV начинается с сектора, который делится на 8, если вы используете 4 КиБ (или 4096 байт) для PE, а также делится на 512 байт. Это поможет избежать проблем с выравниванием, что может привести к дополнительным потерям пространства.
-
Настройка размера PE:
- Вы можете изменить размер PE на меньший, например на 1 МиБ, чтобы увеличить количество доступных экстентов. Однако имейте в виду, что даже при правильном выравнивании и изменении размера PE, метаданные могут продолжать отображать неиспользуемое пространство из-за вышеупомянутых недочетов в LVM.
-
Проверка метаданных:
- После выполнения команд
pvresize
или других операций проверьте метаданные LVM с помощью командыpvdisplay --unit B
, чтобы выявить точные размеры и возможные округления. Это поможет вам определить, сколько пространства действительно осталось неиспользуемым.
- После выполнения команд
-
Использование альтернативных инструментов:
- Иногда стоит рассмотреть возможность использования других инструментов для работы с дисками, которые могут позволить вам более гибко управлять пространством. Например, инструменты для работы с файловыми системами могут помочь установить более тонкие настройки.
-
Мониторинг и управление:
- Регулярно проверяйте состояние ваших PV и VG на предмет оптимизации. Это поможет убедиться, что у вас достаточно ресурсов и минимизировано неиспользуемое пространство.
Заключение
К сожалению, из-за ошибок в программном обеспечении LVM вы можете столкнуться с ситуациями, когда команда pvresize
не отражает реальное состояние вашего пространства. Несмотря на все ваши усилия, в определенных случаях может не удастся полностью устранить неиспользуемое пространство из-за того, как LVM управляет метаданными.
Рекомендуется периодически проверять обновления LVM и следить за известными ошибками, так как со временем могут появиться исправления, которые улучшат обработку данного вопроса.