
NHN Cloud 웹 콘솔에서 블록 스토리지 3개를 추가로 생성한 후 동일한 인스턴스에 연결
lab-raid-disk1 (10GB) → /dev/vddlab-raid-disk2 (10GB) → /dev/vdelab-raid-disk3 (10GB) → /dev/vdf
/dev/vdc 는 이미 다른 용도로 사용 중(/mnt/block-storage에 마운트)이므로 /dev/vdd, /dev/vde, /dev/vdf 가 실제 RAID 구성용 디스크
mdadm이란?
- Multiple Device Administrator의 줄임말
- 리눅스에서 소프트웨어 RAID를 관리하는 핵심 도구
sudo apt-get update # Ubuntu/Debian
sudo apt-get install mdadm -y
sudo yum install mdadm -y # CentOS/RHEL
sudo dd if=/dev/zero of=/dev/vdd bs=1M count=10
sudo dd if=/dev/zero of=/dev/vde bs=1M count=10
sudo dd if=/dev/zero of=/dev/vdf bs=1M count=10

if=/dev/zero 는 입력 파일 (=0으로 채워진 무한한 데이터 소스)of=/dev/vdd 는 출력 파일 (=대상 디스크) bs=1M 은 블록 크기 1MB를 의미count=10 으로 10번 반복하여 총 10MB 초기화 여기까지 RAID 구성을 위한 클린 디스크 3개 준비 완료
/dev/vdd 와 /dev/vde 로 /dev/md0 이라는 가상 블록 장치 생성


이제 시스템에서 /dev/md0 을 하나의 큰 디스크처럼 사용할 수 있다.
(물리적인 2개의 디스크가 논리적인 1개의 고속 디스크로 변환)

빈 RAID 장치에 파일을 저장할 수 있는 관리 시스템(XFS)을 설치하여 실제 사용 가능한 고속 스토리지로 만들어주는 과정

/dev/md0 에 XFS 파일시스템이 생성됨이제 마운트하면 실제 파일 저장/읽기가 가능하다.
파일 시스템을 실제 사용 가능한 폴더에 연결

/dev/md0 을 /mnt/raid0 에 마운트 완료 /mnt/raid0 에서 20GB 고속 RAID 0 스토리지 사용 가능 
RAID 1은 같은 데이터를 두 디스크에 동시에 저장 (미러링)
/dev/vdd: [A][B][C][D] ← 원본
/dev/vde: [A][B][C][D] ← 완전한 복사본중요한 문서를 복사기로 복사해서 두 곳에 보관하는 것과 같음
$ sudo umount /mnt/raid0
$ sudo mdadm --stop /dev/md0


sunit=0 swidth=0 : RAID 1은 미러링이라 스트라이프 최적화 불필요
Left-Symmetric 은 RAID 5의 패리티 배치 방식3개의 디스크가 하나의 스토리지로 통합된 상태.
RAID 0, RAID 1과 마찬가지로 XFS 파일시스템을 생성

결과적으로 /mnt/raid5 에서 20GB 고성능 안전 스토리지를 사용할 수 있게 되었다.
RAID 5 배열을 시스템 레벨에서 영구적으로 통합하여 재부팅 후에도 자동으로 작동하도록 설정해 보았다.
sudo mdadm --detail --scan | sudo tee /etc/mdadm/mdadm.conf
/etc/mdadm/mdadm.conf 파일에 저장한다.sudo dracut -f
initramfs 이미지를 강제로 재생성하여 mdadm과 RAID 관련 드라이버들을 포함시킨다. 부팅할 때마다 RAID 5를 자동으로 /mnt/raid5 에 연결하도록 시스템에 등록하는 과정
echo '/dev/md5 /mnt/raid5 xfs defaults 0 2' | sudo tee -a /etc/fstab
이렇게 하면 재부팅 후에도 별도의 마운트 명령 없이 바로 RAID 스토리지를 사용할 수 있게 된다.
개념적 관계도
- 3개의 물리 디스크가 1개의 논리 장치로 통합되고, RAID 장치가 중간 추상화 계층 역할
/dev/md5의 원시 블록 데이터가 XFS를 통해 파일과 디렉토리로 관리되어/mnt/raid5에서 접근 가능하게 됨- 최종적으로 사용자는 1개의 폴더(/mnt/raid5)로 접근
- 사용자는
/mnt/raid5에 저장하는 것처럼 보이지만, 실제로는/dev/md5논리 장치를 통해 물리 디스크들(vdd,vde,vdf)에 RAID 5 방식으로 분산 저장
디스크가 물리적으로 고장나서 작동하지 않는 상황을 시뮬레이션
고장난 디스크를 제거하고 새 디스크로 교체하는 과정을 통해 서비스 중단 없이 데이터 복구가 가능한가?
RAID 5 볼륨에 데이터 파일을 만들어서 장애 복구 후에도 데이터가 보존되는지 확인하고자 함.
$ echo "Important RAID data" | sudo tee /mnt/raid5/important.txt
$ sudo mdadm --manage /dev/md5 --fail /dev/vdf
mdadm: set /dev/vdf faulty in /dev/md5
--fail 옵션은 특정 디스크를 강제로 장애 상태로 만듦/dev/vdf 로 
/dev/vdf 는 장애 상태로 표시됨(faulty) 현재 상태
Disk 1: [Data A] [Data C] [Parity] 정상 Disk 2: [Data B] [Parity] [Data F] 정상 Disk 3: [FAILED] [FAILED] [FAILED] 장애
RAID 5의 핵심 기능인 장애 허용성(Fault Tolerance)과 무중단 복구(Non-disruptive Recovery)를 실제로 검증하는 과정이다.
/dev/vdf 디스크를 RAID 5 배열에서 강제로 분리
$ sudo mdadm --manage /dev/md5 --remove /dev/vdf
Degraded(성능 저하) 상태로 전환RAID 5에서는 1개 디스크 제거까지만 안전하기 때문에 실제 실무 상황에서는 디스크가 고장나면 제거 후 가능한 빨리 새 디스크로 교체하는 것이 중요하다.
제거된 디스크 자리에 동일한 명령어를 사용하여 새로운 /dev/vdf 디스크를 추가하는 이 과정을 핫 스왑(Hot Swap)이라고 하는데, 서버를 끄지 않고(=서비스 중단 없이) 디스크를 교체할 수 있음을 의미한다.
$ sudo mdadm --manage /dev/md5 --add /dev/vdf
mdadm: added /dev/vdf

/dev/vdf 디스크를 /dev/md5 RAID 배열에 추가
mdadm은 자동으로 복구 프로세스를 시작한다. (백그라운드) cat /proc/mdstat 명령어를 통해 복구 진행률을 실시간으로 확인 가능[3/3]과 [UUU]처럼 모든 디스크가 정상임을 다시 확인할 수 있게 되면 복구가 완료된 것 (Healthy)