기술 가이드

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
저자
편집

유사한 자료

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로 원격 네트워크 폴더 연결하기