device-mapper: thin: Out of data space — Решение аварии LVM Thin Pool
Архитектура ошибки и симптомы сбоя
Критический сбой ядра «device-mapper: thin: Out of data space on metadata pool» возникает в подсистеме dm-thin (LVM Thin Provisioning). Ошибка означает 100% исчерпание физического пространства данных (Data Space) или служебных метаданных (Metadata Space) в пуле тонких томов. При наступлении этого события драйвер device-mapper мгновенно блокирует (freeze) или переводит все зависимые виртуальные тома (LVs) и виртуальные машины (KVM/Proxmox) в режим Read-Only либо аварийно сбрасывает операции I/O с ошибкой EIO.
Диагностическая таблица параметров сбоя
| Параметр | Значение | Инженерный смысл сбоя |
|---|---|---|
| dm-thin | Device-Mapper Subsystem | Ядерный драйвер тонкого выделения дискового пространства и снапшотов. |
| Metadata Pool 100% | B-tree Exhaustion | Служебный том метаданных заполнен; ядро не может регистрировать новые блоки. |
| dm-thin-pool Mode | Read-Only / Fail / Queue | Политика пула при переполнении (блокировка записи для предотвращения порчи ФС). |
Пошаговое дерево решений и сценарии траблшутинга
Сценарий 1: Экспресс-анализ заполненности пула данных и метаданных
# Проверка статуса LVM Thin-пулов (обратите внимание на столбцы Data% и Meta%):
sudo lvs -a -o lv_name,vg_name,lv_size,data_percent,metadata_percent,lv_attr
# Просмотр системных сообщений dmesg:
dmesg -T | grep -E "(device-mapper|thin)"Сценарий 2: Горячее расширение пула данных и пула метаданных
Если в Volume Group (VG) есть свободные экстенты, немедленно расширьте thin-pool:
# Расширение пространства данных тонкого пула на 50GB:
sudo lvextend -L +50G /dev/vg_name/thinpool_name
# Принудительное расширение тома МЕТАДАННЫХ пула:
sudo lvextend --poolmetadatasize +1G /dev/vg_name/thinpool_nameСценарий 3: Аварийное восстановление поврежденного пула метаданных (thin_repair)
Если пул заблокировался и не активируется (в статусе metadata read-only):
# 1. Деактивация пула:
sudo lvchange -an /dev/vg_name/thinpool_name
# 2. Восстановление B-дерева метаданных в новый том через thin_repair:
sudo thin_repair -i /dev/mapper/vg_name-thinpool_name_tmeta -o /dev/mapper/vg_name-thinpool_name_new_tmeta
# 3. Замена поврежденного тома метаданных:
sudo lvconvert --repair /dev/vg_name/thinpool_nameСценарий 4: Настройка автоматического расширения thin-пулов
Отредактируйте /etc/lvm/lvm.conf для предотвращения повторения аварии:
# В секции activation:
thin_pool_autoextend_threshold = 75
thin_pool_autoextend_percent = 20ITSTM оперативно выполнит расширение пулов LVM-Thin/Ceph, восстановление поврежденных метаданных и вернет критические сервисы в строй без потери данных.
Частые вопросы (FAQ)
Что опаснее: переполнение Data Space или переполнение Metadata Space?
Переполнение Metadata Space значительно опаснее. При исчерпании пула данных ядро просто отклоняет запись новых блоков, а при исчерпании метаданных повреждается само B-дерево адресации thin-pool, что требует применения thin_repair и может привести к потере снапшотов.
Почему lvextend выдает ошибку 'Volume group has insufficient free space'?
Это означает, что в родительской Volume Group (VG) закончились физические дисковые экстенты. Вам необходимо сначала добавить новый физический диск в VG (vgextend vg_name /dev/sdX), а затем расширить thin pool.
Как разморозить зависшие I/O операции после расширения пула?
После успешного выполнения lvextend ядро автоматически переводит пул в режим read-write и возобновляет приостановленные I/O операции. Если этого не произошло, выполните: sudo lvchange --refresh /dev/vg_name/thinpool_name.
Каков максимальный рекомендуемый размер тома метаданных (poolmetadatasize)?
Архитектурный максимум метаданных LVM thin-pool составляет около 16 ГБ. Для пулов размером 5-20 ТБ рекомендуется сразу задавать размер метаданных от 2 до 8 ГБ.