기술 가이드

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

3 min read 시스템 관리 업데이트됨 09 Oct 2025
RAID1 하드 교체 및 복구 테스트 가이드
RAID1 하드 교체 및 복구 테스트 가이드

테스트: 고장 하드 시뮬레이션

이 예제에서는 /dev/sdb가 고장난 것으로 가정합니다. (/dev/sda가 고장난 경우 명령에서 sda↔sdb를 교환해서 적용하세요.)

중요: 어느 디스크를 제거할지 확실히 파악한 후 진행하세요. 실수로 살아 있는 디스크를 제거하면 데이터 손실이 발생할 수 있습니다.

하드웨어 방식으로는 시스템을 종료한 뒤 물리적으로 드라이브를 분리하면 됩니다. 소프트 방식으로는 mdadm으로 해당 파티션을 실패 상태로 표시하고 제거합니다:

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

그런 다음 새 물리 디스크를 넣고 부팅합니다. (만약 /dev/sda를 교체했다면, 새 하드는 /dev/sda 위치에 넣고 이전 /dev/sdb는 /dev/sdb로 연결해야 합니다.)

부팅 후 다음을 실행하여 배열이 degraded(저하) 상태인지 확인합니다:

cat /proc/mdstat

예시 출력:

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

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

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

unused devices: 
[root@server1 ~]#

또한 fdisk -l 출력에서 새 디스크(/dev/sdb)에 파티션 테이블이 없는 것을 확인할 수 있습니다:

[root@server1 ~]# fdisk -l

Disk /dev/sda: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0007b217

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   fd  Linux raid autodetect
/dev/sda2              14          77      514080   fd  Linux raid autodetect
/dev/sda3              78         652     4618687+  fd  Linux raid autodetect

Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000

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

Disk /dev/md2: 4729 MB, 4729405440 bytes
2 heads, 4 sectors/track, 1154640 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk identifier: 0x00000000

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

Disk /dev/md1: 526 MB, 526319616 bytes
2 heads, 4 sectors/track, 128496 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk identifier: 0x00000000

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 identifier: 0x00000000

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

파티션 테이블 복사

원본 디스크(/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: 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   *        63    208844     208782  fd  Linux raid autodetect
/dev/sdb2        208845   1237004    1028160  fd  Linux raid autodetect
/dev/sdb3       1237005  10474379    9237375  fd  Linux raid autodetect
/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 ~]#

노트: sfdisk가 섹터 0 서명을 언급하면 –force로 진행하거나 필요하면 dd로 첫 512바이트를 초기화한 뒤 재시도하십시오.

기존 RAID 잔여물 제거 및 디스크 추가

이전 RAID 슈퍼블록 잔여물을 제거합니다:

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

새 디스크 파티션을 RAID에 추가합니다:

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

다시 /proc/mdstat을 확인합니다:

cat /proc/mdstat

복구가 진행 중인 예시:

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

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

md2 : active raid1 sdb3[2] sda3[0]
      4618560 blocks [2/1] [U_]
      [===>.................]  recovery = 15.4% (715584/4618560) finish=4.9min speed=13222K/sec

unused devices: 
[root@server1 ~]#

동기화가 완료될 때까지 기다립니다. 완료되면 모든 mdX 행에 [UU] 상태가 표시됩니다:

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

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

md2 : active raid1 sdb3[1] sda3[0]
      4618560 blocks [2/2] [UU]

unused devices: 
[root@server1 ~]#

부트로더 설치

루트 권한의 grub 콘솔을 열고 두 HDD에 부트로더를 설치합니다:

grub

grub 상호작용 예시:

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

이로써 RAID1에서 실패한 하드를 교체하고 복구하는 절차가 완료됩니다.

점검 항목 (체크리스트)

  • 고장 디스크 식별 및 표기
  • mdadm으로 해당 파티션을 fail/remove 처리했는가
  • 새 디스크를 올바르게 장착/인식했는가
  • sfdisk로 파티션이 정확히 복사되었는가
  • mdadm –zero-superblock로 잔여 슈퍼블록을 제거했는가
  • mdadm -a로 디스크를 추가하고 /proc/mdstat에서 동기화가 완료되었는가
  • GRUB을 두 디스크에 설치했는가

역할별 간단 체크:

  • 시니어/운영자: 전체 절차 승인, 부팅 디스크 순서 확인
  • 주니어/인턴: 명령 실행 및 /proc/mdstat 모니터링, 로그 캡처

일반적인 문제와 해결책

  • sfdisk: “sector 0 does not have an msdos signature” — –force 사용하거나 dd로 첫 512바이트를 정리한 뒤 재시도.
  • 디스크 이름이 바뀜(/dev/sda <-> /dev/sdb): udev 규칙이나 시스템 BIOS/케이블 포트 확인. 실수 방지를 위해 직렬 번호로 확인하세요: ls -l /dev/disk/by-id
  • mdadm이 디스크를 인식하지 못함: 파티션 유형(Id)이 fd(Linux raid autodetect)로 맞는지 확인.

수용 기준

  • /proc/mdstat의 각 mdX가 [UU] 상태
  • fdisk -l에서 각 /dev/sdX 파티션이 원본과 동일한 레이아웃을 가짐
  • 시스템이 두 디스크 중 어느 하나로도 정상 부팅 가능

명령 요약

  • 실패 표시: mdadm –manage … –fail
  • 제거: mdadm –manage … –remove
  • 파티션 복사: sfdisk -d /dev/sda | sfdisk /dev/sdb
  • 슈퍼블록 초기화: mdadm –zero-superblock /dev/sdbX
  • 디스크 추가: mdadm -a /dev/mdX /dev/sdbX
  • 상태 확인: cat /proc/mdstat, fdisk -l
  • GRUB 설치: grub → root/setup 순으로 각 디스크에 설치

추가 참고 링크

요약: 단계별로 차근차근 진행하면 RAID1 환경에서 단일 디스크 실패를 안전하게 시뮬레이션하고 복구할 수 있습니다. 문제가 발생하면 로그와 /proc/mdstat, fdisk 출력을 기준으로 원인을 좁히세요.

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

유사한 자료

Android 카메라 렉(지연) 빠르게 해결하는 방법
안드로이드

Android 카메라 렉(지연) 빠르게 해결하는 방법

삭제한 파일을 복구 불가능하게 만드는 3가지 방법
보안

삭제한 파일을 복구 불가능하게 만드는 3가지 방법

MySQL 슬레이브 구성 및 SSL 복제 설정
데이터베이스

MySQL 슬레이브 구성 및 SSL 복제 설정

Windows 11에서 Explorer Patcher 제거하는 방법
Windows

Windows 11에서 Explorer Patcher 제거하는 방법

Sea of Thieves 패킷 손실 원인·진단·해결
네트워크

Sea of Thieves 패킷 손실 원인·진단·해결

Hulu 오류 RUNUNK13 원인과 완전 해결 가이드
스트리밍

Hulu 오류 RUNUNK13 원인과 완전 해결 가이드