기술 가이드

RAID1에서 실패한 하드 드라이브 교체 및 테스트

3 min read 시스템 관리 업데이트됨 30 Sep 2025
RAID1 하드드라이브 교체 및 재동기화 테스트
RAID1 하드드라이브 교체 및 재동기화 테스트

목적

이 가이드는 RAID1 구성에서 한 쪽 디스크가 실패했을 때 이를 시뮬레이션하고, 새 드라이브로 교체하여 배열을 복구하는 절차를 단계별로 설명합니다. 용어: RAID1 — 동일한 데이터를 두 디스크에 미러링하는 소프트웨어 RAID 구성.

사전 확인(핵심 사항)

  • 현재 어떤 장치가 실패했는지(/dev/sda 또는 /dev/sdb)를 명확히 하세요.
  • 중요한 데이터가 있다면 절차 시작 전에 백업을 권장합니다.
  • 루트 권한으로 실행해야 합니다.

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

어떤 디스크(/dev/sda 또는 /dev/sdb)가 실패했는지는 상관없습니다. 예제에서는 /dev/sdb가 실패했다고 가정합니다.

물리적으로 시스템 전원을 끄고 디스크를 분리하거나, 소프트 페일(soft-fail)로 제거할 수 있습니다:

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

그다음 제거:

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

시스템을 종료합니다:

shutdown -h now

그런 다음 새 하드 드라이브를 장착하고 부팅합니다. (/dev/sda를 시뮬레이션으로 실패시켰다면, 물리적인 위치를 바꿔 새 HDD를 /dev/sdb로 연결하는 등 장치 네임을 주의하세요.)

부팅 후 배열 상태를 확인합니다:

cat /proc/mdstat

다음과 같이 degraded(저하) 상태가 보일 수 있습니다:

[root@server1 ~]# cat /proc/mdstat  
Personalities : [raid1] [raid6] [raid5] [raid4]  
md0 : active raid1 sda1[0]  
      200704 blocks [2/1] [U_]  
  
md1 : active raid1 sda2[0]  
      5036288 blocks [2/1] [U_]  
  
unused devices:   
[root@server1 ~]#

fdisk로 디스크 정보를 확인합니다:

fdisk -l

예시 출력(그대로 참조):

[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: 0x0008b885  
  
   Device Boot      Start         End      Blocks   Id  System  
/dev/sda1   *           1          25      200781   fd  Linux raid autodetect  
/dev/sda2              26         652     5036377+  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/md1: 5157 MB, 5157158912 bytes  
2 heads, 4 sectors/track, 1259072 cylinders  
Units = cylinders of 8 * 512 = 4096 bytes  
Disk identifier: 0x00000000  
  
Disk /dev/md1 doesn't contain a valid partition table  
  
Disk /dev/dm-0: 4462 MB, 4462739456 bytes  
255 heads, 63 sectors/track, 542 cylinders  
Units = cylinders of 16065 * 512 = 8225280 bytes  
Disk identifier: 0x00000000  
  
Disk /dev/dm-0 doesn't contain a valid partition table  
  
Disk /dev/dm-1: 637 MB, 637534208 bytes  
255 heads, 63 sectors/track, 77 cylinders  
Units = cylinders of 16065 * 512 = 8225280 bytes  
Disk identifier: 0x30307800  
  
Disk /dev/dm-1 doesn't contain a valid partition table  
  
Disk / dev/md0: 205 MB, 205520896 bytes  
2 heads, 4 sectors/track, 50176 cylinders  
Units = cylinders of 8 * 512 = 4096 bytes  
Disk identifier: 0x00000000  
  
Disk /dev/md0 doesn't contain a valid partition table  
[root@server1 ~]#

2) 파티션 테이블 복사

정상인 /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    401624     401562  fd  Linux raid autodetect  
/dev/sdb2        401625  10474379   10072755  fd  Linux raid autodetect  
/dev/sdb3             0         -          0   0  Empty  
/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 ~]#

3) 기존 RAID 흔적 제거 및 디스크 추가

이전 RAID 슈퍼블록 정보를 지웁니다:

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

그런 다음 새 파티션을 배열에 추가합니다:

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

추가 후 배열 상태 확인:

cat /proc/mdstat

예시 회복 중 출력:

[root@server1 ~]# cat /proc/mdstat  
Personalities : [raid1] [raid6] [raid5] [raid4]  
md0 : active raid1 sdb1[1] sda1[0]  
      200704 blocks [2/2] [UU]  
  
md1 : active raid1 sdb2[2] sda2[0]  
      5036288 blocks [2/1] [U_]  
      [=====>...............]  recovery = 29.8% (1502656/5036288) finish=18.8min speed=3116K/sec  
  
unused devices:   
[root@server1 ~]#

동기화가 완료될 때까지 기다립니다(진행 표시가 100%가 됨):

[root@server1 ~]# cat /proc/mdstat  
Personalities : [raid1] [raid6] [raid5] [raid4]  
md0 : active raid1 sdb1[1] sda1[0]  
      200704 blocks [2/2] [UU]  
  
md1 : active raid1 sdb2[1] sda2[0]  
      5036288 blocks [2/2] [UU]  
  
unused devices:   
[root@server1 ~]#

4) 부트로더 설치

배열이 정상 상태가 되면 grub을 실행하여 부트로더를 양쪽 HDD에 설치합니다:

grub

grub 프롬프트에서 다음을 순서대로 실행합니다:

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

이로써 RAID1에서 실패한 하드 드라이브를 성공적으로 교체하고 재동기화하여 시스템을 정상 상태로 복구했습니다.

중요(Notes)

  • 파티션 테이블을 덮어쓸 때는 대상 장치를 정확히 확인하세요. 잘못하면 데이터 손실이 발생합니다.
  • RAID 재동기화 중 디스크 I/O가 높아질 수 있으니 서비스 영향도를 고려해 수행하세요.
  • 부트로더 설치 시 디스크 순서(hd0/hd1)가 시스템에 따라 바뀔 수 있으니 확인이 필요합니다.

운영자 체크리스트 (간단 SOP)

  • 실패 디스크 식별(/dev/sd*)
  • 소프트 페일/제거 또는 물리적 분리
  • 새 디스크 장착 및 부팅
  • sfdisk로 파티션 복사
  • mdadm –zero-superblock로 잔여 정보 제거
  • mdadm -a로 배열에 추가
  • /proc/mdstat으로 동기화 상태 확인(완료될 때까지 대기)
  • grub으로 부트로더 양쪽 디스크에 설치
  • 시스템 재부팅 및 부팅 확인

문제 해결: 흔한 상황과 대처법

  • sfdisk에서 msdos 시그니처 오류: –force로 다시 시도하거나 parted로 수동 파티션 생성.
  • 재동기화 속도가 너무 느림: 다른 큰 IO 작업을 중지하거나 RAID 재구성 속도 제한 설정(mdadm –detail –scan 및 sysfs tunables 참조).
  • 부트 실패: grub 설치 시 디스크 식별이 잘못되었을 가능성 있음. rescue 모드에서 올바른 디스크에 설치하세요.

간단 의사 결정 흐름

flowchart TD
  A[디스크 실패 감지] --> B{물리적 분리?}
  B -- 예 --> C[새 디스크 장착 후 부팅]
  B -- 아니오 --> D[mdadm --fail, --remove 실행]
  C --> E[sfdisk로 파티션 복사]
  D --> E
  E --> F[mdadm --zero-superblock]
  F --> G[mdadm -a로 배열에 추가]
  G --> H[/proc/mdstat으로 동기화 확인]
  H --> I[grub로 양쪽 HDD에 부트로더 설치]
  I --> J[완료]

요약

  • 고장난 디스크를 소프트로 제거하고 새 디스크로 파티션을 복사한 뒤 mdadm으로 배열에 재추가합니다.
  • 재동기화가 완료되면 grub을 양쪽 디스크에 설치해 부팅 안전성을 확보합니다.

참고 링크

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

유사한 자료

iPhone에서 앱 차단하는 방법 — 단계별 가이드
모바일 앱

iPhone에서 앱 차단하는 방법 — 단계별 가이드

인스타그램에서 좋아요한 게시물 보는 법
소셜 미디어

인스타그램에서 좋아요한 게시물 보는 법

미니 PC 구매 가이드: 용도별 추천과 체크리스트
하드웨어

미니 PC 구매 가이드: 용도별 추천과 체크리스트

Instagram에서 좋아요한 게시물 확인하는 방법
소셜미디어

Instagram에서 좋아요한 게시물 확인하는 방법

RAID1 하드드라이브 교체 및 재동기화 테스트
시스템 관리

RAID1 하드드라이브 교체 및 재동기화 테스트

NVIDIA·Intel GPU 오류 코드 43 빠른 해결법
하드웨어 문제

NVIDIA·Intel GPU 오류 코드 43 빠른 해결법