기술 가이드

RAID1 드라이브 교체 및 테스트 가이드

3 min read Linux RAID 업데이트됨 17 Oct 2025
RAID1 디스크 교체 및 복구 가이드
RAID1 디스크 교체 및 복구 가이드

개요

이 문서는 RAID1(미러링) 구성에서 실패한 하드디스크를 교체하고 복구하는 실무 가이드입니다. 실습은 /dev/hda가 살아있고 /dev/hdb를 교체하는 시나리오로 설명합니다. mdadm, sfdisk, grub 등 표준 도구를 사용합니다.

중요: 실제 서버에서 작업하기 전에 전체 백업을 꼭 확보하세요.

1. 실패 디스크 시뮬레이션

시스템에서 /dev/hdb가 실패했다고 가정합니다. 물리적으로 디스크를 제거하거나 소프트웨어적으로 다음 명령으로 실패 상태로 표시할 수 있습니다.

mdadm --manage /dev/md0 --fail /dev/hdb1  
mdadm --manage /dev/md1 --fail /dev/hdb5  
mdadm --manage /dev/md2 --fail /dev/hdb6

실패 상태로 표시한 다음 어레이에서 제거합니다:

mdadm --manage /dev/md0 --remove /dev/hdb1  
mdadm --manage /dev/md1 --remove /dev/hdb5  
mdadm --manage /dev/md2 --remove /dev/hdb6

시스템을 종료하고(halt) 디스크를 물리적으로 교체하거나, 시뮬레이션 목적이면 새 디스크를 연결합니다.

shutdown -h now

교체 디스크를 장착하고 시스템을 부팅합니다. 부팅이 정상인지 확인합니다.

2. 어레이 상태 확인

부팅 후 손상된(감소된) 어레이 상태를 확인합니다.

cat /proc/mdstat

예시 출력(감소 상태):

[root@server1 ~]# cat /proc/mdstat  
Personalities : [raid1]  
md1 : active raid1 hda5[0]  
      417536 blocks [2/1] [U_]  
  
md0 : active raid1 hda1[0]  
      176576 blocks [2/1] [U_]  
  
md2 : active raid1 hda6[0]  
      4642688 blocks [2/1] [U_]  
  
unused devices:   
[root@server1 ~]#

파티션 테이블과 디스크 상태도 확인합니다:

fdisk -l

(출력 예시는 원문과 동일하므로 생략하지 않고 그대로 참고하세요.)

3. 파티션 테이블 복사

살아있는 디스크(/dev/hda)의 파티션 테이블을 새 디스크(/dev/hdb)로 복사합니다. sfdisk를 사용합니다.

sfdisk -d /dev/hda | sfdisk --force /dev/hdb

명령 실행 시 경고가 나타날 수 있으나, 메시지를 읽고 문제 없으면 진행합니다. 예시 출력:

[root@server1 #] sfdisk -d /dev/hda | sfdisk --force /dev/hdb  
Warning: extended partition does not start at a cylinder boundary.  
DOS and Linux will interpret the contents differently.  
Checking that no-one is using this disk right now ...  
OK  
  
Disk /dev/hdb: 10402 cylinders, 16 heads, 63 sectors/track  
  
sfdisk: ERROR: sector 0 does not have an msdos signature  
 /dev/hdb: 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/hdb1   *        63    353429     353367  fd  Linux raid autodetect  
/dev/hdb2        353430  10474379   10120950   5  Extended  
/dev/hdb3             0         -          0   0  Empty  
/dev/hdb4             0         -          0   0  Empty  
/dev/hdb5        353493   1188809     835317  fd  Linux raid autodetect  
/dev/hdb6       1188873  10474379    9285507  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가 파티션 경계에 대해 경고를 낼 수 있지만, 원래 시스템에서 사용 중인 방식과 호환되는지 반드시 확인하세요.

4. 슈퍼블록 초기화 및 어레이에 추가

이전 RAID 흔적을 제거(슈퍼블록 제로화)하고 새 파티션을 어레이에 추가합니다.

mdadm --zero-superblock /dev/hdb1  
mdadm --zero-superblock /dev/hdb5  
mdadm --zero-superblock /dev/hdb6

그다음 어레이에 추가합니다:

mdadm -a /dev/md0 /dev/hdb1  
mdadm -a /dev/md1 /dev/hdb5  
mdadm -a /dev/md2 /dev/hdb6

추가 후 다시 상태를 확인:

cat /proc/mdstat

예시 출력(동기화 진행 중):

[root@server1 ~]# cat /proc/mdstat  
Personalities : [raid1]  
md1 : active raid1 hdb5[2] hda5[0]  
      417536 blocks [2/1] [U_]  
        resync=DELAYED  
  
md0 : active raid1 hdb1[1] hda1[0]  
      176576 blocks [2/2] [UU]  
  
md2 : active raid1 hdb6[2] hda6[0]  
      4642688 blocks [2/1] [U_]  
      [===========>.........]  recovery = 59.9% (2784512/4642688) finish=7.5min speed=4076K/sec  
  
unused devices:   
[root@server1 ~]#

동기화가 완료될 때까지 기다립니다. 완료되면 모든 어레이의 상태가 [UU]로 표시됩니다.

[root@server1 ~]# cat /proc/mdstat  
Personalities : [raid1]  
md1 : active raid1 hdb5[1] hda5[0]  
      417536 blocks [2/2] [UU]  
  
md0 : active raid1 hdb1[1] hda1[0]  
      176576 blocks [2/2] [UU]  
  
md2 : active raid1 hdb6[1] hda6[0]  
      4642688 blocks [2/2] [UU]  
  
unused devices:   
[root@server1 ~]#

5. 부트로더 설치

부트로더(grub)를 양쪽 디스크에 설치합니다. grub 프롬프트에서 다음을 실행하세요:

grub

grub 프롬프트 입력 예시:

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

이제 RAID1 디스크 교체 및 복구가 완료되었습니다.

점검 목록(관리자용)

  • 백업이 최신인지 확인
  • 교체 디스크가 동일하거나 호환 가능한 모델인지 확인
  • 파티션 테이블 복사 전/후 fdisk -l 출력 비교
  • mdadm –detail /dev/mdX 로 상세 상태 확인
  • 동기화가 완료될 때까지 모니터링
  • 양쪽 디스크에 부트로더 설치 확인

문제 해결: 언제 복구가 실패하는가

  • 파티션 오프셋이나 크기가 원본과 맞지 않으면 복구가 실패합니다. 이 경우 수동으로 파티션을 조정하세요.
  • sfdisk가 섹터 0 서명을 찾지 못하면 파티션 테이블을 수동으로 생성해야 할 수 있습니다. 데이터 손실 위험이 있으니 주의.
  • RAID 메타데이터 형식(mdadm 버전 차이 등)이 호환되지 않으면 슈퍼블록 제거/재작성 필요.

대안 접근법

  • dd를 사용한 섹터 단위 복사: 완전 이미지 복사가 필요할 때 사용. 위험과 시간이 큼.
  • 파티션 레이아웃이 복잡하면 parted를 사용하여 수동 맞춤.
  • 디스크가 동일 모델이고 스마트 상태가 양호하면 하드웨어 RAID 기능 사용 고려.

핵심 수치 상자

  • 일반 출력 예시: md2 크기 약 4.4GB(4642688 블록)
  • 동기화 속도: 예시 4MB/s (환경에 따라 크게 다름)

참고 링크

요약: 이 가이드는 RAID1에서 실패한 디스크를 안전하게 교체하는 실무 절차를 제공합니다. 파티션 복사, 슈퍼블록 초기화, mdadm으로의 재추가, 동기화 완료 및 grub 재설치까지 포함합니다. 항상 백업을 확인하고, 동기화가 끝날 때까지 모니터링하세요.

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

유사한 자료

Debian 11에 Podman 설치 및 사용하기
컨테이너

Debian 11에 Podman 설치 및 사용하기

Apt-Pinning 간단 소개 — Debian 패키지 우선순위 설정
시스템 관리

Apt-Pinning 간단 소개 — Debian 패키지 우선순위 설정

OptiScaler로 FSR 4 주입: 설치·설정·문제해결 가이드
그래픽 가이드

OptiScaler로 FSR 4 주입: 설치·설정·문제해결 가이드

Debian Etch에 Dansguardian+Squid(NTLM) 구성
네트워크

Debian Etch에 Dansguardian+Squid(NTLM) 구성

안드로이드 SD카드 설치 오류(Error -18) 완전 해결
안드로이드 오류

안드로이드 SD카드 설치 오류(Error -18) 완전 해결

KNetAttach로 원격 네트워크 폴더 연결하기
네트워킹

KNetAttach로 원격 네트워크 폴더 연결하기