Восстановить данные из поврежденного LVM после lvreduce?

Я использую сервер Ubuntu 13.04. Я хотел уменьшить логический том, чтобы увеличить еще один. Логический том, который я хотел уменьшить, имел размер 100 ГБ и использовал 69 ГБ.

Я попытался уменьшить логический том, используя:

lvreduce -L20G /dev/mapper/root-vg

К сожалению, я, вероятно, сделал это неправильно, потому что после перезагрузки моя система больше не могла нормально загружаться.

У меня есть приглашение (initramfs), и я вижу, что монтирование /dev/mapper/root-vg не удалось в /root

Есть ли способ, по крайней мере, вернуть данные?

Спасибо.


person Lazao    schedule 26.08.2015    source источник


Ответы (1)


Вы забыли сжать файловую систему перед сжатием LV. Убедитесь, что вы не пытаетесь смонтировать или восстановить файловую систему прямо сейчас, потому что это может привести к повреждению файловой системы. Если данные важны, я настоятельно рекомендую сделать полную резервную копию диска перед попыткой восстановления.

Если у вас есть резервная копия метаданных VG, вы должны восстановить ее, а не использовать следующее. По умолчанию LVM создает и сохраняет резервные копии в /etc/lvm/{archive,backup}/ всякий раз, когда вы изменяете виртуальную группу, но я подозреваю, что у вас нет доступа к этим данным.

Чтобы восстановить доступ к файловой системе, вам необходимо повторно расширить LV как минимум до исходного размера, а также убедиться, что новые логические экстенты назначаются в том же порядке, что и изначально. Это второе условие будет трудно выполнить, если у вас сложная конфигурация с большим количеством PV. Однако, если у вас простая конфигурация с несколькими PV и вы не переназначали и не удаляли исходные логические экстенты, то следующее может работать (в действующей среде USB):

lvextend --extents +100%FREE /dev/mapper/root-vg

Посмотрите, можете ли вы смонтировать файловую систему только для чтения:

mkdir -p /mnt/root-vg/
mount -o ro /dev/mapper/root-vg /mnt/root-vg/

Если монтирование прошло успешно, то следует провести беглый осмотр файлов внутри. Если они выглядят правильно, запустите проверку целостности файловой системы (например, fsck в ext* или btrfs scrub в btrfs).

person Vincent Yu    schedule 26.08.2015