На моем хосте Proxmox 6.4 у меня был пул LVM Thin размером 250 ГБ. Я создал на нем Ubuntu VM (которая также использовала LVM для корневого раздела), но случайно переподписал ее, поэтому PV внутри VM был установлен на 500 ГБ.
Все работало отлично некоторое время, пока я не превысил скрытый лимит в 250 ГБ, и виртуальная машина рухнула с ошибкой ввода-вывода и отказалась загружаться. Так что теперь я пытаюсь восстановить диск. Таблица разделов диска, похоже, не повреждена:
$ fdisk -l /dev/vm-disks/vm-101-disk-0
Disk /dev/vm-disks/vm-101-disk-0: 500 GiB, 536870912000 bytes, 1048576000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 65536 bytes / 65536 bytes
Disklabel type: gpt
Disk identifier: 30874BBC-0B29-4083-B5BF-E973C665D87F
Device Start End Sectors Size Type
/dev/vm-disks/vm-101-disk-0p1 2048 4095 2048 1M BIOS boot
/dev/vm-disks/vm-101-disk-0p2 4096 2101247 2097152 1G Linux filesystem
/dev/vm-disks/vm-101-disk-0p3 2101248 1048573951 1046472704 499G Linux filesystem
Я бежал
$ kpartx -a /dev/vm-disks/vm-101-disk-0
для создания /dev/mapper
записей для 3 разделов внутри vm-101-disk-0
, и это работает. Если я запускаю:
$ file -sL /dev/mapper/vm--disks-vm--101--disk--0p3
/dev/mapper/vm--disks-vm--101--disk--0p3: LVM2 PV (Linux Logical Volume Manager), UUID: fdOzWR-sPcy-hyYo-Lj2H-YEnZ-wK3c-J6biES, size: 535794024448
Затем я вижу этот PV внутри 3-го раздела диска. Но как мне смонтировать его где-нибудь на хосте, чтобы начать восстановление данных? Очевидно, pvscan
что хостовая система его не видит, так как он находится внутри другого LV. Есть ли у меня вообще какие-либо варианты восстановления, или тот факт, что VM думала, что у нее 500 ГБ, когда на самом деле это не так, означает, что я повредил его без возможности восстановления?
решение1
VM только что получила ошибки ввода-вывода записи, когда пространство в тонком пуле было исчерпано. Для VM это выглядит так, как будто жесткий диск неожиданно отклонил все записи. Так что если VM была голым оборудованием, первым действием было найти новый жесткий диск и клонировать на него этот плохой. После исправления HW вы можете исправить логические структуры.
В случае виртуальных машин, у вас нет сломанного оборудования, вы можете "исправить" "жесткий диск", восстановив работу тонкого тома. Просто увеличьте тонкий пул, используйте lvextend
на тонком пуле LV, чтобы добавить немного места.
И когда это будет сделано, загрузите VM с какого-нибудь (виртуального) носителя для восстановления и выполните стандартное восстановление файловой системы. Помните, что не может быть больших трудностей; современные файловые системы, как правило, спроектированы так, чтобы выдерживать такие сбои.
Контролируйте тонкий LVM. Хотя исчерпание пространства данных не является такой уж большой проблемой,метаданныеУсталость может иметь гораздо большее влияние. Не позволяйте этому случиться.