Восстановление данных · 3 min read · Dec 25, 2025

Восстановление данных из RAID1 LVM разделов с помощью Knoppix Linux LiveCD

Восстановление данных из RAID1 LVM разделов с помощью Knoppix Linux LiveCD

Версия 1.0
Автор: Тилл Брем

Последнее редактирование: 04/11/2007

Этот учебник описывает, как восстановить данные с одного жесткого диска, который был частью конфигурации LVM2 RAID1, созданной, например, установщиком Fedora Core. Почему так сложно восстановить данные? Каждый отдельный жесткий диск, который ранее был частью конфигурации LVM RAID1, содержит все данные, которые были сохранены в RAID, но жесткий диск нельзя просто смонтировать. Сначала необходимо настроить RAID для раздела(ов), а затем настроить LVM для использования этого(их) RAID раздела(ов), прежде чем вы сможете его смонтировать. Я буду использовать Knoppix Linux LiveCD для восстановления данных.

Предварительные требования

Я использовал Knoppix 5.1 LiveCD для этого учебника. Скачайте ISO-образ CD отсюда и запишите его на CD, затем подключите жесткий диск, который содержит RAID раздел(ы), к контроллеру IDE / ATA вашей материнской платы, вставьте CD Knoppix в привод и загрузитесь с CD.

Жесткий диск, который я использовал, является IDE-диском, подключенным к первому IDE-контроллеру (hda). В моем случае жесткий диск содержал только один раздел.

Восстановление RAID

После загрузки Knoppix откройте оболочку и выполните команду:

sudo su

чтобы стать пользователем root.

Поскольку у меня нет файла mdadm.conf из оригинальной конфигурации, я создаю его с помощью этой команды:

mdadm --examine --scan /dev/hda1 >> /etc/mdadm/mdadm.conf

Результат должен быть похож на этот:

DEVICE partitions
CREATE owner=root group=disk mode=0660 auto=yes metadata=1
MAILADDR root
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=a28090aa:6893be8b:c4024dfc:29cdb07a

Отредактируйте файл и добавьте devices=/dev/hda1,missing в конец строки, описывающей RAID массив.

vi /etc/mdadm/mdadm.conf

В конечном итоге файл будет выглядеть так:

DEVICE partitions
CREATE owner=root group=disk mode=0660 auto=yes metadata=1
MAILADDR root
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=a28090aa:6893be8b:c4024dfc:29cdb07a devices=/dev/hda1,missing

Строка /dev/hda1 — это аппаратное устройство, а missing означает, что второй диск в этом RAID массиве в данный момент отсутствует.

Отредактируйте файл /etc/default/mdadm:

vi /etc/default/mdadm

и измените строку:

AUTOSTART=false

на:

AUTOSTART=true

Теперь мы можем запустить нашу настройку RAID:

/etc/init.d/mdadm start
/etc/init.d/mdadm-raid start

Чтобы проверить, что наше RAID устройство в порядке, выполните команду:

cat /proc/mdstat

Вывод должен выглядеть так:

Личности : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : активный raid1 hda1[1]
293049600 блоков [2/1] [_U]

неиспользуемые устройства:

Восстановление конфигурации LVM

Файл конфигурации LVM нельзя создать простой командой, как mdadm.conf, но LVM хранит одну или несколько копий содержимого файла конфигурации в начале раздела. Я использую команду dd, чтобы извлечь первую часть раздела и записать ее в текстовый файл:

dd if=/dev/md0 bs=512 count=255 skip=1 of=/tmp/md0.txt

Откройте файл с помощью текстового редактора:

vi /tmp/md0.txt

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

VolGroup00 {
    id = "evRkPK-aCjV-HiHY-oaaD-SwUO-zN7A-LyRhoj"
    seqno = 2
    status = ["RESIZEABLE", "READ", "WRITE"]
    extent_size = 65536     # 32 Мегабайта
    max_lv = 0
    max_pv = 0

    physical_volumes {

        pv0 {
            id = "uMJ8uM-sfTJ-La9j-oIuy-W3NX-ObiT-n464Rv"
            device = "/dev/md0" # Подсказка только

            status = ["ALLOCATABLE"]
            pe_start = 384
            pe_count = 8943 # 279,469 Гигабайт
        }
    }

    logical_volumes {

        LogVol00 {
            id = "ohesOX-VRSi-CsnK-PUoI-GjUE-0nT7-ltxWoy"
            status = ["READ", "WRITE", "VISIBLE"]
            segment_count = 1

            segment1 {
                start_extent = 0
                extent_count = 8942 # 279,438 Гигабайт

                type = "striped"
                stripe_count = 1    # линейный

                stripes = [
                    "pv0", 0
                ]
            }
        }
    }
}

Создайте файл /etc/lvm/backup/VolGroup00:

vi /etc/lvm/backup/VolGroup00

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

Теперь мы можем запустить LVM:

/etc/init.d/lvm start

Считайте объем:

vgscan

Чтение всех физических томов. Это может занять некоторое время…
Найдена группа томов “VolGroup00” с использованием типа метаданных lvm2

pvscan

PV /dev/md0 VG VolGroup00 lvm2 [279,47 ГБ / 32,00 МБ свободно]
Всего: 1 [279,47 ГБ] / в использовании: 1 [279,47 ГБ] / в нет VG: 0 [0 ]

и активируйте объем:

vgchange VolGroup00 -a y
 1 логический том(ов) в группе томов "VolGroup00" теперь активен

Теперь мы можем смонтировать раздел в /mnt/data:

mkdir /mnt/data
mount /dev/VolGroup00/LogVol00 /mnt/data/

Если вы восстанавливаете данные с жесткого диска с именами файлов в формате UTF-8, может потребоваться преобразовать их в вашу текущую локаль, не поддерживающую UTF-8. В моем случае RAID жесткий диск из системы Fedora Core с именами файлов, закодированными в UTF-8. Моя целевая локаль — ISO-8859-1. В этом случае скрипт Perl convmv помогает преобразовать имена файлов в целевую локаль.

Установка convmv

cd /tmp
wget http://j3e.de/linux/convmv/convmv-1.10.tar.gz
tar xvfz convmv-1.10.tar.gz
cd convmv-1.10
cp convmv /usr/bin/convmv

Чтобы преобразовать все имена файлов в /mnt/data в локаль ISO-8859-1, выполните эту команду:

convmv -f UTF-8 -t ISO-8859-1 -r --notest /mnt/data/*

Если вы хотите сначала протестировать преобразование, используйте:

convmv -f UTF-8 -t ISO-8859-1 -r /mnt/data/*

Ссылки

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.