기술 가이드

RAID1에서 고장난 하드 드라이브 교체 및 테스트

5 min read 스토리지 업데이트됨 11 Oct 2025
RAID1 하드 드라이브 교체 및 테스트 가이드
RAID1 하드 드라이브 교체 및 테스트 가이드

개요

이 문서는 소프트웨어 RAID1 환경에서 고장난 하드 드라이브를 교체하고 테스트하는 구체적 절차를 제공합니다. 예제에서는 /dev/sdb가 고장난 것으로 가정하지만, /dev/sda가 고장난 경우에도 동일한 절차로 진행하면 됩니다. 명령어, 예상 출력, 주의사항, 문제 해결 팁, 체크리스트와 의사결정 흐름도를 포함합니다.

Important: 실제 시스템에서 작업하기 전에 항상 전체 백업을 준비하세요. RAID는 가용성을 높이지만 백업을 대체하지 않습니다.

준비용어(한 줄 정의)

  • mdadm: 리눅스 소프트웨어 RAID 관리를 위한 도구입니다.
  • sfdisk: 파티션 테이블을 덤프하거나 쓰기 위한 유틸리티입니다.
  • grub-install: GRUB 부트로더를 디스크에 설치하는 명령입니다.

1 단계 — 고장 시뮬레이션

고장 시뮬레이션은 물리적으로 드라이브를 제거하거나 소프트웨어로 드라이브를 실패 처리할 수 있습니다. 어느 디스크를 실패로 처리하든지, 나중에 동일한 논리적 절차로 교체하면 됩니다.

소프트웨어로 제거(예시: /dev/sdb가 실패한 경우):

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

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

그 다음 시스템을 종료합니다:

shutdown -h now

물리적인 교체를 시뮬레이션하는 경우, 시스템을 끄고 고장난 드라이브를 빼고 새 드라이브를 넣은 뒤 부팅합니다. 소프트 리무브(위 명령)로 시뮬레이트했다면 드라이브를 그대로 분리하거나 물리적으로 교체한 뒤 재부팅합니다.

중요: 고장난 드라이브가 /dev/sda인지 /dev/sdb인지에 따라 새 디스크를 어떤 장치로 연결할지 주의하십시오. 예: /dev/sda를 실패로 시뮬레이션했다면, 기존 /dev/sdb를 /dev/sda 자리로 옮기지 말고 새로운 디스크를 적절한 장치명으로 연결하세요.

2 단계 — 상태 확인

부팅 후 배열이 degraded(감소) 상태인지 확인합니다.

cat /proc/mdstat

예시 출력:

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

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

unused devices: 
root@server1:~#

또한 현재 디스크와 파티션 정보를 확인합니다:

fdisk -l

(원문 예시 출력이 길게 제공되어 있으므로 실제 시스템 출력과 비교하세요.)

Note: /proc/mdstat의 [U] 표시는 각 장치의 상태(UP 또는 실패)를 나타냅니다. [U]는 하나의 미러가 빠졌음을 의미합니다.

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

정상인 디스크(/dev/sda)의 파티션 테이블을 새 디스크(/dev/sdb)로 복사합니다. sfdisk를 사용하면 기존 파티션 레이아웃을 정확히 복제할 수 있습니다.

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

예시 상호작용:

root@server1:~# sfdisk -d /dev/sda | sfdisk --force /dev/sdb
Checking that no-one is using this disk right now ...
Warning: extended partition does not start at a cylinder boundary.
DOS and Linux will interpret the contents differently.
OK

Disk /dev/sdb: 652 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   *      2048    499711     497664  fd  Linux raid autodetect
/dev/sdb2        501758  10483711    9981954   5  Extended
/dev/sdb3             0         -          0   0  Empty
/dev/sdb4             0         -          0   0  Empty
/dev/sdb5        501760  10483711    9981952  fd  Linux raid autodetect
Warning: partition 1 does not end at a cylinder boundary
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:~#

주의: sfdisk 경고 메시지가 보일 수 있으나, 출력에 따라 파티션이 정상적으로 쓰였는지 확인하세요. 새로운 디스크의 파티션 테이블이 정상적으로 작성되었는지 fdisk -l로 재확인합니다.

4 단계 — 이전 RAID 잔여 정보 제거

새 디스크에 이전 RAID 정보가 남아 있을 수 있으므로 슈퍼블록을 초기화합니다.

mdadm --zero-superblock /dev/sdb1
mdadm --zero-superblock /dev/sdb5

이 단계는 mdadm이 해당 파티션을 새로운 구성요소로 인식하게 합니다.

5 단계 — 디스크를 RAID에 추가

초기화가 끝나면 새 파티션을 RAID에 추가합니다.

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

추가한 뒤 상태를 확인하세요:

cat /proc/mdstat

예시 동기화 중 출력:

root@server1:~# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdb5[3] sda5[2]
4989940 blocks super 1.2 [2/1] [U_]
[========>............]  recovery = 44.7% (2233024/4989940) finish=0.2min speed=159501K/sec

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

unused devices: 
root@server1:~#

동기화가 완료될 때까지 기다리십시오. 완료 후 /proc/mdstat에는 [UU]로 표시됩니다.

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

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

unused devices: 
root@server1:~#

6 단계 — 부트로더 재설치

마지막으로 두 물리 디스크 모두에 부트로더를 설치합니다. 이렇게 하면 한 디스크가 부트 불가 상태가 되어도 다른 디스크로 부팅할 수 있습니다.

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

UEFI 시스템이나 특수한 파티션 레이아웃을 사용하는 경우에는 이 단계가 달라질 수 있습니다. UEFI 환경에서는 efibootmgr 등 추가 설정이 필요할 수 있으니 시스템 문서를 참조하세요.

확인 및 마무리

이제 RAID1 교체가 완료되었습니다. 다음을 확인하세요:

  • cat /proc/mdstat에 모든 디스크가 정상([UU])으로 표시되는지
  • fdisk -l, lsblk로 파티션과 장치명이 예상과 일치하는지
  • 부팅 가능한 상태인지(재부팅 테스트 권장)
  • /etc/mdadm/mdadm.conf(또는 배포판에 따른 구성 파일)에 변경사항을 반영하고 업데이트했는지

문제 해결(자주 발생하는 경우)

  • 동기화가 매우 느린 경우: I/O 부하, 디스크 인터페이스(예: SATA 속도), 또는 RAID 비트맵 설정 여부를 점검합니다.
  • sfdisk가 파티션을 쓰지 못하거나 오류를 반환하는 경우: 디스크가 잠겨 있거나 커널이 파티션 테이블을 다시 읽지 못할 수 있습니다. dmesg와 syslog를 확인하고 필요시 partprobe 또는 블록 장치 제거/재삽입(또는 시스템 재부팅)을 고려합니다.
  • 부트로더 설치 후 부팅 불가: BIOS/UEFI 설정(부트 순서, 모드)을 확인하고, grub-install의 출력 오류를 점검합니다.

언제 이 방법이 실패하는가(예외 상황)

  • 원본 디스크(/dev/sda)가 논리적/물리적 손상으로 파티션 테이블을 읽을 수 없는 경우: 파티션 복원 도구로 먼저 복구하거나 백업 파티션 레이아웃을 사용하세요.
  • RAID 레벨이 RAID1이 아닌 경우: 다른 RAID 레벨(예: RAID5)에서는 파티션 복사 및 재동기화 절차가 다릅니다.
  • 서로 다른 크기의 디스크를 사용할 때: 작은 디스크로 복사하면 일부 데이터/파티션이 손실될 수 있으니 주의하세요.

대안적 접근

  • 파티션 테이블을 수동으로 생성하는 방법: sfdisk 대신 fdisk 또는 parted로 직접 파티션을 만들 수 있습니다.
  • 디스크 전체 이미지를 복제하는 방법: ddrescue/dd를 이용해 섹터 단위 복제 후 필요한 파티션만 RAID에 추가할 수 있습니다(시간 소모적).
  • 핫스왑 가능한 환경: 핫스왑 가능 하드웨어에서는 시스템 종료 없이 물리적 교체와 mdadm 추가가 가능합니다.

역할 기반 체크리스트

  • 시스템 관리자(계획): 백업 확인, 유지보수 시간 예약, 새 디스크의 모델/용량 검증
  • 운영자(실행): 고장 시뮬레이션, 파티션 복사, 슈퍼블록 초기화, mdadm으로 추가, 동기화 모니터링
  • 보안 담당: 디스크 폐기 정책(고장난 드라이브의 데이터 파기) 확인

간단한 절차 요약

  1. 고장 처리(mdadm –fail / –remove) 또는 물리적 제거 후 재부팅
  2. cat /proc/mdstat로 degraded 확인
  3. sfdisk로 파티션 복사(sfdisk -d /dev/sda | sfdisk –force /dev/sdb)
  4. mdadm –zero-superblock로 초기화
  5. mdadm -a로 RAID에 추가
  6. 동기화 완료 확인
  7. grub-install로 부트로더 설치

의사결정 흐름도

flowchart TD
  A[시스템 부팅] --> B{RAID 상태 정상?
  '/proc/mdstat 확인'}
  B -- Yes --> Z[작업 불필요]
  B -- No --> C[고장 파티션 식별]
  C --> D{디스크 물리적 교체 가능?
  '핫스왑 환경'}
  D -- Yes --> E[디스크 물리적 교체]
  D -- No --> F[소프트웨어로 fail 및 remove]
  E --> G[신규 디스크 연결]
  F --> G
  G --> H[파티션 복사: sfdisk]
  H --> I[슈퍼블록 초기화]
  I --> J[mdadm -a로 추가]
  J --> K[동기화 모니터링]
  K --> L{동기화 성공?}
  L -- Yes --> M[grub-install로 부트로더 설치]
  L -- No --> N[로그 확인 및 문제 해결]
  M --> O[완료]
  N --> O

짧은 용어집

  • 슈퍼블록: mdadm이 각 파티션에 저장하는 RAID 메타데이터 블록
  • degraded: RAID 구성에서 일부 미러가 빠진 상태
  • 동기화(recovery): 미러 간 블록을 다시 복제하는 과정

체크포인트 템플릿

  • 백업 존재 확인
  • 고장 디스크 식별
  • 파티션 테이블 복사 완료
  • mdadm –zero-superblock 수행
  • mdadm -a로 추가
  • /proc/mdstat에 [UU]로 표시되는지 확인
  • grub-install로 부트로더 설치
  • 재부팅 테스트 성공

참고 링크

요약: 위 절차를 따르면 RAID1 환경에서 고장난 하드 드라이브를 안전하게 교체하고 시스템 가용성을 유지할 수 있습니다. 각 단계에서 로그와 /proc/mdstat 출력을 꼼꼼히 확인하고, 부트로더 재설치까지 완료하는 것을 잊지 마세요.

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

유사한 자료

Mac에서 ADB 및 Fastboot 설치·사용 가이드
안드로이드 도구

Mac에서 ADB 및 Fastboot 설치·사용 가이드

Windows '시스템 수리 보류' 오류 해결 가이드
트러블슈팅

Windows '시스템 수리 보류' 오류 해결 가이드

코딩 없이 무료로 안드로이드 앱 만드는 방법
앱 제작

코딩 없이 무료로 안드로이드 앱 만드는 방법

Windows 11/10에 사이드바 추가하는 방법
Windows 유틸리티

Windows 11/10에 사이드바 추가하는 방법

Teams에서 삭제된 파일 복구 가이드
가이드

Teams에서 삭제된 파일 복구 가이드

탈옥 없이 아이폰 유료 앱 무료로 받기
모바일

탈옥 없이 아이폰 유료 앱 무료로 받기