참고
- 이 글은 Rocky Linux 9 버전을 기준으로 작성됨
- 다른 OS에서는 특정 명령어가 작동하지 않을 수 있음
- 이전 글과 순서는 동일하게 가져왔으나 명령어와 참고 자료 (사진)이 다름
0. RAID 구성하기 전 점검할 것
같은 용량의 디스크를 최소 두 개 이상 (RAID 레벨에 따라 더 필요할 수 있음) 준비하기
- 가상머신 설정에 들어가면 디바이스를 추가할 수 있음
- 가상머신을 끄고 추가한 다음에, 재부팅해서 아래의 명령어를 쳐보기
lsblk- 만약에 OS를 설치한 디바이스를 제외하고, 총 세 개의 디바이스를 더 추가했다면 아래와 같이 나올 것

- 참고로 sd 뒤에 a, b, c, d는 실제 물리적인 개별 디스크고, 그 뒤에 붙는 1, 2, 3은 파티션임
- 현재 OS가 심어져있는 sda 를 제외하고, vdb, vdc, vdd 두 개가 존재하기 때문에 RAID를 설정할 수 있음
mdadm 패키지 설치하기
- mdadm을 활용해서 RAID를 구성해볼 것이기 때문에 설치해야함
- 일단 있는지부터 보기
- 아래 명령어 쳤는데 그 밑에 사진처럼 나오면 깔린거임 (아니면 안깔린거)
mdadm --help
- 안깔려있음 아래의 명령어를 통해 설치
dnf install mdadm1. 디스크/파티션 상태 확인하기
lsblk
fdisk -l
mount | grep sd- 위 명령어의 의미를 알고싶다면 이전 02번 글 확인
체크리스트
- OS 디스크(
/dev/sda) 아닌지 - RAID에 사용할 디스크들의 크기가 동일한지
- 마운트된 파티션 없는지
- LVM/PV로 사용 중 아닌지
1-2. 이전에 RAID 구성된게 있는지 확인하기
mdadm --examine /dev/vdb- 만약에 구성되어 있었다면 RAID Superblock (RAID 메타데이터) 정보가 나옴
예시 출력
- 있을 경우
/dev/sdb:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x1
Array UUID : 3c9e1b6e:7a4d9c21:8f2d7a13:91c4e5ab
Name : server01:0
Creation Time : Wed Jan 10 14:22:31 2024
Raid Level : raid1
Raid Devices : 2
Avail Dev Size : 209612800 sectors (100.00 GiB)
Array Size : 104806400 sectors (50.00 GiB)
Used Dev Size : 104806400 sectors (50.00 GiB)
Data Offset : 2048 sectors
Super Offset : 8 sectors
State : clean
Device UUID : d2bfa33a:1e3c1a21:9fcae122:7c1d9b33
Update Time : Thu Jan 11 09:10:12 2024
Bad Block Log : 512 entries available at offset 72 sectors- 없을 경우
mdadm: No md superblock detected on /dev/sdb.만약에 메타데이터 있을 때 지우는 방법
mdadm --zero-superblock /dev/sdb2. RAID 구성하기
기본 명령어
mdadm --create /dev/md0 \\
--level=<RAID_LEVEL> \\
--raid-devices=<N> \\
/dev/sdX /dev/sdY [...]- —create /dev/md0 : /dev에 md0이라는 이름으로 구성할 것
- —level= : RAID 레벨 설정
- 설정 가능한 레벨 : 0, 1, 5, 6, 1+0
- —raid-devices= : RAID로 쓸 디바이스 개수
- /dev/sdX /dev/sdY … : RAID로 쓸 디바이스 지정
예시 (RAID 5)
mdadm --create /dev/md0 \\
--level=5 --raid-devices=3 \\
/dev/vdb /dev/vdc /dev/vdd-
RAID 5로 디바이스 3개 (vdb, vdc, vdd) 써서 md0이라는 논리 디스크 만들 것
-
그러면 mdadm가 그거에 RAID 메타데이터를 만듬

3. RAID 구성 후 확인
3-1. 동기화 상태 확인
cat /proc/mdstat출력 예시

- raid 5로 구성된 vdd, vdc, vdb가 처음 생성되고 나서 패리티 초기 계산을 진행하고 있음

- 초기 계산 끝남
3-2. RAID 상세 정보 확인
mdadm --detail /dev/md0출력 예시

-
State : clean→ 정상 (rebuild/resync 없음)
-
Active Devices : 2→ 현재 사용 중 디스크 수
-
Failed Devices : 0→ 장애 디스크 없음
-
Spare Devices : 0→ 대기 디스크 없음
-
degraded/recovering/resyncing상태면 즉시 원인 확인 필요
체크리스트
-
State가 clean 인가 -
Failed Devices가 0 인가 - 모든 디스크가 active sync 상태인가
-
/proc/mdstat와 상태가 일치하는가
4. 파일 시스템 생성하기
- RAID 디스크는 일반 디스크처럼 취급함
기본 명령어
mkfs.<파일시스템이름> 디스크위치예시
mkfs.xfs /dev/md0
# 또는
mkfs.ext4 /dev/md0-
여기서는 xfs 방법으로 만들어 볼 예정
-
실행 결과

mkfs로 생성 가능한 파일 시스템 확인 방법
ls /sbin/mkfs.*- 실행 결과

4-2. 파일 시스템 점검하기
파일 시스템 타입 확인
blkid /dev/md0- 예시 출력

- UUID랑 TYPE 있으면 OK
마운트 전 점검
cat /proc/mdstat
mdadm --detail /dev/md0- 체크리스트
-
State : clean -
Failed Devices : 0 - rebuild/resync X
5. 마운트
- 마운트 명령
mkdir /data
mount /dev/md0 /data- 확인용 명령
df -h
lsblk예시
- df -h 출력 예시

| 컬럼 | 의미 |
|---|---|
| Filesystem | 디바이스 또는 논리 볼륨 |
| Size | 전체 파일시스템 크기 |
| Used | 사용 중 공간 |
| Avail | 사용 가능한 공간 |
| Use% | 사용률 |
| Mounted on | 마운트 포인트 |
6. 부팅 후 RAID 자동 인식 설정
참고 : 부팅의 과정
BIOS/UEFI
→ kernel
→ initramfs (초기 루트 환경)
→ 실제 루트 파일시스템
→ systemd
→ /etc/fstab 기반 마운트- 따라서 RAID를 인식하려면 initramfs 에 관련 정보가 있어야 한다.
mdadm 설정 저장
기본 명령어
mdadm --detail --scan >> /etc/mdadm.conf-
mdadm —defail —scan : 현재 시스템에 존재하는 RAID 정보를 스캔함
-
: 왼쪽의 출력을 오른쪽으로 전달함
-
/etc/mdadm.conf : 스캔한 RAID 정보를 /etc/mdadm.conf 에 저장함
-
예시

- 이런식으로 생김
dracut으로 initramfs 파일 수정
- dracut은 현재 시스템 설정과 /etc 폴더 안에 있는 일부 내용을 가지고 initramfs 이미지를 생성한다.
기본 명령어
dracut [옵션] <initramfs_이미지_경로> <커널_버전>예시
dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r)- -H : Host Only. 현재 시스템에 필요한 드라이버만 포함
- -f : force. 기존 내용 덮어쓰기
- /boot/initramfs-(uname -r)
- uname -r : 현재 커널 버전 정보 출력
- $(명령) : 명령 결과를 텍스트로 치환
- 예를 들어 커널 버전이 5.xx… 일 때, 위의 예시 명령은 아래로 치환된다.
dracut -H -f /boot/initramfs-5.xx....img 5.xx...출력 에시

- 현재 이 시스템 커널 레벨이 5.14.0-611.5.1.el9_7.aarch64 임
fstab (파일 시스템 테이블) 수정
파일 시스템 UUID 조회
- 기본 명령어
blkid /dev/md0- 예시

/etc/fstab 수정
- 기본 명령어
vi /etc/fstab-
텍스트 편집기로 fstab 들어가서 밑에다가 위에서 확인한 UUID랑 이것저것 쓰면 됨
-
예시

- 의미
<장치> <마운트포인트> <FS> <옵션> <dump> <fsck>
UUID=... /data xfs defaults 0 0| 필드 | 의미 |
|---|---|
| 1 | 장치 (UUID 권장) |
| 2 | 마운트 디렉터리 |
| 3 | 파일시스템 |
| 4 | 마운트 옵션 |
| 5 | dump 백업 여부 |
| 6 | fsck 검사 순서 |
fstab 검증
- 기본 명령어
mount -a- -a : fstab 읽어서 그 안에 있는거 전부 마운트함
- 이 때 오류생기면 fstab 잘못되었다는 거니까 재부팅하면 일남
최종 확인
- 한 번 재부팅 하고 lsblk 실행
- 아래처럼 설정한 디스크들 밑에 생성한 RAID가 보이면 성공!

다음에 할 것
- 가상머신의 디스크 하나를 고장내고 복구해보기