기술 가이드

소프트웨어 RAID1(LVM 실행 중)에서 GRUB2 및 /dev/sda 준비

5 min read 시스템 업데이트됨 12 Oct 2025
실행 중인 LVM에서 RAID1 및 GRUB2 설치 가이드
실행 중인 LVM에서 RAID1 및 GRUB2 설치 가이드

요약

요약: 이 문서는 실행 중인 LVM 볼륨을 포함한 소프트웨어 RAID1 환경에서 GRUB2를 준비하고, /dev/sda 파티션을 RAID에 추가한 뒤 부트로더를 양쪽 디스크에 설치하는 전체 절차를 단계별로 설명합니다. 주요 검증 명령, 문제 발생 시 대처법, 롤백 및 운영자별 체크리스트도 포함합니다.

개요 및 목적

이 가이드는 이미 RAID와 LVM이 구성되어 있고, 운영 중인 시스템에 대해 다음을 수행하는 방법을 설명합니다:

  • /boot를 RAID1로 옮기고 /dev/md0를 확인
  • /dev/sda 파티션 타입을 RAID 자동 감지(fd)로 변경
  • /dev/sda1을 /dev/md0에 추가
  • mdadm 설정 갱신 및 GRUB2 재구성
  • GRUB2를 양쪽 디스크(/dev/sda, /dev/sdb)에 설치

정의: RAID1 — 두 개 이상의 디스크에 동일한 데이터를 저장하여 가용성을 높이는 미러링 방식.

Important: 라이브 시스템에서 파티션 테이블을 변경할 때는 항상 전체 백업(특히 /boot와 LVM 메타데이터)을 먼저 수행하세요.

1 단계 — GRUB2 준비

먼저 GRUB2 부트로더가 두 디스크(/dev/sda 및 /dev/sdb)에 설치되어 있는지 확인하거나 설치합니다.

명령 예시:

grub-install /dev/sda
grub-install /dev/sdb

설치 후 시스템을 재부팅하여 RAID에서 정상적으로 부팅하는지 확인합니다.

reboot

메모: BIOS/Legacy 부팅 환경에서는 grub-install로 MBR에 설치합니다. UEFI 시스템은 별도의 EFI 파티션과 efibootmgr, grub-install –target=x86_64-efi 등이 필요합니다(이 가이드는 BIOS/Legacy 환경을 기준으로 설명합니다).

2 단계 — /dev/md0와 파일시스템 확인

시스템이 재부팅된 후 /dev/md0가 존재하는지 확인합니다.

df -h

예시 출력(원본):

root@server1:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/server1-root 4.5G  722M  3.6G  17% /
tmpfs                 249M     0  249M   0% /lib/init/rw
udev                  244M  128K  244M   1% /dev
tmpfs                 249M     0  249M   0% /dev/shm
/dev/md0              236M   18M  206M   8% /boot
root@server1:~#

중요: /boot가 /dev/md0에 마운트되어 있어야 합니다. 그렇지 않다면 파티션/파일시스템 매핑을 재검토하세요.

다음으로 RAID 상태를 확인합니다:

cat /proc/mdstat

예시 출력(원본):

root@server1:~# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda5[2] sdb5[1]
4989940 blocks super 1.2 [2/2] [UU]

md0 : active raid1 sdb1[1]
248820 blocks super 1.2 [2/1] [_U]

unused devices: 
root@server1:~#

설명: [_U]는 하나의 디스크가 아직 어레이에 추가되지 않았음을 의미합니다(결국 /dev/sda1을 추가해야 함).

3 단계 — LVM PV/VG/LV 상태 확인

LVM의 상태를 확인하여 PV가 /dev/md1을 가리키는지, VG와 LV가 정상인지 검토합니다.

pvdisplay

예시 출력:

root@server1:~# pvdisplay
--- Physical volume ---
PV Name               /dev/md1
VG Name               server1
PV Size               4.76 GiB / not usable 1012.00 KiB
Allocatable           yes (but full)
PE Size               4.00 MiB
Total PE              1218
Free PE               0
Allocated PE          1218
PV UUID               W4I07I-RT3P-DK1k-1HBz-oJvp-6in0-uQ53KS

root@server1:~#
vgdisplay

예시 출력:

root@server1:~# vgdisplay
--- Volume group ---
VG Name               server1
System ID
Format                lvm2
Metadata Areas        1
Metadata Sequence No  9
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                2
Open LV               2
Max PV                0
Cur PV                1
Act PV                1
VG Size               4.76 GiB
PE Size               4.00 MiB
Total PE              1218
Alloc PE / Size       1218 / 4.76 GiB
Free  PE / Size       0 / 0
VG UUID               m99fJX-gMl9-g2XZ-CazH-32s8-sy1Q-8JjCUW

root@server1:~#
lvdisplay

예시 출력:

root@server1:~# lvdisplay
--- Logical volume ---
LV Name                /dev/server1/root
VG Name                server1
LV UUID                8SNLPE-gHqA-a2LX-BO9o-0QQO-DV2z-3WvTYe
LV Write Access        read/write
LV Status              available
# open                 1
LV Size                4.51 GiB
Current LE             1155
Segments               1
Allocation             inherit
Read ahead sectors     auto
- currently set to     256
Block device           253:0

--- Logical volume ---
LV Name                /dev/server1/swap_1
VG Name                server1
LV UUID                kYaKtb-vkkV-TDDE-me1R-nnER-dzN8-BcVTwz
LV Write Access        read/write
LV Status              available
# open                 1
LV Size                252.00 MiB
Current LE             63
Segments               1
Allocation             inherit
Read ahead sectors     auto
- currently set to     256
Block device           253:1

root@server1:~#

확인 포인트: PV가 /dev/md1으로 설정되었고, VG와 LV 크기가 예상 범위인지 확인합니다. Free PE가 0이면 볼륨 그룹에 여유 공간이 없습니다.

4 단계 — /dev/sda1의 파티션 타입 변경

이제 /dev/sda의 파티션 타입을 Linux raid autodetect(fd)로 변경합니다.

fdisk /dev/sda

예시 대화형 로그(원본):

root@server1:~# fdisk /dev/sda

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').

Command (m for help): <-- t
Partition number (1-5): <-- 1
Hex code (type L to list codes): <-- fd
Changed system type of partition 1 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 or after you run partprobe(8) or kpartx(8)
Syncing disks.
root@server1:~#

중요: fdisk에서 파티션 테이블을 변경한 후에는 다음 중 하나를 수행하여 커널이 변경 내용을 인식하도록 합니다:

  • 시스템 재부팅
  • sudo partprobe /dev/sda (또는 kpartx 사용)

라이브 시스템에서 partprobe가 실패할 수 있으므로 재부팅 계획을 세워 수행하는 것이 가장 안전합니다.

5 단계 — /dev/sda1을 /dev/md0에 추가

파티션 타입 변경 후 /dev/sda1을 md0 어레이에 추가합니다.

mdadm --add /dev/md0 /dev/sda1

추가 후 상태 확인:

cat /proc/mdstat

예시 출력(원본):

root@server1:~# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda5[2] sdb5[1]
4989940 blocks super 1.2 [2/2] [UU]

md0 : active raid1 sda1[2] sdb1[1]
248820 blocks super 1.2 [2/2] [UU]

unused devices: 
root@server1:~#

설명: [UU]는 두 디스크 모두 어레이에 정상 상태로 연결되었음을 의미합니다.

6 단계 — mdadm 구성 파일 갱신 및 GRUB 스크립트 제거

원본 mdadm.conf를 백업에서 복원하고 현재 어레이를 스캔하여 설정에 추가합니다.

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

mdadm.conf 예시(원본):

cat /etc/mdadm/mdadm.conf
# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#

# by default, scan all partitions (/proc/partitions) for MD superblocks.
# alternatively, specify devices to scan, using wildcards if desired.
DEVICE partitions

# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes

# automatically tag new arrays as belonging to the local system
HOMEHOST 

# instruct the monitoring daemon where to send mail alerts
MAILADDR root

# definitions of existing MD arrays

# This file was auto-generated on Tue, 24 May 2011 21:11:37 +0200
# by mkconf 3.1.4-1+8efb9d1
ARRAY /dev/md/0 metadata=1.2 UUID=6cde4bf4:7ee67d24:b31e2713:18865f31 name=server1.example.com:0
ARRAY /dev/md/1 metadata=1.2 UUID=3ce9f2f2:ac89f75a:530c5ee9:0d4c67da name=server1.example.com:1

다음으로 더 이상 필요 없는 GRUB 스크립트를 삭제합니다.

rm -f /etc/grub.d/09_swraid1_setup

그리고 GRUB2 설정과 initramfs를 갱신합니다.

update-grub
update-initramfs -u

검증: /boot/grub/grub.cfg에서 ### BEGIN /etc/grub.d/10_linux ### 섹션의 menuentry들이 /dev/md0에서 부팅하도록 설정되었는지 확인합니다. 이로써 09_swraid1_setup 스크립트는 불필요해집니다.

7 단계 — GRUB2를 두 디스크에 설치하고 재부팅

마지막으로 GRUB2를 다시 한 번 양쪽 하드디스크에 설치합니다.

grub-install /dev/sda
grub-install /dev/sdb

설치 후 시스템을 재부팅합니다.

reboot

시스템이 정상적으로 RAID에서 부팅되면 작업이 완료됩니다.

검증 체크리스트 (운영 전/후)

  • /boot가 /dev/md0에 마운트되어 있는지 확인
  • cat /proc/mdstat에서 모든 어레이가 [UU] 상태인지 확인
  • /etc/mdadm/mdadm.conf에 현재 어레이 정의가 포함되어 있는지 확인
  • /boot/grub/grub.cfg에서 menuentry가 /dev/md0로 참조되는지 확인
  • grub-install이 /dev/sda와 /dev/sdb에 성공했는지 확인
  • 재부팅 후 시스템이 정상적으로 부팅되는지 확인

운영자별 역할 체크리스트

  • 시스템 관리자: 전체 작업 계획, 백업, 재부팅 일정 조정
  • 스토리지 엔지니어: mdadm 구성 및 재동기화 감시
  • 서비스 소유자: 재부팅으로 인한 서비스 영향 최소화(오프피크 유지)

문제 발생 시(대처 및 롤백)

  1. 부팅 실패 시:
    • 라이브 USB로 부팅해 /boot 파티션의 grub.cfg와 /etc/mdadm/mdadm.conf를 검사
    • grub-install을 사용해 MBR을 다시 복구
  2. 어레이 동기화 실패 또는 디스크 고장:
    • cat /proc/mdstat로 상태 확인
    • mdadm –detail /dev/md0로 상세 확인
    • 필요 시 mdadm –fail /dev/md0 /dev/sdX 및 mdadm –remove로 불량 디스크 제거
  3. 파티션 테이블 재읽기 실패(예: error 16):
    • partprobe /dev/sda 또는 kpartx -a /dev/sda 시도
    • 실패 시 계획된 재부팅으로 커널이 새로운 파티션 테이블을 읽도록 함

롤백 절차(간단):

  • GRUB 관련 변경 전 백업한 /etc/grub.d/, /etc/mdadm/mdadm.conf_orig, /boot의 파일을 복원
  • 복원 후 update-grub 및 update-initramfs -u 실행
  • 필요 시 이전 디스크의 MBR에서 부팅 복구(grub-install 이전 상태로 되돌리기 위해 백업한 MBR이 있다면 복원)

테스트 케이스 / 수용 기준

  • 수용 기준:

    • 시스템이 재부팅 후 RAID /dev/md0에서 정상적으로 부팅한다.
    • /proc/mdstat의 모든 관련 어레이가 [UU] 상태이다.
    • /etc/mdadm/mdadm.conf에 ARRAY 항목이 존재한다.
    • /boot/grub/grub.cfg의 menuentry들이 /dev/md0를 가리키거나 적절한 UUID를 사용한다.
  • 테스트 케이스:

    1. 정상 재부팅 테스트: 재부팅 후 시스템이 정상적으로 부팅되는가?
    2. 디스크 비정상 시나리오: 한 디스크를 제거(또는 오프라인)하고 시스템이 부팅되는가?
    3. 재동기화 테스트: 제거한 디스크를 다시 추가하고 mdadm이 동기화하는가?

대안 및 고려사항

  • UEFI 시스템이라면 /boot/efi 파티션과 grub-install –target=x86_64-efi, efibootmgr를 사용해야 합니다.
  • 물리적 디스크가 아닌 가상환경에서는 가상 디스크 UUID/식별자 변화에 주의하세요.
  • RAID1 대신 RAID10/RAID5를 선택할 경우 부팅 파티션을 어떻게 구성할지 설계가 필요합니다.

의사결정 흐름(간단)

flowchart TD
  A[시스템: LVM + RAID 실행 중] --> B{/boot가 /dev/md0에 마운트되어 있나}
  B -- 예 --> C[파티션 타입 변경'fd' 실행]
  B -- 아니오 --> D[우선 /boot를 RAID로 옮기는 작업 수행]
  C --> E[/dev/sda1을 /dev/md0에 추가]
  E --> F[mdadm.conf 갱신]
  F --> G[GRUB 스크립트 삭제 및 update-initramfs]
  G --> H[grub-install /dev/sda 및 /dev/sdb]
  H --> I[재부팅 및 검증]
  D --> I

보안 및 개인정보 주의사항

  • GRUB 패스워드나 암호화된 루트fs를 사용하는 경우 initramfs와 grub 설정에 관련 비밀이 노출되지 않도록 주의하세요.

요약 정리

  • /dev/sda의 파티션 타입을 fd로 변경하고 /dev/sda1을 /dev/md0에 추가한다.
  • mdadm.conf를 갱신하고 불필요한 GRUB 스크립트를 제거한 뒤 initramfs와 grub 설정을 갱신한다.
  • GRUB을 양쪽 디스크에 설치하고 재부팅하여 정상 부팅을 확인하면 작업이 완료된다.

요약: 위 절차를 따르면 실행 중인 LVM 시스템에서 부트 파티션을 RAID1로 안정적으로 구성하고 GRUB2를 양 디스크에 설치해 단일 디스크 고장 시에도 부팅이 유지되도록 할 수 있습니다.

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

유사한 자료

클라우드 없이 컴퓨터 간 파일 동기화 방법
파일 동기화

클라우드 없이 컴퓨터 간 파일 동기화 방법

Hogwarts Legacy PC 충돌 해결 가이드
게임

Hogwarts Legacy PC 충돌 해결 가이드

PC 조립 마무리 가이드 — 시동과 문제해결
하드웨어

PC 조립 마무리 가이드 — 시동과 문제해결

Paxful에서 Payoneer로 비트코인 구매 가이드
암호화폐

Paxful에서 Payoneer로 비트코인 구매 가이드

실행 중인 LVM에서 RAID1 및 GRUB2 설치 가이드
시스템

실행 중인 LVM에서 RAID1 및 GRUB2 설치 가이드

Android에서 내부 저장소를 SD 카드로 교체하는 방법
안드로이드

Android에서 내부 저장소를 SD 카드로 교체하는 방법