Как восстановить удаленный логический том с помощью lvremove

Я использую CentOS 5.5 и использую Xen. У меня есть большая группа томов, которую я создаю логические тома с помощью lvcreate. Сегодня я попросил клиента отменить ее учетную запись, а затем передумать примерно через час. К сожалению, я уже удалил LVM, на котором находился ее Xen-образ. (просто используя стандартное lvremove). С тех пор на этом диске не было никаких других действий LVM (больше ничего не было добавлено или удалено). Можно ли "отменить" lvremove или восстановить логический том? Если так, как бы я поступил об этом?

5 ответов

Решение

LVM выполняет резервное копирование своих метаданных в /etc/lvm/backup а также /etc/lvm/archive, В верхней части каждого файла будет указано время / данные, когда файл был сгенерирован, поэтому скорее всего у вас будет копия более старых метаданных, как это было до удаления LV. Я считаю, что резервное копирование происходит автоматически при изменении метаданных.

Следующее может быть опасным и разрушительным, поэтому будьте очень осторожны и, если возможно, создайте полную резервную копию.

Команда для восстановления этих резервных копий метаданных группы томов vgcfgrestore, Убедитесь, что вы делаете текущую копию существующей рабочей конфигурации, используя vgcfgbackup введите команду -f, чтобы указать другой файл для вывода, чтобы не изменять файлы, находящиеся в папках /etc/lvm/backup или /etc/lvm/archive. Убедитесь, что вы изменили текущую конфигурацию на конфигурацию, которую хотите восстановить, чтобы убедиться, что единственными изменениями, которые вы собираетесь применить, является воссоздание недавно удаленного LV. Наличие полной резервной копии ваших данных, вероятно, тоже неплохая идея. Вы также можете рассмотреть возможность обращения к поставщику Linux за поддержкой / руководством, если у вас есть контракт на поддержку, прежде чем продолжать, поскольку мне никогда не приходилось делать это самостоятельно.

Удачи.

"Не могли бы вы поподробнее узнать, как найти EFROM и ETO из файла резервной копии? У всех lv есть"start_extend"от 0 в моем файле резервной копии, так что я немного растерялся:) Спасибо! - user186975 24 августа '13 в 17:06 "

Хорошо, я буду очень конкретен... с Самым простым способом восстановить логический том.

Пример:

1 - я удалил свой логический том!

$ sudo lvremove /dev/vg1/debian.root

2 - Первое, что нужно сделать, это найти файл архива в /etc/lvm/archive/vg1_(xxxxx).vg. Я могу сделать это, просто посмотрев дату, когда я удалил логический том!

$ sudo ls -l /etc/lvm/archive |more

3- Я нашел это!

-rw------- 1 root root 16255 Mar 20 14:29 vg1_00223-235991429.vg
-rw------- 1 root root 16665 Mar 20 16:49 vg1_00224-748876387.vg
-rw------- 1 root root 17074 Mar 20 16:49 vg1_00225-931666169.vg
-rw------- 1 root root 17482 Mar 20 16:50 vg1_00226-1238302012.vg
-rw------- 1 root root 18081 **Mar 20 21:57 vg1_00227-2048533959.vg**

Дата, когда я сделал lvremove!!!... это было несколько минут назад..

4 - Давайте посмотрим файл!

$ sudo head /etc/lvm/archive/vg1_00227-2048533959.vg
*# Generated by LVM2 version 2.02.95(2) (2012-03-06): Thu Mar 20 21:57:58 2014
contents = "Text Format Volume Group"
version = 1
description = **"Created *before* executing 'lvremove /dev/vg1/debian.root'"**
creation_host = "server"    # Linux server 3.8.0-35-generic #50-Ubuntu SMP Tue Dec 3 01:24:59 UTC 2013 x86_64
creation_time = 1395363478  # Thu Mar 20 21:57:58 2014*

5 - Сделайте тест, прежде чем восстановить его!

$ sudo vgcfgrestore vg1 --test -f /etc/lvm/archive/vg1_00227-2048533959.vg
Test mode: Metadata will NOT be updated and volumes will not be
(de)activated.   **Restored volume group vg1**

6 - Хорошо, теперь повторите командную строку, без (--test)

$ sudo vgcfgrestore vg1 -f /etc/lvm/archive/vg1_00227-2048533959.vg
**Restored volume group vg1**

7 - Проверьте это!

$ sudo lvscan |grep debian
ACTIVE            '/dev/vg1/debian.root' [7,81 GiB] inherit

8 - Если логика не была активной, сделайте это!

$ sudo lvchange -a y /dev/vg1/debian.root 

Это все

Я надеюсь, что это может помочь другим людям, которые ищут это решение!

Самый простой способ восстановления после lvremove (при условии, что вы не писали в экстенты, в которых находился LV):

Просто найдите резервную копию ваших метаданных в /etc/lvm/archive и выясните

а) в какой степени проживал LV, (EFROM, ETO)
б) на каких PV ваш LV находился, а какие на том PV, который он использовал (PFROM, PTO)

Получив эту информацию, вы создаете новый логический том точно такого же размера на точно таких же планах, не стирая первые 8 КБ логического диска:

lvcreate --extents EFROM-ETO --zero n --name customer007 YOUR-VG-NAME /dev/yourpv:PFROM-PTO

(Как ранее отвечал Thermoman) простой способ воссоздать удаленный том LVM - создать его с помощью lvcreate без обнуления и убедиться, что он будет в том же месте на диске. (Команда из ответа термомана не сработала.)

Проверьте размер и положение удаленного логического тома, как они были до удаления, прочитав файлы в / etc / lvm / archive. Размер тома в extent_count из segment1 (или сумма segment*/extent_count значения, если оно имело несколько экстентов). Положение в stripesраздел после псевдонима физического тома (например, pv0).

Например, раздел тома может выглядеть так:

    physical_volumes {
            pv0 {
                    device = "/dev/somedisk" # Hint only
                    ...
            }
    }

    logical_volumes {
            ...
            example {
                    ...
                    segment_count = 1

                    segment1 {
                            start_extent = 0
                            extent_count = 1024     # 4 Gigabytes

                            type = "striped"
                            stripe_count = 1        # linear

                            stripes = [
                                    "pv0", 30720
                            ]
                    }
            }
            ...
    }

Размер этого example объем был 1024, и он был расположен на /dev/somedisk, начиная с экстента 30720.

Рассчитайте последний экстент как start + size -1 = 30720 + 1024 - 1 = 31743. Чтобы воссоздать эту проблему объема, выполните следующие действия:

lvcreate --extents 1024 --zero n --name example vgname /dev/somedisk:30720-31743

У меня была похожая ситуация. У меня были все PV, содержащие желаемые LV, но моя VG показала отсутствие PV и 0 LV. Я выздоровел, сделав следующее:

  1. Стать корнем
  2. Бежать pvs собирать UUID для всех дисков.
  3. Просмотрите файлы в /etc/lvm/archive, пока не найдете тот, в котором перечислены все те же UUID.
  4. Сделайте рабочую копию архивного конфигурационного файла и начните редактирование.
  5. в physical_volumes раздел, установите device = строки, соответствующие текущему устройству /UUID, о которых сообщили pvs, очистить любой "MISSING" флаги и удалите все pvN разделы, которые на самом деле отсутствовали.
  6. в logical_volumes раздел, удалите все списки, которые имели полосы на pvN разделы, которых больше не было.
  7. Вот и все, потом я побежал

    vgcfgrestore --test vg -f /root/dangerously_edited.vg

  8. Когда это сработало, я перезапустился без --test вариант.

Я достиг своей конкретной ситуации, расширив VG с помощью PVsdg и sdh. Затем я создал новый LV, указав /dev/sdg /dev/sdh в командной строке, чтобы я знал, что новый LV был на этих дисках. Затем я перенес только эти диски на новую машину. Старая машина была очень расстроена отсутствующими дисками, и когда я их принудительно удалил, она также удалила ВСЕ LV. Облом.

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

Другие вопросы по тегам