[CentOS] RAID Level 별 설정 및 RAID 장애 복구 [mdadm / mount / 로그 분석]
Nowhere 와 Now here 의 차이

IT/ㄴ Linux

[CentOS] RAID Level 별 설정 및 RAID 장애 복구 [mdadm / mount / 로그 분석]

TIENE 2023. 7. 17. 17:12
반응형

RAID Level 별 설정 및 RAID 장애 복구

- RAID 기본 및 기초 설정은 [CentOS] RAID 정리 및 설정 [lsblk / fdisk / mdadm / mount] 에서 확인 가능하다.

 

[CentOS] RAID 정리 및 설정 [lsblk / fdisk / mdadm / mount]

RAID (Redundant Array of Independent Disk / Redundant Array of Inexpensive Disk) = 속도가 느린 하드디스크의 단점을 보완하기 위해 만든 기술 = 여러 개의 디스크를 묶어 하나의 디스크처럼 사용하는 기술 RAID Level

a-gyuuuu.tistory.com

- RAID의 동작 방식과 구성의 이해를 위해 테스트를 진행해보았다.

- 복구 테스트 진행 시, VMware 설정에서 하드디스크를 잘못 지우는 바람에 두번이나 진행했다.


1. 하드디스크 8개 추가

- [CentOS] Linux 하드디스크 추가하기 [mount / lsblk / fdisk / mkfs]를 참고하여 하드디스크 8개를 추가한다.

- RAID 0 = 2개 / RAID 1 = 2개 / RAID 5 = 4개의 구성이다.

- RAID 6는 추후에 진행하려고한다. 너무 많다..  

 

하드디스크 추가 및 파티셔닝까지 완료

 

2. mdadm 명령어로 RAID 설정

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

- /dev/md0라는 RAID 장치 이름을 생성한다.

- RAID Level은 RAID 0이다.

- RAID 구성 디바이스는 2개 /dev/sdb1 + /dev/sdc1이다

 

mdadm --detail /dev/md0

- /dev/md0 장치의 세부사항을 살펴본다.

 

- lsblk로도 확인 가능하다.

- md0이라는 장치가 생성되었고 TYPE이 raid0으로 지정되었다.

- 이렇게 2번 더 반복하면 되며, mdadm 명령어의 옵션을 바꾸면서 진행하면된다.

- RAID 0의 특성답게, SIZE가 2GB가 되었다.

 

 

mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdd1 /dev/sde1

- /dev/md1라는 RAID 장치 이름을 생성한다.

- RAID Level은 RAID 1이다.

- RAID 구성 디바이스는 2개 /dev/sdd1 + /dev/sde1이다

 

 

mdadm --detail /dev/md1

- /dev/md1 장치의 세부사항을 살펴본다.

 

- lsblk로도 확인 가능하다.

- md1이라는 장치가 생성되었고 TYPE이 raid1으로 지정되었다.

- RAID 1의 특성답게, 두 개의 장치를 묶었음에도 SIZE가 1GB가 되었다.

 

mdadm --create /dev/md2 --level=5 --raid-devices=4 /dev/sdf1 /dev/sdg1 /dev/sdh1 /dev/sdi1

- /dev/md2라는 RAID 장치 이름을 생성한다.

- RAID Level은 RAID 5이다.

- RAID 구성 디바이스는 4개 /dev/sdf1 + /dev/sdg1 + /dev/sdh1 + /dev/sdi1이다

 

mdadm --detail /dev/md2

- /dev/md2 장치의 세부사항을 살펴본다.

 

- md2이라는 장치가 생성되었고 TYPE이 raid5으로 지정되었다.

- RAID 5의 특성답게, 4 개의 장치를 묶었음에도 SIZE가 3GB가 되었다.

 

- 세 개의 RAID 장치를 파일 시스템 xfs 형식으로 마운트한다.

- 그리고, mount 명령어로 각 디렉토리에 마운트한다.

 

- mount 명령어로 확인 가능하다.

 

 

- /etc/fstab에 등록하여 부팅 후에도 마운트가 가능하도록 등록한다.

 

- 재부팅을 하지 않아도, /etc/fstab에 설정한 내용을 바로 적용할 수 있는 명령어를 입력한다.

 

mount --option remount /raid0 | mount --option remount /raid1 | mount --option remount /raid5

- 각 디렉토리에 다시 마운트한다.

 

- 지금까지는 RAID 0, RAID 1, RAIID 5으로 하드디스크를 구성하는 과정을 알아보았다.

- 이제는 각 RAID Level 별로 하드디스크에 장애를 내어 장애 발생 내용과 복구 과정을 알아보자.


3. 하드디스크 제거 후 재부팅

- 시스템 종료 후, VMware에서 하드디스크를 제거한다.

- 이때, 주의해야할 것은 3 / 5 / 7번의 하드디스크를 제거해야한다.

- 잘못 지우면, 골치아프다.

 

빨간색이 제거할 하드디스크 번호

RAID 0 = 2 + 3 | RAID 1 = 4 + 5 | RAID 5 = 6 + 7 + 8 + 9 

제거 전 / 후

 

 

 

- 제거 후에 부팅하면 긴급모드로 진입한다.

- root 계정의 Password를 입력하고 진입한다.

 

- [df -h]를 입력하여 현재 디스크 상태를 확인한다.

- 그 결과, /dev/md1[RAID 1] 과 /dev/md2[RAID 5]는 정상적으로 연결되어있지만, /dev/md0[RAID 0]은 보이지 않는다.

- 말 그대로, 모든 데이터를 n 개의 하드디스크에 분할하여 담는 방식인 RAID 0은 RAID 구성이 깨졌다.

- 이와 같은 결과로 안정성이 최악이기 때문에 사용하기 드문 구성방식이다.  

 

- 위에서 설명하지 않았었지만, 각각의 마운트 디렉토리에 파일을 생성해두었다.

- 역시, RAID 0 구성방식을 사용한 디렉토리는 파일이 나오지 않는다. [test1로 생성했었다.]

 

- 복구를 위해서 먼저, /etc/fstab에 설정한 RAID 0 설정을 지우거나 주석처리한다.

 

- 주석 처리 후, 재부팅 하기전에 RAID 1과 RAID 5도 나머지 하나의 하드디스크를 추가하여  RAID 구성을 온전히 한다.

- 위에서 했던 방식으로, 하드디스크를 두 개 추가하여 부팅한다.

- 부팅하여 현재 RAID 1과 RAID 5의 상태를 점검해보자.

 

mdadm --query --detail /dev/md1

- RAID 장치 상태 확인 명령어

- 아래 빨간색 박스에 보면 removed로 처리되어 있는 것을 확인할 수 있다.

 

 

- 새롭게 추가된 장치명을 파악하고, RAID 장치에 추가하기 위해 파티셔닝 및 파일 시스템 포맷을 진행한다.

장애 복구를 위해 추가된 하드디스크 파티셔닝

 

- 아래의 명령어로 RAID 장치에 파티셔닝된 하드디스크를 추가한다.

 

mdadm /dev/md1 --add /dev/sdc1 | mdadm /dev/md2 --add /dev/sde1

- 각각의 장치에 하드디스크를 추가한다.

 

mdadm --detail /dev/md1 | mdadm --detail /dev/md2

- 새롭게 추가된 구성을 확인할 수 있다.

 

 

 


- RAID 장애 관련 로그를 찾아보았다.

- 아래는 RAID 0 장치를 찾을 수 없는 관련 Log로 보인다.

[root@Linux01 ~]# more /var/log/boot.log | grep raid
                    Mounting /raid1...
                    Mounting /raid5...
[ OK ]           Mounted /raid1.
[ OK ]           Mounted /raid5.
[DEPEND]   Dependency failed for /raid0.
                    Mounting /raid5...
                    Mounting /raid1...
[ OK ]           Mounted /raid5.
[ OK ]           Mounted /raid1.
[root@Linux01 ~]#
[root@Linux01 ~]# more /var/log/boot.log | grep md0
[  OK  ]        Created slice system-mdadm\x2dlast\x2dresort.slice.
[ TIME ]       Timed out waiting for device dev-md0.device.

 

 

- 지금까지 RAID Level 별 구성 및 그에 맞는 명령어를 살펴보았다.

- 또한, RAID Level 구성의 특성을 알아보기 위해 가상의 장애 발생 상황을 일으켜, 장애 상태 확인 및 복구까지 진행했다.

- RAID는 자주 쓰이는 구성이니 확실하게 알아둘 필요가 있다.


 

반응형