데이터 복구 · 3 min read · Dec 25, 2025

RAID1 LVM 파티션에서 Knoppix Linux LiveCD로 데이터 복구하기

RAID1 LVM 파티션에서 Knoppix Linux LiveCD로 데이터 복구하기

버전 1.0
저자: Till Brehm

최종 수정: 2007년 4월 11일

이 튜토리얼은 Fedora Core 설치 프로그램과 같이 LVM2 RAID1 설정의 일부였던 단일 하드 디스크에서 데이터를 복구하는 방법을 설명합니다. 데이터를 복구하는 것이 왜 그렇게 문제가 될까요? LVM RAID1 설정의 일부였던 각 하드 디스크는 RAID에 저장된 모든 데이터를 포함하고 있지만, 하드 디스크는 단순히 마운트할 수 없습니다. 먼저 파티션에 대한 RAID 설정을 구성해야 하며, 그런 다음 이 RAID 파티션을 사용하기 위해 LVM을 설정해야 마운트할 수 있습니다. 데이터 복구를 위해 Knoppix Linux LiveCD를 사용할 것입니다.

전제 조건

이 튜토리얼에서는 Knoppix 5.1 LiveCD를 사용했습니다. 여기에서 CD ISO 이미지를 다운로드하고 CD에 구워주세요. 그런 다음 RAID 파티션을 포함하는 하드 디스크를 메인보드의 IDE / ATA 컨트롤러에 연결하고 Knoppix CD를 CD 드라이브에 넣고 CD에서 부팅하세요.

제가 사용한 하드 디스크는 첫 번째 IDE 컨트롤러(hda)에 연결된 IDE 드라이브입니다. 제 경우, 하드 디스크에는 하나의 파티션만 포함되어 있었습니다.

RAID 복원

Knoppix가 부팅된 후, 셸을 열고 다음 명령을 실행하세요:

sudo su

루트 사용자로 전환합니다.

원래 구성에서 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 배열의 두 번째 디스크가 현재 존재하지 않음을 의미합니다.

파일 /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]

사용하지 않는 장치:

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    # 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]
총: 1 [279,47 GB] / 사용 중: 1 [279,47 GB] / 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

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.