Назад | Перейти на главную страницу

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

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

«Не могли бы вы подробнее рассказать о поиске EFROM и ETO из файла резервной копии? У всех lv есть" start_extend "от 0 в моем файле резервной копии, так что я немного потерялся :) Спасибо! - user186975 24 авг. : 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**

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

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 

Это все

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

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

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

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

Удачи.

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

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

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

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

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

(Как ранее ответил термоман), самый простой способ воссоздать удаленный том 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.

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

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

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

  1. Стать root
  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 с помощью PV sdg и sdh. Затем я создал новый LV, указав /dev/sdg /dev/sdh в командной строке, чтобы я знал, что новый LV находится на этих дисках. Затем я переместил эти диски на новую машину. Старая машина была очень расстроена отсутствием дисков, и когда я их принудительно удалил, она также удалила ВСЕ LV. Облом.

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