Моя цель — создать конфигурацию по умолчанию для тонкого выделения ресурсов LVM, которая будет достаточно гибкой, чтобы зарезервировать запас прочности для одного логического тома административной виртуальной машины (VolA) по сравнению с пользовательскими логическими томами (VolU1, VolU2, VolU3 ...), даже если разные администраторы (на отдельных установках) используют совершенно разные объемы дискового пространства на своих соответствующих виртуальных машинах администратора.
Например, один администратор может использовать 4 ГБ в VolA System1, а другой администратор может использовать 50 ГБ в VolA System2. Это означает, что фиксированный размер тома в 50 ГБ будет неприемлем для первого администратора (и наоборот), поэтому для гибкости требуется поместить VolA в тонкий пул с другими «пользовательскими» томами VM. Для этих систем невозможно вручную настроить установки.
Дополнительные реквизиты:
- Admin VM — это хост хранилища, работающий из тонкого пула.
- Пользовательские виртуальные машины занимают один и тот же пул
- Избыточное выделение ресурсов; все виртуальные размеры LV = размеру физического диска.
Проблема возникает, когда неопытность пользователя, ошибки или попытки DoS в виртуальных машинах пользователя вызываютраспределение всего оставшегося свободного пространствадля пользовательских томов (VolU1, VolU2 и т. д.) и оставляют VolA без свободного места, а виртуальную машину администратора неспособной загружаться или нормально функционировать.
Решение / отказоустойчивость должны быть максимально автоматическими и пассивными. Идеальным решением может быть набор свойств LVM для всех пользовательских LV, позволяющий им выделять пространство только когда poolFree < N
, тогда как у VolA нет такого ограничения. Но я не смог найти такую функцию в Linux LVM и нуждаюсь в предложениях.
После некоторых исследований, похоже, что решение может включать использование настройки для dmeventd
выполнения команд (например, «приостановить все виртуальные машины») при достижении порогового значения. Более новая страница руководства, которую dmeventd
я нашел в сети, говорит, что это возможно с dmeventd/thin_command
настройкой в lvm.conf; похоже, эта функция была добавлена в мае 2017 года, поэтому мне придется найти бэкпорт.
Другим вариантом может быть добавление в rsyslog.conf следующего правила:
:msg, contains, "some dmeventd message" ^my_pause_vm_script
решение1
Если вы хотите запретить пользователям чрезмерно выделять тот же тонкий пул, что и ваш хост администратора, то вам, возможно, стоит применить другой подход к этому выделению.
Вы можете разделить административные рабочие нагрузки в отдельный тонкий пул. И если вы перераспределяете, то обычно хорошим подходом является предоставление более эластично назначаемого резервного хранилища для ваших пулов, чтобы справиться с временным перераспределением. Хороший простой способ сделать это — зарезервировать несколько больших медленных LUN в качестве дешевого «аварийного» PV для ваших пулов.
Я знаю, что LVM может выполнить это экстренное расширение, используя собственную конфигурацию, но я пишу это на сэндвиче с ветчиной, который едва может самостоятельно развернуться, поэтому мне придется позже найти соответствующую документацию.