Fedora 8에서 RAID1으로 /dev/sda 준비하기 및 GRUB 업데이트
준비 확인
먼저 현재 파일시스템과 소프트웨어 RAID 상태를 확인합니다. 다음 명령은 루트와 부트 파티션의 마운트를 보여줍니다:
df -h
출력 예시(변경하지 마십시오):
[root@server1 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/md2 4.4G 2.4G 1.8G 58% /
/dev/md0 99M 15M 80M 16% /boot
tmpfs 185M 0 185M 0% /dev/shm
[root@server1 ~]#
그리고 소프트웨어 RAID 상태는 다음으로 확인합니다:
cat /proc/mdstat
출력 예시:
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md0 : active raid1 sdb1[1]
104320 blocks [2/1] [_U]
md1 : active raid1 sdb2[1]
513984 blocks [2/1] [_U]
md2 : active raid1 sdb3[1]
4618560 blocks [2/1] [_U]
unused devices:
[root@server1 ~]#
위 상태에서 /dev/sda의 파티션 타입을 변경하고, /dev/sdaN 파티션을 각 md 장치에 추가하는 것이 목표입니다.
1) /dev/sda 파티션 타입을 Linux raid autodetect로 변경
fdisk로 /dev/sda를 열어 각 파티션의 타입을 fd(Linux raid autodetect)로 바꿉니다. 순서대로 1, 2, 3 파티션을 변경하세요.
fdisk /dev/sda
예시 상호작용(입력은 <– 뒤에 표시된 값):
[root@server1 ~]# fdisk /dev/sda
Command (m for help): <-- t
Partition number (1-4): <-- 1
Hex code (type L to list codes): <-- fd
Changed system type of partition 1 to fd (Linux raid autodetect)
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): <-- t
Partition number (1-4): <-- 3
Hex code (type L to list codes): <-- fd
Changed system type of partition 3 to fd (Linux raid autodetect)
Command (m for help): <-- w
The partition table has been altered!
시스템이 파티션 테이블을 다시 읽도록 ioctl 호출과 디스크 동기화 메시지가 나타납니다.
Calling ioctl() to re-read partition table.
Syncing disks.
[root@server1 ~]#
중요: 운영 중인 시스템에서 파티션 테이블을 변경하면, 드라이브가 사용 중일 경우 위험이 있으므로 변경 전에 백업과 유효성 검사를 권장합니다.
2) /dev/sdaN을 RAID에 추가
각 파티션을 해당 md 레이드에 추가합니다:
mdadm --add /dev/md0 /dev/sda1
mdadm --add /dev/md1 /dev/sda2
mdadm --add /dev/md2 /dev/sda3
추가 후 /proc/mdstat를 확인하면 동기화(recovery)가 시작된 것을 볼 수 있습니다:
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md0 : active raid1 sda1[0] sdb1[1]
104320 blocks [2/2] [UU]
md1 : active raid1 sda2[0] sdb2[1]
513984 blocks [2/2] [UU]
md2 : active raid1 sda3[2] sdb3[1]
4618560 blocks [2/1] [_U]
[=====>...............] recovery = 29.9% (1384256/4618560) finish=2.3min speed=22626K/sec
unused devices:
[root@server1 ~]#
실시간 모니터링을 원하면 다음을 사용하세요:
watch cat /proc/mdstat
watch에서 나오려면 Ctrl+C를 누릅니다.
3) 동기화 완료 확인
동기화가 끝나면 /proc/mdstat 출력이 모두 [UU] 상태로 바뀝니다:
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md0 : active raid1 sda1[0] sdb1[1]
104320 blocks [2/2] [UU]
md1 : active raid1 sda2[0] sdb2[1]
513984 blocks [2/2] [UU]
md2 : active raid1 sda3[0] sdb3[1]
4618560 blocks [2/2] [UU]
unused devices:
[root@server1 ~]#
4) /etc/mdadm.conf 업데이트
RAID 메타데이터를 기반으로 mdadm 설정을 다시 생성합니다:
mdadm --examine --scan > /etc/mdadm.conf
생성된 /etc/mdadm.conf는 배열 정의(ARRAY …)를 포함하게 됩니다. 예시:
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=2848a3f5:cd1c26b6:e762ed83:696752f9
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=8a004bac:92261691:227767de:4adf6592
ARRAY /dev/md2 level=raid1 num-devices=2 UUID=939f1c71:be9c10fd:d9e5f8c6:a46bcd49
중요: 부팅 시 mdadm가 올바른 장치를 조립하려면 이 파일이 부팅 환경에 반영되어야 합니다.
5) GRUB 설정 준비 및 수정
부팅 로더가 기존에 /dev/sdb(hd1)에서만 부팅하도록 설정되어 있으면 /dev/sdb 장애 시 부팅 불가 상태가 됩니다. /boot/grub/menu.lst(또는 /boot/grub/grub.conf)를 열어 첫 커널 스탠자를 복사해 hd1을 hd0으로 바꿔 추가합니다. 나머지 커널 스탠자는 주석 처리해 기본과 fallback 엔트리를 확보하세요.
예시 파일 편집:
vi /boot/grub/menu.lst
(파일 내용 예시 — 그대로 유지)
# 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 Fedora (2.6.23.1-42.fc8)
root (hd1,0)
kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/md2 rhgb quiet
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/md2 rhgb quiet
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=LABEL=/ rhgb quiet
# initrd /initrd-2.6.23.1-42.fc8.img
이렇게 하면 첫 번째 항목이 hd1(원래 부트 디스크)에서 부팅하고, 두 번째 항목은 hd0(새 디스크)에서 부팅하도록 설정됩니다. 둘 다 동일한 커널과 initrd를 가리켜야 합니다.
6) initrd(램디스크) 업데이트 및 재부팅
현재 커널의 initrd를 백업하고 재생성한 뒤 시스템을 재부팅합니다:
mv /boot/initrd-`uname -r`.img /boot/initrd-`uname -r`.img_orig2
mkinitrd /boot/initrd-`uname -r`.img `uname -r`
재부팅:
reboot
정상적으로 부팅되면 작업이 완료된 것입니다.
점검 체크리스트
- /proc/mdstat에서 모든 md 장치가 [UU] 상태인지 확인
- /etc/mdadm.conf가 새 ARRAY 라인을 포함하는지 확인
- /boot/grub/menu.lst 또는 grub.conf에 hd0, hd1 모두에 대한 부팅 엔트리가 있는지 확인
- mkinitrd로 재생성한 initrd가 /boot에 존재하는지 확인
- 재부팅 후 콘솔에서 부팅 장치가 올바르게 선택되는지 확인
대안 및 실패 시 대처
- 만약 파티션 표 변경 중 문제가 발생하면 즉시 변경 전 백업을 복원하세요. 라이브 USB를 사용해 시스템을 오프라인 상태에서 복구할 수 있습니다.
- GRUB이 부팅하지 않으면 복구 콘솔에서 GRUB 설치(예: grub-install)를 다시 실행하거나 BIOS 부팅 순서를 확인하세요.
- RAID 동기화가 느리거나 중지되면 syslog(/var/log/messages)와 dmesg를 확인해 디스크 오류 여부를 점검하세요.
간단 용어
- mdadm: 리눅스 소프트웨어 RAID를 관리하는 도구(어셈블, 추가, 모니터링 등에 사용).
- initrd: 커널이 초기 부팅 시 사용하는 초기 램디스크 이미지.
- hd0/hd1: GRUB에서의 디스크 인덱스(hd0 = 첫번째 BIOS 디스크).
요약
이 가이드는 실행 중인 Fedora 8 시스템에 대해 /dev/sda의 파티션 타입을 RAID로 변경하고, 해당 파티션들을 md 디바이스에 추가해 동기화를 진행한 뒤 mdadm 설정과 GRUB을 업데이트해서 이중 부팅 가능한 RAID1 구성을 완성하는 절차를 설명합니다.
요약 체크포인트:
- 파티션 타입을 fd로 변경
- mdadm –add로 파티션을 RAID에 추가
- 동기화 완료 후 /etc/mdadm.conf 갱신
- GRUB에 hd0 엔트리 추가 및 initrd 재생성
- 재부팅 후 정상 부팅 확인
중요: 생산 환경 변경 전 전체 백업을 권장합니다.