기술 가이드

RAID1 배열 구성 및 GRUB 준비

6 min read 시스템관리 업데이트됨 13 Oct 2025
RAID1 배열 구성 및 GRUB 설치 완벽 가이드
RAID1 배열 구성 및 GRUB 설치 완벽 가이드

Important: 이 절차는 라이브 시스템에서 파티션을 교체하면서 진행합니다. 데이터 손실 위험이 있으므로 전체 백업을 먼저 수행하세요.

개요

이 문서는 다음을 다룹니다:

  • degraded 상태로 RAID1 배열 생성 방법
  • 파일시스템 및 스왑 구성
  • /etc/mdadm.conf 생성 및 설명
  • /etc/fstab, /etc/mtab 변경 방법
  • GRUB 구성 변경 및 두 드라이브에 GRUB 설치
  • 재부팅 후 검증 및 문제 해결 체크리스트

용어 한 줄 요약:

  • RAID1: 두 장치에 동일한 데이터 복사(미러링)
  • degraded: RAID 구성에서 일부 디스크가 빠져 정상 복구가 필요함
  • mdadm: Linux에서 소프트웨어 RAID를 관리하는 도구

4 RAID 배열 생성

이 단계에서는 /dev/md0, /dev/md1, /dev/md2 세 개의 RAID1 배열을 만듭니다. 현재 시스템은 /dev/sda* 파티션에서 실행 중이므로 /dev/sda1, /dev/sda2, /dev/sda3는 즉시 추가할 수 없습니다. 따라서 생성 시 placeholder로 missing을 사용합니다.

아래 명령을 실행합니다:

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

이후 다음 명령으로 RAID 상태를 확인합니다:

cat /proc/mdstat

설명: 출력에서 [U] 또는 [U]는 배열이 degraded 상태임을 뜻합니다. [UU]는 두 디스크가 모두 정상임을 뜻합니다.

원문 예시 출력(변경하지 않음):

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

md1 : active raid1 sdb2[1]
522048 blocks [2/1] [_U]

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

unused devices: 
[root@server1 ~]#

중요: degraded 배열은 읽기/쓰기 가능하지만 복제본이 하나만 존재합니다. 두 번째 드라이브를 추가하고 동기화해야 완전한 내결함성을 얻습니다.

다음으로 각 배열에 파일시스템과 스왑을 만듭니다:

mkfs.ext3 /dev/md0 mkswap /dev/md1 mkfs.ext3 /dev/md2

팁: 실제 운영 환경에서는 ext4 또는 XFS 등 최신 파일시스템을 고려하세요. ext3는 예시입니다.

/etc/mdadm.conf 생성

mdadm 정보를 스캔하여 설정 파일을 생성합니다:

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

파일 내용을 확인합니다:

cat /etc/mdadm.conf

생성된 파일에는 현재 배열들의 UUID 및 구성 정보가 들어 있습니다. 예시(원문 유지):

| ARRAY /dev/md0 level=raid1 num-devices=2 UUID=78d582f0:940fabb5:f1c1092a:04a55452 ARRAY /dev/md1 level=raid1 num-devices=2 UUID=8db8f7e1:f2a64674:d22afece:4a539aa7 ARRAY /dev/md2 level=raid1 num-devices=2 UUID=1baf282d:17c58efd:a8de6947:b0af9792 |

Note: 부팅 시 mdadm이 올바른 배열을 조립하려면 /etc/mdadm.conf에 UUID가 있어야 합니다. UUID 기반 설정이 파티션 기반보다 안전합니다.

5 시스템을 RAID1에 맞게 조정

이제 /dev/md0과 /dev/md2를 마운트합니다(스왑 /dev/md1은 마운트 대상이 아님).

mkdir /mnt/md0 mkdir /mnt/md2

mount /dev/md0 /mnt/md0 mount /dev/md2 /mnt/md2

마운트가 잘 되었는지 확인합니다:

mount

원문 예시 출력(변경하지 않음):

[root@server1 ~]# mount
/dev/sda3 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/sda1 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)
/dev/md2 on /mnt/md2 type ext3 (rw)
[root@server1 ~]#

/etc/fstab 업데이트

다음으로 /etc/fstab 파일을 편집하여 부팅 시 RAID 장치를 사용하도록 합니다. 기존 LABEL 기반 항목을 /dev/md* 장치로 교체합니다.

예시 편집 내용(원문 유지):

vi /etc/fstab

| /dev/md2 / 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/md1 swap swap defaults 0 0 |

중요: fstab에서 root 파티션의 dump/fsck 순서를 적절히 설정해야 합니다. 위 예시는 root(1 1), boot(1 2)로 설정되어 있습니다.

/etc/mtab 업데이트

러닝 시스템의 /etc/mtab에는 현재 마운트 상태가 기록되어 있습니다. sda 장치 항목을 md 장치로 바꿉니다.

vi /etc/mtab

| /dev/md2 / 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은 리부트 후 리셋되므로 장기 보존은 /proc/mounts 또는 fstab을 기준으로 합니다. 그러나 수동으로 테스트 중이면 mtab 수정이 유용합니다.

GRUB 부트로더 설정 변경

부팅 로더 설정을 수정하여 첫 번째(기본) 커널이 RAID에서 부팅하도록 합니다. /boot/grub/menu.lst 또는 grub.conf를 편집하여 fallback=1을 추가합니다:

vi /boot/grub/menu.lst

| [...] default=0 fallback=1 [...] |

이는 기본 커널이 실패하면 다음(대체) 커널을 사용하도록 합니다.

파일 하단의 커널 stanza를 복제하고 새 항목의 root 옵션을 RAID 디바이스로 변경합니다. 예시(원문 유지):

| [...] title CentOS (2.6.18-128.el5) root (hd1,0) kernel /vmlinuz-2.6.18-128.el5 ro root=/dev/md2 initrd /initrd-2.6.18-128.el5.img title CentOS (2.6.18-128.el5) root (hd0,0) kernel /vmlinuz-2.6.18-128.el5 ro root=LABEL=/ initrd /initrd-2.6.18-128.el5.img |

전체 예시 파일(원문 유지):

| # grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/sda3 # initrd /initrd-version.img #boot=/dev/sda default=0 fallback=1 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title CentOS (2.6.18-128.el5) root (hd1,0) kernel /vmlinuz-2.6.18-128.el5 ro root=/dev/md2 initrd /initrd-2.6.18-128.el5.img title CentOS (2.6.18-128.el5) root (hd0,0) kernel /vmlinuz-2.6.18-128.el5 ro root=LABEL=/ initrd /initrd-2.6.18-128.el5.img |

설명: root (hd1,0)은 /dev/sdb의 첫 번째 파티션을 가리키므로 RAID에 포함된 디스크입니다. 설정 후 재부팅하면 시스템은 우선 RAID에서 부트합니다. 실패하면 fallback으로 기존 디스크에서 부팅합니다.

initrd 재생성

현재 상황을 반영하여 ramdisk를 재생성합니다:

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

주의: initrd에 mdadm 모듈과 필요한 드라이버가 포함되어야 RAID에서 부팅할 수 있습니다. mkinitrd가 실패하면 initramfs 생성 옵션에 mdadm 모듈을 명시해야 합니다.

데이터 복사

현재 /dev/sda1과 /dev/sda3의 내용을 새로운 md 장치로 복사합니다. 루트 파일시스템은 /mnt/md2에, /boot는 /mnt/md0에 복사합니다.

cp -dpRx / /mnt/md2

cd /boot cp -dpRx . /mnt/md0

옵션 설명: -a 대신 -dpRx를 사용한 예시입니다. 목적은 소유권과 심볼릭 링크, 특수 파일 등을 보존하는 것입니다.

6 GRUB 준비(1부)

이제 두 번째 하드 드라이브(/dev/sdb)에 GRUB를 설치합니다. GRUB 쉘을 실행한 뒤 다음 명령을 수행합니다:

grub

GRUB에서 다음을 입력합니다:

root (hd0,0)

원문 예시 출력(변경하지 않음):

grub> root (hd0,0)
Filesystem type is ext2fs, partition type 0x83

grub>

이어서 설치합니다:

setup (hd0)

원문 예시 출력(변경하지 않음):

grub> setup (hd0)
Checking if ”/boot/grub/stage1” exists… no
Checking if ”/grub/stage1” exists… yes
Checking if ”/grub/stage2” exists… yes
Checking if ”/grub/e2fs_stage1_5” exists… yes
Running ”embed /grub/e2fs_stage1_5 (hd0)”…  15 sectors are embedded.
succeeded
Running ”install /grub/stage1 (hd0) (hd0)1+15 p (hd0,0)/grub/stage2 /grub/grub.conf”… succeeded
Done.

grub>

그 다음 다른 디스크에도 동일하게 설치합니다:

root (hd1,0)
setup (hd1)

원문 예시 출력(변경하지 않음):

grub> root (hd1,0)
Filesystem type is ext2fs, partition type 0xfd

grub>

grub> setup (hd1)
Checking if ”/boot/grub/stage1” exists… no
Checking if ”/grub/stage2” exists… yes
Checking if ”/grub/e2fs_stage1_5” exists… yes
Running ”embed /grub/e2fs_stage1_5 (hd1)”…  15 sectors are embedded.
succeeded
Running ”install /grub/stage1 (hd1) (hd1)1+15 p (hd1,0)/grub/stage2 /grub/grub.conf”… succeeded
Done.

grub>

마지막으로 GRUB 쉘을 종료합니다:

quit

재부팅

설치가 모두 끝나면 시스템을 재부팅합니다:

reboot

재부팅 후에는 RAID에서 부팅되는지, md 장치들이 정상인지, 그리고 파일시스템이 읽기 전용으로 마운트되지 않았는지 확인해야 합니다.

검증 체크리스트 (재부팅 후)

  • 시스템이 정상적으로 부팅되는가?
  • /proc/mdstat에서 모든 배열이 [UU]로 완전한가?
  • dmesg 또는 journalctl에 md 관련 오류가 없는가?
  • /etc/fstab에 /dev/md* 항목이 올바르게 들어 있는가?
  • 부팅 시 initramfs가 RAID 모듈을 로드했는가?
  • /boot가 RAID 파티션에서 읽혀졌는가?

유용한 명령들:

  • cat /proc/mdstat
  • mdadm –detail /dev/md0
  • lsblk -f
  • mount | grep md
  • journalctl -b –no-pager | grep -i md

장애 시 롤백 및 복구 러ン북

  1. 부팅 실패(시스템 부팅 중 커널 패닉 또는 루트 마운트 실패)

    • GRUB에서 다른 커널/fallback 항목으로 부팅 시도.
    • 라이브 CD 또는 복구 모드로 부팅하여 /etc/fstab을 원래대로 되돌린다.
    • 필요하면 /boot를 원래 디스크로 변경하고 grub-install로 부트로더 재설치.
  2. mdadm 배열이 동기화되지 않거나 재스캔 실패

    • mdadm –examine –scan로 UUID 확인
    • mdadm –assemble –scan로 배열을 수동 조립
    • mdadm –add /dev/mdX /dev/sdaY로 누락 디스크를 추가하여 재동기화 시작
  3. 데이터 불일치나 파일 손상 의심

    • 백업에서 복원하거나 문제가 되는 파일시스템을 fsck로 점검

중요: 실무 환경에서는 변경 전에 전체 백업과 복구 계획을 준비하세요.

대안 접근법 및 주의사항

  • LVM 위에 RAID를 구성하거나 RAID 위에 LVM을 구성할 수 있습니다. 각 방식은 스냅샷, 확장성, 관리 용이성 측면에서 트레이드오프가 있습니다.
  • 하드웨어 RAID 컨트롤러가 있는 경우 소프트웨어 RAID보다 성능/BIOS 통합 측면에서 유리할 수 있지만, 컨트롤러 종속성 및 복구 시 제약이 있습니다.
  • 부트로더(Grub 0.97 vs Grub2): 상이한 시스템에서는 grub-install 사용법과 설정 파일 위치가 다릅니다. 본 문서는 legacy GRUB(grub) 예시입니다.

운영자용 체크리스트 (역할별)

시스템 관리자:

  • 전체 백업 수행 완료
  • mdadm 버전 및 mkinitrd 도구 버전 확인
  • /etc/mdadm.conf와 initrd에 mdadm 모듈 포함 여부 확인

운영팀(접근/모니터링):

  • RAID 동기화 진행률을 모니터링
  • SMART 상태와 I/O 에러 경고 확인
  • 재부팅 일정과 롤백 계획 공유

테스트 케이스(수락 기준)

  • 재부팅 후 부팅이 성공하고 /proc/mdstat가 [UU]로 표시된다.
  • 루트와 /boot 파티션이 /dev/md2 및 /dev/md0으로 마운트된다.
  • 한 디스크를 물리적으로 제거해도 시스템이 계속 부팅된다(미러 동작 확인).
  • 제거한 디스크를 다시 추가하면 mdadm이 자동으로 재동기화한다.

간단한 문제 해결 스니펫

  • 배열 상태 확인:
cat /proc/mdstat
mdadm --detail /dev/md0
  • 누락된 디스크 추가:
mdadm --add /dev/md0 /dev/sda1
  • 배열 조립(수동):
mdadm --assemble --scan

자주 묻는 질문

RAID1로 전환하면 기존 데이터가 유지되나요?

대부분의 절차는 데이터 복사를 전제로 합니다. 안전을 위해 전 과정 전에 전체 백업을 권장합니다.

GRUB을 두 디스크에 설치해야 하는 이유는 무엇인가요?

하드웨어 실패 시 시스템이 다른 디스크의 부트로더에서 부팅되도록 하여 가용성을 높입니다.

initrd 재생성이 실패하면 어떻게 하나요?

필요한 mdadm 및 파일시스템 드라이버가 포함되었는지 확인하고, mkinitrd 옵션을 통해 모듈을 명시하여 다시 생성하세요.

요약

  • degraded 상태로 RAID1 배열을 만들고 파일시스템을 적용했습니다.
  • /etc/mdadm.conf를 생성해 배열 식별자를 고정했습니다.
  • /etc/fstab 및 /etc/mtab, GRUB 설정을 RAID에 맞게 수정했습니다.
  • initrd를 재생성하고 GRUB를 두 디스크에 설치했습니다.
  • 재부팅 후 검증과 장애 대응 체크리스트를 제공했습니다.

요약 핵심 항목:

  • 배열 생성 → 파일시스템 생성 → mdadm.conf 생성 → fstab/mtab 우선 적용 → initrd 재생성 → GRUB 설치 → 재부팅 및 검증
공유하기: X/Twitter Facebook LinkedIn Telegram
저자
편집

유사한 자료

FFXI 패킷 손실 해결 가이드
게임 네트워크

FFXI 패킷 손실 해결 가이드

O365 이메일 백업: 방법과 모범 사례
백업

O365 이메일 백업: 방법과 모범 사례

페이스북 숨은 메시지 확인법: 요청·필터 메시지 찾기
소셜 미디어

페이스북 숨은 메시지 확인법: 요청·필터 메시지 찾기

Ubuntu 8.04 소프트웨어 RAID1 설치 가이드
시스템 관리

Ubuntu 8.04 소프트웨어 RAID1 설치 가이드

RAID1 배열 구성 및 GRUB 설치 완벽 가이드
시스템관리

RAID1 배열 구성 및 GRUB 설치 완벽 가이드

Beeftext로 Windows에서 텍스트 스니펫 빠르게 사용하기
생산성

Beeftext로 Windows에서 텍스트 스니펫 빠르게 사용하기