기술 가이드

RAID1 하드 드라이브 교체 및 복구 가이드

5 min read 시스템 관리 업데이트됨 28 Sep 2025
RAID1 하드 드라이브 교체 및 복구 가이드
RAID1 하드 드라이브 교체 및 복구 가이드

개요

이 문서는 소프트웨어 RAID1(미러) 환경에서 하드 드라이브 장애를 시뮬레이션하고, 장애 디스크를 교체한 뒤 어레이를 복구하는 단계별 절차와 검증 방법을 설명합니다. 예시에서는 /dev/sdb가 실패한 것으로 가정하지만, /dev/sda가 실패한 경우에도 같은 절차를 적용하면 됩니다.

중요 용어 한 줄 요약:

  • RAID1: 두 개 이상의 디스크에 동일한 데이터를 유지하는 미러링 방식.
  • mdadm: 리눅스 소프트웨어 RAID를 관리하는 도구.

절차 개요

  1. 장애 디스크를 실패로 표시하고 제거(또는 물리적 제거).
  2. 시스템 재부팅 후 상태 확인(/proc/mdstat).
  3. 새 디스크에 기존 디스크의 파티션 테이블 복사(sfdisk).
  4. 이전 RAID 정보 제거(mdadm –zero-superblock).
  5. 새 파티션을 어레이에 추가(mdadm -a).
  6. 동기화 완료 대기 및 확인.
  7. 양쪽 디스크에 부트로더 설치(grub).

1. 장애 시뮬레이션

어떤 디스크(/dev/sda 또는 /dev/sdb)를 실패로 표시해도 절차는 동일합니다. 예시에서는 /dev/sdb가 실패한 것으로 가정합니다.

소프트로 디스크를 실패로 표시하고 제거하려면:

mdadm --manage /dev/md0 --fail /dev/sdb1
mdadm --manage /dev/md1 --fail /dev/sdb2

mdadm --manage /dev/md0 --remove /dev/sdb1
mdadm --manage /dev/md1 --remove /dev/sdb2

또는 물리적으로 시스템을 종료하고 디스크를 제거할 수 있습니다. 시스템 종료 명령 예:

shutdown -h now

그 후 새 디스크를 장착하고 부팅합니다. (만약 /dev/sda를 실패로 시뮬레이션했다면 새 HDD를 /dev/sda 위치에 넣고 이전 /dev/sdb를 /dev/sda로 옮기지 마세요: 장치 이름은 커널에 의해 할당됩니다. 하드웨어/BIOS 연결 순서에 유의하세요.)

2. 상태 확인: /proc/mdstat

부팅한 뒤 어레이 상태를 확인합니다:

cat /proc/mdstat

예시 출력:

[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda1[0]
104320 blocks [2/1] [U_]

md1 : active raid1 sda2[0]
10377920 blocks [2/1] [U_]

unused devices: 
[root@server1 ~]#

출력 해석: [U_] 는 하나의 디스크만 활성화되어 어레이가 degraded 상태임을 의미합니다.

3. 디스크 파티션 테이블 확인

fdisk로 디스크와 파티션 정보를 확인합니다:

fdisk -l

예시 출력(원본 유지):

[root@server1 ~]# fdisk -l

Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   fd  Linux raid autodetect
/dev/sda2             14        1305    10377990   fd  Linux raid autodetect

Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdb doesn't contain a valid partition table

Disk /dev/md1: 10.6 GB, 10626990080 bytes
2 heads, 4 sectors/track, 2594480 cylinders
Units = cylinders of 8 * 512 = 4096 bytes

Disk /dev/md1 doesn't contain a valid partition table

Disk /dev/md0: 106 MB, 106823680 bytes
2 heads, 4 sectors/track, 26080 cylinders
Units = cylinders of 8 * 512 = 4096 bytes

Disk /dev/md0 doesn't contain a valid partition table
[root@server1 ~]#

여기서 /dev/sdb는 파티션 테이블이 없으므로 /dev/sda의 파티션 테이블을 복사해야 합니다.

4. 파티션 테이블 복사 (sfdisk)

기존 정상 디스크(/dev/sda)의 파티션 테이블을 새 디스크(/dev/sdb)에 복사합니다:

sfdisk -d /dev/sda | sfdisk /dev/sdb

오류가 발생하면 –force 옵션을 시도할 수 있습니다:

sfdisk -d /dev/sda | sfdisk --force /dev/sdb

예시 출력(원본 유지):

[root@server1 ~]# sfdisk -d /dev/sda | sfdisk /dev/sdb
Checking that no-one is using this disk right now ...
OK

Disk /dev/sdb: 1305 cylinders, 255 heads, 63 sectors/track

sfdisk: ERROR: sector 0 does not have an msdos signature
/dev/sdb: unrecognized partition table type
Old situation:
No partitions found
New situation:
Units = sectors of 512 bytes, counting from 0

Device Boot    Start       End   #sectors  Id  System
/dev/sdb1   *        63    208844     208782  fd  Linux raid autodetect
/dev/sdb2        208845  20964824   20755980  fd  Linux raid autodetect
/dev/sdb3             0         -          0   0  Empty
/dev/sdb4             0         -          0   0  Empty
Successfully wrote the new partition table

Re-reading the partition table ...

If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes:  dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
[root@server1 ~]#

주의: 일부 시스템에서는 sector 0 시그니처 관련 경고가 출력될 수 있으나 파티션 테이블 복사는 성공할 수 있습니다. 필요하면 –force 사용을 검토하세요.

5. 이전 RAID 잔재 제거 및 어레이에 추가

이전 RAID superblock 정보가 남아 있을 수 있으므로 이를 제거합니다:

mdadm --zero-superblock /dev/sdb1
mdadm --zero-superblock /dev/sdb2

그런 다음 새 파티션을 어레이에 추가합니다:

mdadm -a /dev/md0 /dev/sdb1
mdadm -a /dev/md1 /dev/sdb2

추가 후 상태 확인:

cat /proc/mdstat

예시 출력(부분 유지):

[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[1] sda1[0]
104320 blocks [2/2] [UU]

md1 : active raid1 sdb2[2] sda2[0]
10377920 blocks [2/1] [U_]
[======>..............]  recovery = 32.3% (3360768/10377920) finish=1.5min speed=74238K/sec

unused devices: 
[root@server1 ~]#

여기서는 md0이 이미 OK([UU])인 반면 md1이 복구 중임을 볼 수 있습니다.

6. 동기화 완료 대기 및 확인

동기화(리빌드)가 완료될 때까지 기다립니다. 완료되면 모든 어레이가 [UU] 상태가 되어야 합니다:

cat /proc/mdstat

완료 예시:

[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[1] sda1[0]
104320 blocks [2/2] [UU]

md1 : active raid1 sdb2[1] sda2[0]
10377920 blocks [2/2] [UU]

unused devices: 
[root@server1 ~]#

검증 포인트: 모든 미러 디바이스가 [UU]인지 확인하세요. 하나라도 언더 스코어(_)가 남아 있으면 동기화가 완료되지 않은 상태입니다.

7. 부트로더 설치

루트 권한에서 grub을 실행하고 양 디스크에 부트로더를 설치합니다. 예시 대화형 순서:

grub

grub 프롬프트에서:

root (hd0,0)
setup (hd0)
root (hd1,0)
setup (hd1)
quit

이로써 두 디스크 모두에서 부팅 가능하도록 부트로더가 설치됩니다.

검증 및 완료

  • 시스템을 재부팅하여 정상적으로 부팅되는지 확인합니다.
  • /proc/mdstat가 모든 어레이에서 [UU] 상태를 보이면 복구가 성공한 것입니다.

중요: 실제 운영 환경에서는 물리적 SSD/HDD의 모델과 펌웨어, 파티션 정렬(예: GPT/MBR), BIOS/UEFI 설정, 부트 모드(legacy/UEFI)를 반드시 확인하세요. 이 요소들이 맞지 않으면 grub 설치 또는 디스크 인식에서 문제가 발생할 수 있습니다.

문제 해결 요령

  • 파티션 복사 중 “sector 0 does not have an msdos signature” 경고가 나오면 –force로 재시도하거나 dd로 섹터 클리어 후 다시 시도합니다.
  • 다른 디스크 크기 차이: 대상 디스크가 원본보다 작으면 파티션 복사가 실패합니다. 이 경우 대상 디스크 용량을 확인하고 크기가 충분한지 확인하세요.
  • 동기화 속도가 느리면 I/O 부하, 컨트롤러 성능, 스케줄러/IO 스케줄러 영향이 있을 수 있습니다. 업무 시간 외에 작업을 수행하거나 복구 속도를 조절하세요.

역할 기반 체크리스트

  • 운영자(현장):

    • 장애 디스크 식별 및 물리 식별 태그 확인
    • 디스크 핫스왑(가능 시) 또는 전원 차단 및 교체
    • 새 디스크 연결 확인
  • 시스템 관리자:

    • mdadm로 fail/remove 처리
    • 파티션 테이블 복사 및 superblock 제거
    • 어레이에 추가 후 동기화 모니터링
    • grub 재설치 및 부팅 검증

체크리스트(한눈에 보기)

  • 장애 디스크를 mdadm으로 fail 표시함
  • 장애 디스크를 mdadm에서 remove 함
  • 시스템 재부팅 후 /proc/mdstat 확인
  • sfdisk로 파티션 테이블 복사 성공
  • mdadm –zero-superblock로 잔재 제거
  • mdadm -a로 파티션 추가
  • /proc/mdstat에서 동기화 완료([UU]) 확인
  • grub을 양 디스크에 설치
  • 최종 재부팅 및 정상 서비스 확인

수명주기 및 대안

  • 대안: RAID1 대신 RAID10을 사용하면 읽기 성능과 일부 장애 허용성에서 장점이 있습니다(설계 고려 필요).
  • 확장성: RAID1은 가용성과 단순성에서 장점이 있지만 저장 용량 효율은 낮습니다(복제본이 필요한 만큼 용량 소모).

간단한 의사결정 흐름 (Mermaid)

flowchart TD
  A[디스크 장애 감지] --> B{디스크가 물리적으로 손상되었나?}
  B -- 예 --> C[운영자: 물리 교체]
  B -- 아니요 --> D[소프트웨어로 fail/replace]
  C --> E[시스템 부팅 및 상태 확인]
  D --> E
  E --> F{파티션 테이블 있나?}
  F -- 예 --> G[mdadm --zero-superblock 후 mdadm -a]
  F -- 아니요 --> H[sfdisk로 파티션 복사 후 mdadm -a]
  G --> I[동기화 확인]
  H --> I
  I --> J{[UU] 상태?}
  J -- 예 --> K[grub 설치 및 재부팅]
  J -- 아니요 --> L[문제해결: 로그 확인 및 재시도]

수용 기준

  • 모든 md 디바이스가 /proc/mdstat에서 [UU]를 표시해야 함.
  • 시스템이 두 디스크 중 어느 하나가 없어도 부팅 및 서비스가 정상 동작해야 함.
  • 부트로더가 양쪽 디스크에 설치되어 있어야 함.

테스트 케이스(검증 항목)

  • 시나리오 1: /dev/sdb를 실패로 표시하고 제거한 후 새 디스크로 교체하여 동기화 완료 확인.
  • 시나리오 2: 파티션 복사 실패 시 –force 옵션 사용 후 재시도 및 동작 확인.
  • 시나리오 3: grub가 한 쪽 디스크에만 설치된 상태에서 해당 디스크를 제거했을 때 부팅 실패 재현 및 복구.

요약

이 가이드는 RAID1 어레이에서 하드 드라이브를 교체하고 복구하는 전체 절차를 설명합니다. 핵심은 파티션 테이블을 정확하게 복사하고 기존의 RAID 메타데이터를 제거한 뒤 어레이에 새 파티션을 추가하여 동기화가 완료될 때까지 기다리는 것입니다. 마지막으로 부트로더를 두 디스크 모두에 설치해 부팅 내구성을 확보해야 합니다.

중요: 프로덕션 환경에서는 작업 전에 백업을 확인하고 유지보수 창을 확보하세요.

참고 링크

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

유사한 자료

Tumblr에 Pnyxe 포럼 추가하는 방법
블로그

Tumblr에 Pnyxe 포럼 추가하는 방법

Android에서 Dropbox 사용법 — 파일 공유·업로드 가이드
가이드

Android에서 Dropbox 사용법 — 파일 공유·업로드 가이드

Windows 10에서 Android APK 실행하기 — 3가지 방법
안드로이드

Windows 10에서 Android APK 실행하기 — 3가지 방법

Gemini 채팅 메모리 끄기 및 개인정보 관리
개인정보

Gemini 채팅 메모리 끄기 및 개인정보 관리

Almowafir으로 두바이 쇼핑 할인 받는 법
쇼핑

Almowafir으로 두바이 쇼핑 할인 받는 법

RAID1 하드 드라이브 교체 및 복구 가이드
시스템 관리

RAID1 하드 드라이브 교체 및 복구 가이드