Вопрос или проблема
Я пытался конвертировать линейный том var
в RAID-1 на ядре, в котором RAID-1 был отключен, и, конечно же, это не удалось. Я пересобрал ядро с соответствующими изменениями, и затем конвертация прошла успешно, но первая попытка, похоже, создала сегменты barn0-var_rmeta_0
и barn0-var_rmeta_1
на старых и новых членах, которые, по-видимому, не связаны с томом. Могу ли я безопасно удалить эти сегменты, и если да, то как?
barn ~ # lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 1.8T 0 disk
├─sda1 8:1 0 2M 0 part
├─sda2 8:2 0 128M 0 part
└─sda3 8:3 0 1.8T 0 part
├─barn0-var_rmeta_0 253:17 0 4M 0 lvm
├─barn0-var_rmeta_2 253:19 0 4M 0 lvm
│ └─barn0-var 253:8 0 32G 0 lvm /var
├─barn0-var_rimage_0 253:20 0 32G 0 lvm
│ └─barn0-var 253:8 0 32G 0 lvm /var
├─barn0-home_rmeta_0 253:23 0 4M 0 lvm
│ └─barn0-home 253:16 0 160G 0 lvm /home
├─barn0-home_rimage_0 253:24 0 160G 0 lvm
│ └─barn0-home 253:16 0 160G 0 lvm /home
├─barn0-root_rmeta_0 253:31 0 4M 0 lvm
│ └─barn0-root 253:0 0 48G 0 lvm /
└─barn0-root_rimage_0 253:32 0 48G 0 lvm
└─barn0-root 253:0 0 48G 0 lvm /
...
sdc 8:32 0 1.8T 0 disk
├─barn0-swap0 253:1 0 1G 0 lvm [SWAP]
├─barn0-tmp 253:7 0 16G 0 lvm /tmp
├─barn0-opt 253:9 0 16G 0 lvm /opt
├─barn0-nboverflow1 253:10 0 16G 0 lvm /mnt/misc
├─barn0-portage--temp 253:11 0 32G 0 lvm /var/tmp/portage
├─barn0-vhosts 253:12 0 64G 0 lvm /vhosts
├─barn0-nexus 253:13 0 16G 0 lvm /var/lib/sonatype-work
├─barn0-scratch1 253:14 0 16G 0 lvm
├─barn0-downloads 253:15 0 64G 0 lvm /usr/share/downloads
├─barn0-var_rmeta_1 253:18 0 4M 0 lvm
├─barn0-var_rmeta_3 253:21 0 4M 0 lvm
│ └─barn0-var 253:8 0 32G 0 lvm /var
├─barn0-var_rimage_1 253:22 0 32G 0 lvm
│ └─barn0-var 253:8 0 32G 0 lvm /var
├─barn0-home_rmeta_1 253:25 0 4M 0 lvm
│ └─barn0-home 253:16 0 160G 0 lvm /home
├─barn0-home_rimage_1 253:26 0 160G 0 lvm
│ └─barn0-home 253:16 0 160G 0 lvm /home
├─barn0-root_rmeta_1 253:33 0 4M 0 lvm
│ └─barn0-root 253:0 0 48G 0 lvm /
└─barn0-root_rimage_1 253:34 0 48G 0 lvm
└─barn0-root 253:0 0 48G 0 lvm /
Мне нужно очистить это, потому что, когда я пытаюсь конвертировать том обратно в линейный, это не удается:
barn ~ # lvconvert -m -1 barn0/var /dev/sda3
Логический том var_rmeta_0 уже существует в группе томов barn0.
Ошибка выделения памяти.
Не удалось сдвинуть и переименовать компоненты образа.
Не удалось извлечь образы из barn0/var.
Ответ или решение
Для устранения лишних LVM ‘rmeta’ томов в вашей системе необходимо выполнить несколько шагов, чтобы правильно и безопасно удалить ненужные метаданные и завершить желаемую операцию преобразования тома.
Теория
LVM (Логический Менеджер Томов) позволяет создавать логические тома, которые могут растягиваться через несколько дисков и быть преобразованы в различные конфигурации, включая RAID. При создании RAID-1 тома в системе LVM создаются метаданные, такие как ‘rmeta’ и ‘rimage’, которые используются для управления зеркалированием данных. Элементы ‘rmeta’ ответственны за хранение метаданных, необходимых для корректной работы RAID. В вашем случае, из-за первоначальной неудачной попытки преобразования вследствие неправильной конфигурации ядра, были созданы избыточные мета-данные.
Пример
У вас есть проблема, при которой попытка повторного преобразования линейного тома в RAID-1 приводит к ошибке, связанной с существованием избыточных ‘rmeta’ томов:
lvconvert -m -1 barn0/var /dev/sda3
Ошибка:
Logical Volume var_rmeta_0 already exists in volume group barn0.
Memory allocation failed.
Failed to shift and rename image components.
Failed to extract images from barn0/var.
Это указывает на то, что тома ‘rmeta’, созданные во время первой, неудачной попытки, мешают продолжению операций.
Применение
Для решения проблемы, необходимо удалить лишние ‘rmeta’ тома. Следуйте шагам ниже, чтобы выполнить задачу безопасно:
-
Создание резервной копии данных:
Прежде чем выполнять какие-либо изменения, убедитесь, что все важные данные на томе /var надежно сохранены. Это может включать в себя создание полного бэкапа или временное копирование данных на другой носитель. -
Проверка текущего статуса LVM:
Используйте командуlsblk
иlvs
для подтверждения текущего состояния логических томов и метаданных. -
Отключение автоматического монтирования:
Убедитесь, что все монтированные тома отключены. Это позволит избежать любых конфликта черед преобразованием.umount /var
Если том используется, вы не сможете его размонтировать; в таком случае выполните действия, чтобы всё же временно его отключить.
-
Удаление избыточных ‘rmeta’ томов:
Определите ‘rmeta’ тома, которые относятся к неудачной операции и замещают используемые. Используйтеlvremove
для их удаления:lvremove /dev/barn0/var_rmeta_0 lvremove /dev/barn0/var_rmeta_1
Убедитесь, что никаких изменений не вносятся без полного понимания того, что эти изменения не повредят файлы.
-
Перепроверка конфигураций:
После удаления нелишних томов, перепроверьте статус логических и физических томов с помощьюlsblk
иlvs
. -
Повторная попытка преобразования:
Теперь, после очистки всех лишних метаданных, попытайтесь преобразовать том обратно в линейный:lvconvert -m 0 barn0/var
Следите за любыми предупреждениями или ошибками, которые возникают при выполнении команды.
-
Проверка целостности:
После успешного выполнения команд, перепроверьте файловую систему на ошибки, используяfsck
, чтобы убедиться, что никаких ошибок в данных нет. -
Замонтирование тома:
После всех изменений, повторное монтирование тома/var
и следите за его работоспособностью:mount /var
Основное внимание в процессе устранения лишних ‘rmeta’ томов необходимо уделять точности и предосторожности. По мере выполнения всех операций убедитесь, что изменения не повредят отдельные данные и что система останется в состоянии нормальной работы.