기술 가이드

RAID 배열 생성 및 데이터 이동 가이드

5 min read 시스템 관리 업데이트됨 28 Sep 2025
RAID 배열 생성 및 데이터 이전 가이드
RAID 배열 생성 및 데이터 이전 가이드

이 문서는 mdadm으로 RAID1 배열(/dev/md0, /dev/md1)을 만들고, 비- LVM 파티션을 /dev/md0에, LVM을 /dev/md1으로 이전하는 전체 절차를 설명합니다. GRUB과 initrd를 조정해 디스크 장애 시 부팅이 유지되도록 하고, pvmove로 데이터 이동 후 파티션 타입을 변경해 RAID에 추가합니다. 주요 명령어와 검증 방법, 롤백 체크리스트도 포함합니다.

개요

이 안내서는 다음 작업을 단계별로 다룹니다.

  • RAID 배열 생성 (degraded 상태로 시작)
  • 비-LVM 파일시스템 생성 및 마운트
  • mdadm 설정 파일(/etc/mdadm.conf) 생성
  • LVM PV 생성 및 VG에 확장
  • /etc/fstab, /etc/mtab, GRUB(menu.lst) 수정
  • initrd 재생성
  • pvmove로 LVM 데이터 이동, 기존 디스크 제거
  • 파티션 타입 변경 및 RAID 동기화
  • /boot 내용 복사 및 최종 검증

중요: 실제 운영 환경에서는 전체 백업을 먼저 수행하고, 가능한 경우 유지보수 시간에 작업하세요.

전제 조건

  • mdadm, lvm2, grub 도구들이 설치되어 있어야 합니다.
  • /dev/sdb는 새 디스크(또는 목표 디스크)로서 이미 파티션 /dev/sdb1, /dev/sdb2가 준비되어 있다고 가정합니다.
  • 시스템이 현재 /dev/sda(예: /dev/sda1, /dev/sda2)에서 부팅 중이므로 해당 파티션은 즉시 RAID에 추가할 수 없습니다.

Important: 명령어는 루트로 실행해야 합니다.

RAID 배열 생성

현재 시스템이 /dev/sda의 파티션으로 부팅 중이므로, 우선 placeholder를 사용해 /dev/md0와 /dev/md1을 degraded 상태로 생성합니다. /dev/sdb1은 /dev/md0에, /dev/sdb2는 /dev/md1에 추가합니다:

mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb1
mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb2

생성 후 상태 확인:

cat /proc/mdstat

예시 출력 (degraded 상태):

[root@server1 ~]# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid1 sdb2[1]
      5036288 blocks [2/1] [_U]

md0 : active raid1 sdb1[1]
      200704 blocks [2/1] [_U]

unused devices: 
[root@server1 ~]#

참고: [U] 또는 [U]는 배열이 degraded 상태임을 의미합니다. [UU]는 정상 상태입니다.

비-LVM 파일시스템 생성 (/dev/md0)

비-LVM RAID 배열인 /dev/md0에 ext3 파일시스템을 만듭니다:

mkfs.ext3 /dev/md0

LVM용 준비 (/dev/md1)

LVM에서 사용할 RAID 장치 /dev/md1을 물리볼륨으로 초기화하고, 기존 볼륨 그룹 VolGroup00에 추가합니다:

pvcreate /dev/md1
vgextend VolGroup00 /dev/md1

pvdisplay로 확인하면 /dev/md1이 VolGroup00에 추가된 것을 볼 수 있습니다. 예시 출력:

[root@server1 ~]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               VolGroup00
  PV Size               4.80 GB / not usable 22.34 MB
  Allocatable           yes
  PE Size (KByte)       32768
  Total PE              153
  Free PE               1
  Allocated PE          152
  PV UUID               op2n3N-rck1-Pywc-9wTY-EUxQ-KUcr-2YeRJ0

  --- Physical volume ---
  PV Name               /dev/md1
  VG Name               VolGroup00
  PV Size               4.80 GB / not usable 22.25 MB
  Allocatable           yes
  PE Size (KByte)       32768
  Total PE              153
  Free PE               153
  Allocated PE          0
  PV UUID               pS3xiy-AEnZ-p3Wf-qY2D-cGus-eyGl-03mWyg

[root@server1 ~]#

vgdisplay 출력 예시:

[root@server1 ~]# vgdisplay
  --- Volume group ---
  VG Name               VolGroup00
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               9.56 GB
  PE Size               32.00 MB
  Total PE              306
  Alloc PE / Size       152 / 4.75 GB
  Free  PE / Size       154 / 4.81 GB
  VG UUID               jJj1DQ-SvKY-6hdr-3MMS-8NOd-pb3l-lS7TA1

[root@server1 ~]#

/etc/mdadm.conf 생성

현재 구성된 RAID 배열 정보를 파일로 저장합니다:

mdadm --examine --scan > /etc/mdadm.conf
cat /etc/mdadm.conf

파일에는 다음과 유사한 ARRAY 항목들이 들어 있습니다:

ARRAY /dev/md0 level=raid1 num-devices=2 UUID=7d2bf9c3:7cd9df21:f782dab8:9212d7cb
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=d93a2387:6355b5c5:25ed3e50:2a0e4f96

중요: mdadm.conf는 부팅 시 RAID 배열을 자동 인식하게 하는 데 필요합니다.

/etc/fstab 및 /etc/mtab 수정

부팅 시 /boot이 RAID 장치(/dev/md0)를 사용하도록 /etc/fstab의 LABEL=/boot 항목을 /dev/md0으로 교체합니다:

vi /etc/fstab

파일 예시:

/dev/VolGroup00/LogVol00 /                       ext3    defaults        1 1
/dev/md0             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0

또한 /etc/mtab에서 /dev/sda1 대신 /dev/md0으로 변경합니다:

vi /etc/mtab

예시 /etc/mtab:

/dev/mapper/VolGroup00-LogVol00 / ext3 rw 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
devpts /dev/pts devpts rw,gid=5,mode=620 0 0
/dev/md0 /boot ext3 rw 0 0
tmpfs /dev/shm tmpfs rw 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0

참고: /etc/mtab는 런타임 마운트 정보를 담고 있으므로 파일을 수동으로 수정할 때 주의를 기울이세요.

GRUB 설정: fallback 및 부팅 디스크 순서

/boot/grub/menu.lst(또는 grub.conf)에 fallback=1을 추가해 첫 번째 커널로 부팅 실패 시 두 번째 커널로 넘어가게 합니다:

vi /boot/grub/menu.lst
default=0
fallback=1

그 다음 kernel stanza를 복사해 첫 항목 바로 위에 붙여 넣고 root(hd0,0) 대신 root(hd1,0)로 변경합니다. 예:

[...]
title Fedora (2.6.23.1-42.fc8)
        root (hd1,0)
        kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/VolGroup00/LogVol00
        initrd /initrd-2.6.23.1-42.fc8.img
title Fedora (2.6.23.1-42.fc8)
        root (hd0,0)
        kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/VolGroup00/LogVol00
        initrd /initrd-2.6.23.1-42.fc8.img

설명: root(hd1,0)은 /dev/sdb의 부트 파티션을 가리킵니다. 시스템이 degraded 상태의 RAID에서 부팅을 시도하고 실패하면, fallback=1 설정에 의해 /dev/sda로 다시 시도합니다.

initrd 재생성

현재 사용 중인 initrd 이미지를 백업하고 새로 생성합니다:

mv /boot/initrd-`uname -r`.img /boot/initrd-`uname -r`.img_orig
mkinitrd /boot/initrd-`uname -r`.img `uname -r`

이 단계는 RAID 및 LVM 관련 모듈이 initramfs에 포함되도록 하기 위해 필요합니다.

LVM 데이터 이동 (/dev/sda2 → /dev/md1)

구성 파일 수정이 완료되면 pvmove로 /dev/sda2의 LVM 데이터를 /dev/md1로 옮깁니다:

pvmove /dev/sda2 /dev/md1

이 명령은 데이터 양에 따라 시간이 걸립니다. 완료 후 /dev/sda2를 VG에서 제거합니다:

vgreduce VolGroup00 /dev/sda2

LVM이 더 이상 /dev/sda2를 사용하지 않도록 표시합니다:

pvremove /dev/sda2

pvdisplay로 확인하면 /dev/md1만 남아 있는 것을 볼 수 있습니다. 예시:

[root@server1 ~]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/md1
  VG Name               VolGroup00
  PV Size               4.80 GB / not usable 22.25 MB
  Allocatable           yes
  PE Size (KByte)       32768
  Total PE              153
  Free PE               1
  Allocated PE          152
  PV UUID               pS3xiy-AEnZ-p3Wf-qY2D-cGus-eyGl-03mWyg

[root@server1 ~]#

파티션 타입 변경 및 /dev/sda2를 RAID에 추가

이제 /dev/sda2 파티션 타입을 Linux raid autodetect(fd)로 변경하고 /dev/md1에 추가합니다:

fdisk /dev/sda

세션 예시:

[root@server1 ~]# fdisk /dev/sda

Command (m for help): <- t
Partition number (1-4): <- 2
Hex code (type L to list codes): <- fd
Changed system type of partition 2 to fd (Linux raid autodetect)

Command (m for help): <- w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
[root@server1 ~]#

그 다음 /dev/sda2를 /dev/md1에 추가합니다:

mdadm --add /dev/md1 /dev/sda2

진행 상황 확인:

cat /proc/mdstat

동기화 중 예시:

[root@server1 ~]# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid1 sda2[2] sdb2[1]
      5036288 blocks [2/1] [_U]
      [=====>...............]  recovery = 28.8% (1454272/5036288) finish=2.8min speed=21132K/sec

md0 : active raid1 sdb1[1]
      200704 blocks [2/1] [_U]

unused devices: 
[root@server1 ~]#

watch 명령으로 실시간 모니터링 가능:

watch cat /proc/mdstat

동기화가 완료되면 상태는 [UU]로 바뀝니다.

/dev/md0 마운트 및 /boot 내용 복사

먼저 마운트 지점을 만들고 /dev/md0을 마운트합니다:

mkdir /mnt/md0
mount /dev/md0 /mnt/md0

mount 명령 출력에서 /dev/md0가 /boot와 /mnt/md0에 마운트된 것을 확인합니다. 예시:

[root@server1 ~]# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/md0 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/md0 on /mnt/md0 type ext3 (rw)
[root@server1 ~]#

이제 /boot의 내용을 /dev/md0에 복사합니다:

cd /boot
cp -dpRx . /mnt/md0

옵션 설명: -d(심볼릭 링크 유지), -p(퍼미션 유지), -R(재귀), -x(다른 파일시스템 미포함)

검증 및 테스트

  1. /proc/mdstat에서 모든 RAID 디바이스가 [UU]인지 확인합니다.
  2. /etc/mdadm.conf에 ARRAY 항목이 있는지 확인합니다.
  3. /etc/fstab와 /etc/mtab에서 /boot가 /dev/md0로 바뀌었는지 확인합니다.
  4. GRUB 설정(menu.lst)에 fallback=1과 root(hd1,0) 항목이 있는지 확인합니다.
  5. initrd가 재생성되었는지 확인합니다.
  6. 재부팅 테스트: 하나의 디스크를 분리한 상태로 부팅해보세요.

중요: 재부팅 전 모든 변경 사항을 다시 검토하고, 가능하면 콘솔 접근(리모트 KVM 등)을 확보하세요.

운영자 체크리스트

  • 전체 백업 수행
  • 필요한 패키지(mdadm, lvm2) 설치
  • /etc/mdadm.conf 생성 및 확인
  • /etc/fstab, /etc/mtab 변경 및 저장
  • GRUB menu.lst 수정 및 initrd 재생성
  • pvmove 완료 및 vgreduce/pvremove 실행
  • fdisk로 파티션 타입 변경 후 mdadm –add 실행
  • /proc/mdstat 동기화 완료 확인
  • /boot 복사 및 권한 확인
  • 재부팅 및 장애 시 fallback 동작 확인

롤백 및 장애 대응 절차

  1. RAID 생성 이전으로 되돌려야 한다면, /etc/fstab과 /etc/mtab을 원래 값으로 복원합니다.
  2. /etc/mdadm.conf에서 삭제한 ARRAY 항목을 복원하지 않았다면 복원합니다.
  3. pvremove를 이미 실행했다면 물리 디스크에서 데이터를 복구하는 것은 어렵습니다. 따라서 롤백은 주로 구성파일 복원과 재부팅 검증으로 제한됩니다.
  4. GRUB이 부팅하지 않으면, 라이브 미디어로 부팅해 /boot 파티션을 점검하고 grub-install로 복구합니다.

참고: 영구적인 데이터 손실을 막기 위해 작업 전 전체 백업이 필수입니다.

테스트 케이스(권장)

  • 정상 동작: 모든 RAID 디스크가 연결된 상태에서 부팅 성공
  • 디스크 단일 장애: /dev/sda 제거(또는 차단) 후 /dev/sdb로 부팅 성공
  • 동기화 테스트: mdadm –add 후 /proc/mdstat가 동기화 진행을 보여주는지
  • LVM 이동 확인: pvmove 후 vgs, pvs 출력에서 /dev/md1이 할당된 상태인지

명령어 치트시트

  • RAID 생성: mdadm –create /dev/mdX –level=1 –raid-disks=2 missing /dev/sdY
  • RAID 상태: cat /proc/mdstat
  • mdadm 설정 저장: mdadm –examine –scan > /etc/mdadm.conf
  • PV 생성: pvcreate /dev/md1
  • VG 확장: vgextend VolGroup00 /dev/md1
  • 데이터 이동: pvmove /dev/sda2 /dev/md1
  • PV 제거: pvremove /dev/sda2
  • 파티션 타입 변경: fdisk /dev/sda (type fd)
  • RAID에 파티션 추가: mdadm –add /dev/md1 /dev/sda2
  • initrd 재생성: mkinitrd /boot/initrd-uname -r.img uname -r

요약

이 가이드는 두 개의 RAID1 배열을 생성하고 LVM을 포함한 시스템을 RAID로 이전하는 전체 절차를 제공합니다. mdadm을 사용해 degraded 상태로 RAID를 만들고, LVM을 /dev/md1으로 확장한 뒤 pvmove로 데이터 이전을 수행합니다. GRUB과 initrd를 조정해 장애 발생 시 부팅 가용성을 확보합니다.

주요 테이크어웨이:

  • 항상 백업을 먼저 수행하세요.
  • mdadm.conf와 fstab, GRUB 설정을 정확히 적용해야 합니다.
  • pvmove와 mdadm 동기화는 시간이 걸리므로 모니터링이 필요합니다.

끝까지 확인하세요: /proc/mdstat, pvs, vgs, mount 출력이 목표 상태와 일치하는지 확인하는 것이 최종 검증입니다.

공유하기: X/Twitter Facebook LinkedIn Telegram
저자
편집

유사한 자료

BoltWire CMS 설치 가이드 — Ubuntu 18.04
CMS 설치

BoltWire CMS 설치 가이드 — Ubuntu 18.04

RAID1 + LVM: GRUB 설치 및 /dev/sda 구성 가이드
시스템관리

RAID1 + LVM: GRUB 설치 및 /dev/sda 구성 가이드

High Sierra 알림 완전 차단 가이드
macOS

High Sierra 알림 완전 차단 가이드

노크아웃 포스터 만들기: 6단계 실전 가이드
디자인

노크아웃 포스터 만들기: 6단계 실전 가이드

YouTube 싫어요 수 확인하기 — 브라우저·Android 가이드
가이드

YouTube 싫어요 수 확인하기 — 브라우저·Android 가이드

Spotify 음악을 MP3로 변환하는 쉬운 방법
음악

Spotify 음악을 MP3로 변환하는 쉬운 방법