Что следует определить, прежде чем что-либо менять?
Сначала определите, исчерпано ли пространство данных , пространство метаданных или и то, и другое в пуле тонких логических томов. Это различие влияет на план восстановления. Пул тонких логических томов содержит логический том данных, в котором хранятся выделенные блоки, и логический том метаданных, который отслеживает эти выделения. Виртуальный размер тонких логических томов может превышать физическую емкость пула, что является целью тонкого выделения ресурсов, но также и причиной необходимости мониторинга перераспределения ресурсов.
В документации SUSE Linux Enterprise Server 15 SP7 подтверждается, что тонкие тома выделяют пространство из пула тонких томов по запросу, и что суммарный размер виртуальных машин может превышать доступное физическое хранилище. В документации LVM по пулам тонких томов добавлено важное правило эксплуатации: расширяйте пул до того, как один из Data%параметров Meta%достигнет 100%. См. руководство по администрированию хранилища SUSE Linux Enterprise Server 15 SP7 и руководство по выделению тонких томов LVM .
1. Заполнено ли пространство данных или метаданные?
Используйте lvsявное указание столбцов вместо того, чтобы полагаться на общую проверку дискового пространства. Файловая система может по-прежнему сообщать о свободном виртуальном пространстве, даже если физический пул данных, лежащий в её основе, почти исчерпан.
lvs -a -o lv_name,vg_name,lv_attr,lv_size,data_percent,metadata_percent
Подпись: Тонкий пул следует идентифицировать по значениям Data% и Meta%; одного лишь свободного места в файловой системе недостаточно для физического исчерпания тонкого пула.
Если Data%значение равно или близко к 100, это означает, что в пуле закончились блоки для новых операций записи. В документации LVM предупреждается, что при исчерпании пула данных могут возникать ошибки при записи, что, в свою очередь, может повредить файловые системы. Если Meta%значение достигает 100, ответ становится более консервативным, поскольку исчерпание метаданных может привести к несогласованности как метаданных тонкого пула, так и файловых систем.
2. Сохранились ли у группы томов свободные физические границы?
Это следующий этап принятия решения. Тонкий пул может увеличиваться в размерах только в том случае, если в его группе томов есть свободные экстенты, если только вы предварительно не добавите в эту группу томов больше физического хранилища.
vgs -o vg_name,vg_size,vg_free
vgdisplay VG_NAME
Подпись: Проверка свободного места в VG позволяет отличить простое расширение тонкого пула от случая, требующего предварительного добавления хранилища.
Если в группе томов достаточно свободного места, обычно можно напрямую расширить тонкий пул. Если VFreeзначение равно нулю или слишком мало, не следует повторять попытку lvextend; решите, можно ли удалить ненужные тонкие тома или снимки, освободить блоки с помощью операции отбрасывания или добавить новый физический том.
3. Следует ли останавливать приложения перед восстановлением?
Если пул уже заполнен на 100%, остановите или приостановите работу приложений, интенсивно использующих запись, прежде чем вносить изменения в хранилище. Это снизит вероятность того, что базы данных, виртуальные машины, контейнеры или другие службы продолжат выполнять операции записи, пока уровень хранения выходит из строя или восстанавливается.
systemctl stop YOUR_APPLICATION.service
systemctl status YOUR_APPLICATION.service
Подпись: Приостановка работы приложений ограничивает дальнейшую запись во время восстановления заполненного или поврежденного пула тонких файлов.
Универсального списка служб, которые следует остановить, не существует. Используйте архитектуру вашей рабочей нагрузки и процедуры обслуживания. Для баз данных и виртуальных машин отдавайте предпочтение поддерживаемому продуктом методу завершения работы или приостановки, а не резкому завершению процессов.
4. Если Data% заполнен, а в VG есть свободное место, как расширить пул?
Расширяйте сам тонкий пул, а не виртуальный тонкий том, поскольку проблема заключается в нехватке физической емкости пула. Например:
lvextend -L +20G VG_NAME/THIN_POOL
lvs -o lv_name,vg_name,lv_size,data_percent,metadata_percent VG_NAME/THIN_POOL
Подпись: Расширение пула тонких дисков увеличивает физическую емкость; в результате процент использования данных должен снизиться после того, как новое пространство станет доступно.
В руководстве по lvextend описаны прямое расширение тонкого пула и отдельная --poolmetadatasizeопция для метаданных. Выберите шаг увеличения, исходя из реальной скорости роста и емкости хранилища, которую вы можете зарезервировать. Фиксированный пример, например, +20Gне является рекомендацией по размеру для каждой системы.
5. Что делать, если в группе томов нет свободного места?
Добавляйте хранилище только после подтверждения того, что целевое блочное устройство не используется и не содержит необходимых вам данных. Создание физического тома LVM записывает метаданные LVM на выбранное устройство, поэтому ошибка в имени устройства может привести к необратимым последствиям.
lsblk
blkid
pvcreate /dev/NEW_DEVICE
vgextend VG_NAME /dev/NEW_DEVICE
vgs -o vg_name,vg_size,vg_free
Подпись: Когда группа виртуальных устройств (VG) заполнена, сначала можно добавить новое физическое хранилище, предварительно убедившись, что администратор указал правильное неиспользуемое устройство.
В документации SUSE указано, что группы томов можно расширять путем добавления разделов или целых дисков. Перед выполнением этих действий в системах с многоканальным доступом, SAN, RAID, зашифрованных, кластерных или облачных системах следует проверить топологию хранилища, поскольку правильный уровень устройства может отличаться от показанного в простом примере необработанного диска.
6. Что, если Meta% достигнет 100%?
Рассматривайте исчерпание метаданных как случай восстановления в автономном режиме, а не просто как добавление емкости данных. В руководстве по тонким пулам LVM прямо указано, что исчерпание метаданных может привести к несогласованности метаданных тонкого пула и файловых систем. Описанная последовательность восстановления включает деактивацию пула, его восстановление с помощью команды lvconvert --repair, расширение метаданных, а затем проверку файловой системы.
После остановки приложений отмонтируйте файловые системы или деактивируйте тонкие логические тома, использующие пул. Затем выполните процедуру контролируемого технического обслуживания, аналогичную следующей:
lvchange -an VG_NAME/THIN_LV
lvconvert --repair VG_NAME/THIN_POOL
lvextend --poolmetadatasize +1G VG_NAME/THIN_POOL
Подпись: В случае переполнения метаданных требуется не просто увеличение объема данных, а восстановление с помощью тонкого пула в автономном режиме и дополнительное пространство для метаданных.
Рисунок +1Gявляется лишь примером. Размер метаданных зависит от размера пула, размера блока, использования моментальных снимков и поведения при выделении памяти. После восстановления проверьте системные журналы и используйте поддерживаемую файловой системой процедуру проверки или восстановления, если возникли ошибки ввода-вывода. Не запускайте инструмент восстановления файловой системы вслепую на смонтированной файловой системе.
Может ли удаление файлов мгновенно освободить тонкий пул?
Не всегда. Удаление файла освобождает место в файловой системе, но тонкий пул освобождает физические блоки только тогда, когда информация об отброшенных блоках достигает пула. В документации LVM отмечается, что fstrimможно освободить такие блоки, в то время как снимки могут продолжать ссылаться на блоки и препятствовать их освобождению. Если пул настроен на игнорирование отброшенных блоков, функция trim не будет освобождать блоки.
Если файловая система и рабочая нагрузка это позволяют, проверьте поведение отбрасывания и выполняйте обрезку только после того, как пул станет достаточно стабильным для работы:
lvs -o lv_name,discards VG_NAME/THIN_POOL
fstrim -v /mount/point
Удаление старых тонких снимков также может освободить место в хранилище, если эти снимки представляют собой оставшиеся ссылки на блоки. Перед удалением снимков проверьте требования к резервному копированию и хранению данных.
7. Как предотвратить повторение подобного инцидента?
Включите и проверьте мониторинг тонких пулов LVM и настройте автоматическое расширение с достаточным количеством свободной емкости в группе томов (VG). LVM использует dmeventd, обычно через lvm2-monitorсервис, механизм реагирования, когда использование данных или метаданных превышает заданный порог.
systemctl status lvm2-monitor.service
lvs -o+seg_monitor VG_NAME/THIN_POOL
lvchange --monitor y VG_NAME/THIN_POOL
lvmconfig --type full activation/thin_pool_autoextend_threshold
lvmconfig --type full activation/thin_pool_autoextend_percent
Подпись: Автоматическое расширение зависит от активного мониторинга, соответствующего порогового значения и наличия свободных участков, оставшихся в группе объема.
В руководстве LVM указано, что пороговое значение 100 отключает автоматическое расширение, а минимально допустимое пороговое значение составляет 50. Более низкое пороговое значение дает LVM больше времени для реагирования на пулы с очень высокой скоростью записи. Процент расширения определяет, насколько увеличится размер пула при срабатывании политики.
Примером такой конфигурации /etc/lvm/lvm.confможет быть:
activation {
thin_pool_autoextend_threshold = 70
thin_pool_autoextend_percent = 20
}
Эти значения являются примерами, а не универсальными значениями по умолчанию. Задайте запас прочности в соответствии с частотой пакетной записи, интервалом мониторинга, временем подготовки хранилища и доступным свободным пространством VG. Автоматическое расширение не поможет, если сам VG уже заполнен.
8. Как вы поняли, что восстановление действительно сработало?
Проверьте несколько сигналов. В пуле должно быть достаточно свободного места, в группе томов (VG) должно быть достаточно свободного пространства для ожидаемого роста, приложения должны иметь возможность нормально записывать данные, а в журналах не должно быть постоянных ошибок ввода-вывода или метаданных тонкого пула.
lvs -a -o lv_name,vg_name,lv_attr,lv_size,data_percent,metadata_percent
vgs -o vg_name,vg_size,vg_free
journalctl -u lvm2-monitor.service --since "30 minutes ago"
Подпись: Восстановление подтверждается, когда использование пула имеет достаточный запас, VG сохраняет полезное свободное пространство, а мониторинг не сообщает о продолжающихся ошибках ввода-вывода.
Перезапускайте приложения постепенно и следите за уменьшением пула ресурсов, пока не восстановится реальная нагрузка. Если Data%рост снова станет необычно быстрым, расширение пула, возможно, решило проблему сбоя, не устранив при этом проблему планирования мощностей.
Когда следует остановиться и выбрать другой путь восстановления?
| Наблюдение | Рекомендуемое направление |
Data%около 100, Meta%здоровый, VG, есть свободное место | Расширьте пул тонких файлов и проверьте восстановление рабочей нагрузки. |
Data%Приблизительно в 100 году у VG нет свободного места. | Добавьте проверенное хранилище, безопасно освободите блоки или уменьшите количество сохраненных тонких томов/снимков перед расширением. |
Meta%достиг 100 | Приостановите выполнение рабочих нагрузок, деактивируйте пул, восстановите метаданные в автономном режиме, расширьте метаданные и проверьте файловые системы. |
lvconvert --repairнеудачи | Не следует импровизировать с повторной записью метаданных. Сохраняйте резервные копии журналов и метаданных и обращайтесь в службу поддержки SUSE или к опытному инженеру по восстановлению LVM. |
| Сгруппированные тонкие объемы | Следуйте процедурам управления кластерными ресурсами. SUSE требует, чтобы пул тонких файлов и тонкие тома управлялись совместно, оставаясь исключительно за одним узлом. |
| Вскоре после продления срока бассейн снова наполнился водой. | Изучите вопросы хранения моментальных снимков, поведения при удалении данных, роста объема записи, пороговых значений мониторинга и планирования емкости. |
Чего следует избегать?
- Не следует предполагать,
df -hчто это доказывает наличие свободного физического хранилища в тонком пуле.
- Не инициализируйте новое устройство,
pvcreateпока не убедитесь, что оно не используется.
- Не следует рассматривать исчерпание метаданных как ту же проблему, что и исчерпание обычных данных.
- Не полагайтесь на автоматическое расширение без резервирования свободных областей в группе векторов (VG).
- Не выполняйте команды восстановления файловой системы для смонтированных файловых систем, если производитель файловой системы явно не поддерживает эту операцию.
- Не следует отключать мониторинг лишь для того, чтобы подавить предупреждения; предупреждение часто является последней возможностью расширить пул перед тем, как операции записи завершатся неудачей.
Официальные и основные источники информации