기술 가이드

RAID1 드라이브 교체 테스트 및 복구

4 min read 시스템관리 업데이트됨 10 Oct 2025
RAID1 드라이브 교체 테스트 및 복구 가이드
RAID1 드라이브 교체 테스트 및 복구 가이드

개요

이 문서는 RAID1(미러) 배열에서 하드디스크 고장을 시뮬레이션하고, 새 드라이브로 교체하여 정상 상태로 복구하는 과정을 설명합니다. 정의: RAID1 — 두 개 이상의 디스크에 데이터를 동일하게 저장해 한 디스크가 고장나도 시스템이 동작하도록 하는 미러링 방식.

중요: 본 예제에서는 /dev/sdb가 고장난 것으로 가정합니다. 실제 환경에서는 대상 디스크 이름(/dev/sda 또는 /dev/sdb 등)을 정확히 확인한 후 명령을 실행하세요.

준비: 무엇을 확인해야 하나요

  • 현재 RAID 상태 확인: cat /proc/mdstat
  • 파티션 정보 확인: fdisk -l
  • 관리자 권한(root) 필요
  • 새 물리 디스크는 빈 상태여야 하며 기존 디스크와 동일하거나 더 큰 용량 권장

중요: 잘못된 디스크에 명령을 실행하면 데이터가 손실될 수 있습니다. 항상 디스크 식별자(dev path)를 두 번 확인하세요.

1단계 — 고장 시뮬레이션

디스크를 물리적으로 제거하거나 소프트웨어적으로 제거(fail + remove)할 수 있습니다. 아래 예시는 소프트 제거 방법입니다. 대상이 /dev/sdb인 경우:

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

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

시스템을 종료하려면:

shutdown -h now

물리 디스크를 교체한 후 시스템을 부팅하면 정상적으로 시작해야 합니다.

2단계 — 디스크 제거 후 상태 확인

부팅 후 RAID 상태 확인:

cat /proc/mdstat

예상되는 degraded(저하) 상태 출력 예시:

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

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

md2 : active raid1 sda3[0]
 9759360 blocks [2/1] [U_]

unused devices: 
[root@server1 ~]#

파티션 정보 확인:

fdisk -l

(원본 예시 출력을 참조하여 /dev/sdb에 파티션 테이블이 없는 상태를 확인합니다.)

3단계 — 파티션 테이블 복사

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

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

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

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

성공 시 출력 예시:

Successfully wrote the new partition table
Re-reading the partition table ...

참고: sfdisk가 섹터 서명(msdos signature) 관련 경고를 낼 수 있으나, 파티션이 정상적으로 생성되면 다음 단계로 진행합니다.

4단계 — 이전 RAID 잔재 제거

이전 RAID 슈퍼블록이 남아 있을 수 있으므로 새 파티션에서 제거합니다:

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

5단계 — 새 디스크를 RAID에 추가하고 동기화 시작

파티션을 RAID 장치에 추가합니다:

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

동기화(리빌드)가 자동으로 시작됩니다. 상태 확인:

cat /proc/mdstat

동기화 진행 예시:

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

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

md2 : active raid1 sdb3[2] sda3[0]
 9759360 blocks [2/1] [U_]
  [=======>.............]  recovery = 39.4% (3846400/9759360) finish=1.7min speed=55890K/sec

unused devices: 
[root@server1 ~]#

완료되면 모든 mdX 라인에서 [UU] 상태가 되어야 합니다.

6단계 — 부트로더 설치

GRUB을 실행하여 두 하드디스크(예: hd0, hd1)에 부트로더를 설치합니다.

grub

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

이로써 RAID1에서 실패한 드라이브를 교체하고 시스템을 정상 상태로 복구했습니다.

검증 기준

  • /proc/mdstat에서 모든 배열이 [UU]로 표시되고 recovery가 없음
  • fdisk -l에서 두 물리 디스크의 파티션 테이블이 동일함
  • 시스템 재부팅 후 OS가 정상적으로 기동됨
  • 부트로더가 양쪽 디스크에 설치되어 한 디스크가 사라져도 부팅 가능

운영자용 단계별 체크리스트

  1. (사전) 중요 데이터 백업 및 스냅샷 생성
  2. RAID 상태 확인: cat /proc/mdstat
  3. 실패 디스크 확인: lsblk, fdisk -l
  4. 실패 시 물리/소프트 제거: mdadm –manage … –fail/–remove
  5. 시스템 종료(필요 시) 및 디스크 교체
  6. sfdisk로 파티션 복사
  7. mdadm –zero-superblock로 슈퍼블록 정리
  8. mdadm -a로 디스크 추가 및 동기화 확인
  9. grub으로 부트로더 설치
  10. 복구 완료 후 롤백/문서화 (교체 일자, 시리얼, 원인 분석)

문제 해결: 흔한 오류와 해결 방법

  • sfdisk: ERROR: sector 0 does not have an msdos signature

    • 설명: 대상 디스크에 파티션 테이블이 없거나 손상됨. 보통 –force 옵션으로 덮어 쓸 수 있음.
    • 조치: sfdisk -d /dev/sda | sfdisk –force /dev/sdb
  • mdadm이 디스크를 추가하지 않음

    • 설명: 파티션 유형(Id)이 올바르게 설정되지 않았거나 슈퍼블록 잔여물이 있음.
    • 조치: fdisk로 파티션 타입(fd) 확인, mdadm –zero-superblock으로 잔여 슈퍼블록 제거
  • 동기화 속도가 매우 느림

    • 설명: I/O 부하 또는 sysctl의 RAID 속도 제한
    • 조치: /proc/sys/dev/raid/speed_limit_min 및 speed_limit_max 조정(신중히)
  • 부팅 불가(한 디스크만으로 부팅 시)

    • 설명: 부트로더가 다른 디스크에 설치되지 않았음.
    • 조치: grub으로 양쪽 디스크에 setup 수행

롤백/인시던트 기록 권장 항목

  • 교체 일시(UTC 또는 로컬 시간)
  • 실패한 디스크 장치명 및 시리얼
  • 교체한 새 디스크 장치명 및 시리얼
  • mdadm 및 sfdisk 출력 로그(명령과 결과)
  • 동기화 소요 시간 및 평균 속도
  • 재부팅 여부 및 결과

의사결정 흐름(간단한 플로우)

flowchart TD
  A[디스크 장애 탐지] --> B{디스크 완전 고장?}
  B -- 예 --> C[시스템 종료 후 물리 교체]
  B -- 아니오 --> D[소프트 제거'fail/remove']
  C --> E[새 디스크 삽입]
  D --> E
  E --> F[파티션 복사'sfdisk']
  F --> G[슈퍼블록 제거'mdadm --zero-superblock']
  G --> H[디스크 추가'mdadm -a']
  H --> I[동기화 모니터링'cat /proc/mdstat']
  I --> J[부트로더 설치 및 검증]
  J --> K[완료 및 문서화]

검토: 언제 이 방법이 실패할 수 있나

  • 원본 디스크(/dev/sda)가 손상되어 파티션 테이블을 읽을 수 없는 경우 파티션 복사가 불가능합니다. 이때는 백업에서 복원하거나 수동으로 파티션을 생성하고 파일시스템을 복원해야 합니다.
  • 두 디스크가 동시에 손상되는 경우 RAID1로도 데이터 복구가 불가능할 수 있습니다.

보안 및 개인정보 주의

  • 실환경에서 디스크를 조작할 때는 민감한 로그나 키파일이 포함되어 있지 않은지 확인하세요. 디스크를 폐기할 때는 안전하게 Wipe(초기화) 처리해야 합니다.

1줄 용어집

  • mdadm: 리눅스 소프트웨어 RAID 관리 도구
  • /proc/mdstat: 커널이 보고하는 RAID 상태 파일
  • sfdisk: 파티션 테이블을 덤프/복원하는 도구
  • superblock(슈퍼블록): mdadm이 파티션에 쓰는 RAID 메타데이터

링크

요약

  • RAID1에서 디스크 고장을 시뮬레이션하고 새 디스크를 추가하려면, 파티션 테이블 복사 -> 슈퍼블록 제거 -> mdadm으로 재추가 -> 동기화 모니터링 -> 부트로더 재설치 순으로 진행합니다.
  • 각 단계에서 출력과 상태를 확인하고, 모든 배열이 [UU]로 표시되는지 검증해야 합니다.
  • 교체 작업 후 반드시 문서화하여 향후 문제 분석에 활용하세요.
공유하기: X/Twitter Facebook LinkedIn Telegram
저자
편집

유사한 자료

Vivaldi 스피드 다이얼 크기 변경 방법
브라우저 팁

Vivaldi 스피드 다이얼 크기 변경 방법

루팅 안드로이드에서 Google Pay 사용하는 방법
모바일

루팅 안드로이드에서 Google Pay 사용하는 방법

포켓몬 GO 조이스틱 사용법: MocPOGO 안전 가이드
Gaming

포켓몬 GO 조이스틱 사용법: MocPOGO 안전 가이드

RAID 배열 생성 및 /boot 마이그레이션
시스템 관리

RAID 배열 생성 및 /boot 마이그레이션

Intune: 조직 데이터 붙여넣기 오류 해결
문제 해결

Intune: 조직 데이터 붙여넣기 오류 해결

Windows 검색에서 폴더 제외 및 숨기는 방법
Windows 팁

Windows 검색에서 폴더 제외 및 숨기는 방법