データ復元 · 1 min read · Dec 25, 2025

RAID1 LVMパーティションからKnoppix Linux LiveCDでデータを復元する

RAID1 LVMパーティションからKnoppix Linux LiveCDでデータを復元する

Version 1.0
Author: Till Brehm

Last
edited: 04/11/2007

このチュートリアルでは、Fedora Coreインストーラーなどによって作成されたLVM2 RAID1セットアップの一部であった単一のハードディスクからデータを救出する方法を説明します。データを復元するのがなぜそれほど問題なのか?以前LVM RAID1セットアップの一部であった各ハードディスクには、RAIDに保存されていたすべてのデータが含まれていますが、ハードディスクは単純にマウントすることができません。まず、パーティション用にRAIDセットアップを構成し、その後LVMを設定してこの(これらの)RAIDパーティションを使用する必要があります。その後、マウントできるようになります。データ復元にはKnoppix Linux LiveCDを使用します。

前提条件

このチュートリアルではKnoppix 5.1 LiveCDを使用しました。ここからCD ISOイメージをダウンロードし、CDに焼き付けて、RAIDパーティションを含むハードディスクをマザーボードのIDE / ATAコントローラーに接続し、Knoppix CDをCDドライブに入れてCDからブートします。

私が使用したハードディスクは、最初のIDEコントローラー(hda)に接続されたIDEドライブです。私の場合、ハードディスクには1つのパーティションしか含まれていませんでした。

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

ファイルを編集し、RAIDアレイを説明する行の最後にdevices=/dev/hda1,missingを追加します。

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アレイの2番目のディスクが現在存在しないことを意味します。

ファイル/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

出力は次のようになります:

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 hda1[1]
293049600 blocks [2/1] [_U]

unused devices:

LVMセットアップの復元

LVM構成ファイルはmdadm.confのような簡単なコマンドで作成できませんが、LVMはパーティションの先頭に構成ファイルの内容の1つまたは複数のコピーを保存します。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 Megabytes
    max_lv = 0
    max_pv = 0

    physical_volumes {

        pv0 {
            id = "uMJ8uM-sfTJ-La9j-oIuy-W3NX-ObiT-n464Rv"
            device = "/dev/md0" # Hint only

            status = ["ALLOCATABLE"]
            pe_start = 384
            pe_count = 8943 # 279,469 Gigabytes
        }
    }

    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 Gigabytes

                type = "striped"
                stripe_count = 1    # linear

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

ファイル/etc/lvm/backup/VolGroup00を作成します:

vi /etc/lvm/backup/VolGroup00

構成データを挿入して、ファイルが上記の例に似たものになるようにします。

これでLVMを開始できます:

/etc/init.d/lvm start

ボリュームを読み込みます:

vgscan

すべての物理ボリュームを読み込んでいます。これにはしばらく時間がかかる場合があります…
メタデータタイプlvm2を使用してボリュームグループ”VolGroup00”を見つけました

pvscan

PV /dev/md0 VG VolGroup00 lvm2 [279,47 GB / 32,00 MB free]
Total: 1 [279,47 GB] / in use: 1 [279,47 GB] / in no VG: 0 [0 ]

ボリュームをアクティブにします:

vgchange VolGroup00 -a y
 1 logical volume(s) in volume group "VolGroup00" now active

これでパーティションを/mnt/dataにマウントできます:

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

UTF-8形式のファイル名を持つハードディスクからデータを復元する場合、現在の非UTF-8ロケールに変換する必要があるかもしれません。私の場合、RAIDハードディスクはUTF-8エンコードされたファイル名を持つFedora Coreシステムからのものです。私のターゲットロケールは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

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。