RAID 복구하기

2026. 6. 27. 13:42백엔드/리눅스

고장 상황

RAID0 → SCSI 0:1 , SCSI 0:2 (0:2 고장)

RAID1 → SCSI  0:3, SCSI  0:4 (0:4 고장)

RAID5 → SCSI  0:5, SCSI  0:6 (0:6 고장)

이 상황에서 SCSI 0:2, SCSI  0:4, SCSI  0:6 을 제거함 (고장 시뮬레이션)

 

확인

ls -l /dev/sd*

→ /dev/sdb~/dev/sdh 까지 7개였던 장치가 /dev/sdb~dev/sde 까지 4개만 남았다.

 

 

 


RAID 1 가동

RAID1 장치를 다시 가동하고, 확인한다.

mdadm --run /dev/md1
mdadm --detail /dev/md1

→ /dev/md1 은 작동되고 있다.

 

다시 마운트 후 디스크 용량을 확인한다. 이후 RAID 1 에 저장했던 파일을 확인한다.

mount /dev/md1 /raid1
df
ls -l /raid1

 

RAID 1 장치 작동 상세히 확인

mdadm --detail /dev/md1

→ 총 2개 디스크 중 1개(/dev/sdc)가 작동 중이다.

 

 


RAID 5 장치 가동

ls -l /dev/sd*
df
mdadm --detail --scan
mdadm --run /dev/md5
mount /dev/md5 /raid5
df
ls -l /raid5
mdadm --detail /dev/md5

→ 3개 중 2개가 작동 중

 

 


결함 허용을 제공하지 않는 RAID 0

mdadm --run /dev/md0

→ RAID 0 장치의 경우 데이터 유실 시 1개 디스크로는 작동 자체를 하지 않는다.

이후 실습을 진행하기 위해 RAID 0 장치를 중지시킨 후 /etc/fstab 에서도 제거한다.

mdadm --stop /dev/md0
nano /etc/fstab

이후 재부팅한다.

재부팅 후 df, ls 등으로 확인해 보면 /raid1 과 /raid5 디렉터리는 작동하고 있고, 데이터도 안전함을 알 수 있다.

 

 

 

 


원상 복구하기

→ RAID 0 구성은 원상복구 가능하나 그 안의 데이터는 살릴 수 없다.

 

새로운 물리 디스크 추가

  • SCSI 0:2 (/dev/sdc) : /raid0
  • SCSI 0:4 (/dev/sde) : /raid1
  • SCSI 0:6 (/dev/sdg) : /raid5

디스크를 추가했다고 자동으로 복구되는 것은 아니다. 수동 복구를 진행해야 한다.

mdadm --detail /dev/md1

→ RAID 1 장치 구성을 다시 살펴보면 /dev/sdc1 에서 /dev/sdd1 으로 변했다는 것을 알 수 있다.

 

 

새로 장착한 디스크를 이용하여 RAID0, RAID1, RAID5 복구하기

새로운 디스크 /dev/sdc (SCSI 0:2) 의 파일 시스템을 만든다

fdisk /dev/sdc

 

파일 시스템 유형

→ 일반 Linux 파티션(83) / Linux Swap(82) / Linux RAID autodetect (fd) 중 택 1

확인

ls /dev/sd*

 

 

RAID0 장치(md0) 를 중지하고 다시 구성

mdadm --stop /dev/md0
mdadm --create /dev/md0 --level=0 --raid-devies=2 /dev/sdb1 /dev/sdc1

확인

mdadm --detail /dev/md0

→ RAID 0 장치가 처음 구성했을 때와 동일하게 잘 작동한다. (데이터 복구는 불가)

 

 

 


RAID 1, RAID 5 구성

RAID 0 에서 했던 작업과 마찬가지로, 새로운 디스크 /dev/sde (SCSI 0:4), /dev/sdg (SCSI 0:6) 의 파일 시스템을 만든다.

fdisk /dev/sde
fdisk /dev/sdg

RAID1 은 디스크가 1개 빠졌을 뿐 잘 작동하고 있다.

mdadm /dev/md1 --add /dev/sde1

→ 새로운 디스크 추가

 

같은 방식으로 RAID 5 도 재구성한다.

mdadm /dev/md5 --add /dev/sdg1
mdadm --detail /dev/md1
mdadm --detail /dev/md5

→ 정상 복구된 화면

→ 만약 여기서 RAID 5 의 /dev/sdg1 (4번 장치) 가 ‘spare rebuilding /dev/sdg1’ 로 표시된다면 현재 RAID 5 를 재구성하는 상태인 것이므로, 잠시 기다렸다가 다시 실행하면 된다.

nano /etc/fstab

→ 주석 처리했던 /dev/md0 내용을 다시 살려준다 (실무에서는 입력해야 함)

 

 

아래 작업은 mdadm 버그 때문에 진행한다.

nano /etc/mdadm/mdadm.conf

ARRAY 3줄을 삭제했다가 저장하고 다시 추가한 후, reboot 한다.

 

 

 


복구된 RAID 의 데이터 확인하기

당연히 RAID 0 파일은 복구되지 않는다.

데이터가 동일한지 보기 위하여 cmp 명령을 사용한다.

→ 파일이 동일하면 아무 메시지도 나오지 않고, 다르면 다른 부분의 첫 위치가 출력된다.

cmp /raid1/testFile /raid5/testFile

→ 둘 다 정상 파일이므로 동일 파일이다. (아무 메시지도 나오지 않음)

cmp /raid0/testFile /raid5/testFile

→ RAID 0 의 파일은 정상 파일이 아니므로 파일이 다르다는 메시지가 나온다.

현재 /raid0 의 파일은 정상이 아니므로 마운트를 해제한 후 다시 포맷, 재마운트해주는 편이 좋다.

umount /dev/md0
mkfs.ext4 /dev/md0
mount /dev/md0 /raid0
cmp /raid1/testFile /raid5/testFile

결과 화면은 동일하게 보인다. 그러나 차이가 있다.

 

RAID 1 방식의 경우

고장 직후: ‘testFile’ 은 SCSI 0:3 에만 들어 있음

복구 후: ‘testFile’ 은 SCSI 0:3, SCSI 0:4 모두에 들어 있음

 

RAID 5 방식의 경우

고장 직후: ‘testFile’ 은 SCSI 0:6 이 없으므로 이를 나머지 2개로 예측해서 사용해야 하므로 속도 저하

복구 후: 값을 예측할 필요가 없어졌으므로 이로 인한 속도 저하가 발생하지 않음