infra
Platform

모듈 맵

[Linux] RAID 구성과 장애 복구

0 / 20 완료

펼치기

Linux-master · 06 / 20

[Linux] RAID 구성과 장애 복구

소프트웨어 RAID(mdadm)로 RAID 0/1/5/6을 구성하고 디스크 장애 발생 시 복구하는 절차를 실습합니다

🚨INCIDENT ALERT
HIGH

오전 9시, NAS 서버에서 S.M.A.R.T 경고 이메일이 왔습니다. "Reallocated Sector Count가 임계값을 초과했습니다." 디스크가 곧 죽을 것 같다는 신호입니다. 서비스를 내리지 않고 해당 디스크를 교체해야 하는데, RAID가 어떻게 구성됐는지, 지금 어레이 상태가 정상인지, 교체 순서를 잘못 밟으면 데이터를 날릴 수도 있습니다. mdadm을 다룰 줄 아는 사람과 모르는 사람의 차이가 여기서 나옵니다.

RAID 구성과 장애 복구

데이터센터에서 디스크 장애는 예방할 수 없는 현실입니다. 기업용 디스크의 연간 장애율은 약 1~5%로, 수십 대의 서버를 운영하면 매년 수 건의 디스크 장애를 경험하게 됩니다. RAID(Redundant Array of Independent Disks)는 여러 디스크를 논리적으로 묶어 성능 향상과 장애 허용성을 동시에 제공하는 기술입니다. 이 챕터에서는 리눅스 소프트웨어 RAID 도구인 mdadm을 사용하여 RAID 1을 구성하고, 실제 장애 시나리오에서 복구하는 전체 절차를 실습합니다.


이번 챕터에서 배울 것

소프트웨어 RAID 구성과 장애 복구는 리눅스마스터 1급의 핵심 실기 주제입니다. RAID 레벨별 차이를 명확히 이해하고 mdadm 명령 흐름을 실습을 통해 체득합니다.

  • 1RAID 레벨 비교 (0/1/5/6/10) — 최소 디스크 수, 장애 허용 수, 실효 용량, 성능
  • 2패리티 계산 원리 — XOR 연산으로 RAID 5/6의 복구 메커니즘 이해
  • 3mdadm으로 소프트웨어 RAID 구성 및 /proc/mdstat 출력 해석
  • 4디스크 장애 시뮬레이션과 복구: --fail → --remove → 물리 교체 → --add
  • 5/etc/mdadm.conf 영구 설정과 hot spare 구성
실습 환경 준비

RAID 실습에는 최소 2개의 여분 디스크(또는 루프 디바이스)가 필요합니다. 운영 서버의 데이터 디스크가 아닌 별도 디스크나 VM의 가상 디스크를 사용하세요. mdadm이 없으면 sudo apt install mdadm 또는 sudo yum install mdadm으로 설치합니다.

여분의 가상 디스크 2개 이상 준비 (각 1~5GB 권장)
lsblk
mdadm 패키지 설치 확인
mdadm --version
기존 RAID 어레이 목록 확인
cat /proc/mdstat
root 권한 확인
sudo -v
💡개념

RAID 레벨 비교와 패리티 원리

RAID 레벨별 특성

각 RAID 레벨은 서로 다른 성능, 용량 효율, 장애 허용성 트레이드오프를 가집니다.

RAID 0 — 스트라이핑 (성능 우선)

RAID 0 데이터 분산:
디스크1: [A1][A3][A5][A7]
디스크2: [A2][A4][A6][A8]

쓰기: 데이터를 디스크 수로 분할하여 병렬 기록
  • 최소 디스크: 2개
  • 장애 허용: 0개 (디스크 1개 장애 → 전체 데이터 손실)
  • 실효 용량: N × 디스크 크기 (100% 활용)
  • 용도: 임시 데이터, 고성능 캐시 (데이터 안전성 불필요)

RAID 1 — 미러링 (안전성 우선)

RAID 1 미러링:
디스크1: [A][B][C][D]  ← 원본
디스크2: [A][B][C][D]  ← 동일한 복사본
  • 최소 디스크: 2개
  • 장애 허용: N-1개 (2개 중 1개 장애 허용)
  • 실효 용량: 디스크 크기 × 1 (50% 효율)
  • 용도: OS 디스크, 소용량 중요 데이터

RAID 5 — 분산 패리티 (균형형)

RAID 5 패리티 분산 (4개 디스크):
디스크1: [A1][B1][C1][P4]
디스크2: [A2][B2][P3][D1]
디스크3: [A3][P2][C3][D2]
디스크4: [P1][B4][C4][D3]

P = 패리티 블록 (해당 스트라이프의 XOR 값)
  • 최소 디스크: 3개
  • 장애 허용: 1개
  • 실효 용량: (N-1) × 디스크 크기
  • 용도: 파일 서버, NAS (가장 널리 사용)

RAID 6 — 이중 패리티 (높은 안전성)

RAID 6 이중 패리티:
각 스트라이프마다 P(XOR 패리티), Q(갈루아 필드 패리티) 2개 저장
→ 동시에 2개 디스크 장애 허용
  • 최소 디스크: 4개
  • 장애 허용: 2개
  • 실효 용량: (N-2) × 디스크 크기
  • 용도: 대용량 SATA 디스크 환경, 재구축 시간이 긴 환경

RAID 10 — 미러+스트라이핑 (성능+안전성)

RAID 10 구성 (4개 디스크):
Mirror 쌍1: 디스크1 ↔ 디스크2  (스트라이프 절반)
Mirror 쌍2: 디스크3 ↔ 디스크4  (스트라이프 절반)
  • 최소 디스크: 4개
  • 장애 허용: 각 미러 쌍에서 1개씩 (최대 2개, 단 같은 쌍이 아닌 경우)
  • 실효 용량: 전체의 50%
  • 용도: 고성능 DB 서버

RAID 레벨 비교표

레벨최소 디스크장애 허용실효 용량읽기 성능쓰기 성능
RAID 020N × 1매우 빠름매우 빠름
RAID 12N-11개 분량빠름보통
RAID 531(N-1) × 1빠름느림(패리티 계산)
RAID 642(N-2) × 1빠름더 느림
RAID 104쌍당 1개N/2 × 1매우 빠름빠름

패리티 계산 원리 — XOR 연산

RAID 5/6의 패리티는 XOR(배타적 논리합) 연산으로 계산합니다.

XOR 진리표:
0 XOR 0 = 0
0 XOR 1 = 1
1 XOR 0 = 1
1 XOR 1 = 0  ← 같으면 0

패리티 계산 예시 (3개 디스크):
디스크1: 1010
디스크2: 1100
디스크3: 0110
패리티P: 1010 XOR 1100 XOR 0110 = 0000

복구 원리 (디스크2 장애 시):
디스크2 = 패리티P XOR 디스크1 XOR 디스크3
디스크2 = 0000 XOR 1010 XOR 0110 = 1100  ← 복구됨

💡개념

mdadm 명령과 /proc/mdstat 해석

mdadm 핵심 명령

mdadm(multiple device admin)은 리눅스 소프트웨어 RAID를 관리하는 표준 도구입니다.

어레이 생성

로컬 터미널
# RAID 1 생성 (디스크 2개, 어레이 /dev/md0)
sudo mdadm --create /dev/md0 \
  --level=1 \
  --raid-devices=2 \
  /dev/sdb1 /dev/sdc1

# RAID 5 생성 (디스크 3개)
sudo mdadm --create /dev/md1 \
  --level=5 \
  --raid-devices=3 \
  /dev/sdb /dev/sdc /dev/sdd

# hot spare 포함 RAID 5 (4개 디스크, 1개 스페어)
sudo mdadm --create /dev/md1 \
  --level=5 \
  --raid-devices=3 \
  --spare-devices=1 \
  /dev/sdb /dev/sdc /dev/sdd /dev/sde

어레이 상태 확인

로컬 터미널
# 전체 RAID 상태 실시간 확인
cat /proc/mdstat
Personalities : [raid1] [raid5] [raid6]
md0 : active raid1 sdb1[0] sdc1[1]
      10476544 blocks super 1.2 [2/2] [UU]

md1 : active raid5 sdd[2] sdc[1] sdb[0]
      20948992 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]

unused devices: <none>

[UU] 상태 기호 해석:

기호의미
UUp — 해당 위치 디스크 정상
_장애(faulty) 또는 missing 디스크
[2/2]필요한 디스크 수 / 현재 활성 디스크 수
로컬 터미널
# 특정 어레이 상세 정보
sudo mdadm --detail /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Wed Mar 28 09:00:00 2026
        Raid Level : raid1
        Array Size : 10476544 (9.99 GiB 10.73 GB)
     Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Wed Mar 28 09:05:00 2026
             State : clean
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

            Layout : -
        Chunk Size : 512K

Consistency Policy : resync

              Name : server1:0 (local to host server1)
              UUID : a1b2c3d4:e5f6a7b8:c9d0e1f2:a3b4c5d6

    Number   Major   Minor   RaidDevice State
       0     8       17        0      active sync   /dev/sdb1
       1     8       33        1      active sync   /dev/sdc1
로컬 터미널
# 디스크의 RAID 슈퍼블록 정보 확인
sudo mdadm --examine /dev/sdb1

/etc/mdadm.conf 영구 설정

로컬 터미널
# 현재 어레이 정보를 mdadm.conf에 저장
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm.conf

# initramfs 업데이트 (부팅 시 자동 조립 적용)
sudo update-initramfs -u        # Debian/Ubuntu
sudo dracut -f                  # RHEL/CentOS/Rocky
# /etc/mdadm.conf 예시
ARRAY /dev/md0 metadata=1.2 name=server1:0 UUID=a1b2c3d4:e5f6a7b8:...
ARRAY /dev/md1 metadata=1.2 name=server1:1 UUID=b2c3d4e5:f6a7b8c9:...

RAID 1 어레이 구성 — 디스크 2개로 미러링

목표

/dev/sdb와 /dev/sdc를 사용하여 RAID 1 어레이를 구성하고 파일시스템을 올려 데이터 쓰기까지 확인합니다.

로컬 터미널
mkdir -p /tmp/linux-master/part1/raid
# RAID 실습용 가상 디스크 4개 생성
for i in 1 2 3 4; do
  dd if=/dev/zero of=/tmp/linux-master/part1/raid/disk${i}.img bs=1M count=512 2>/dev/null
  sudo losetup -f --show /tmp/linux-master/part1/raid/disk${i}.img
done
echo "RAID 실습용 루프백 장치 4개 준비 완료"

1단계: 실습 디스크 준비 확인

로컬 터미널
lsblk /dev/sdb /dev/sdc
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sdb    8:16   0  10G  0 disk
sdc    8:32   0  10G  0 disk

2단계: RAID 1 어레이 생성

로컬 터미널
sudo mdadm --create /dev/md0 \
  --level=1 \
  --raid-devices=2 \
  /dev/sdb /dev/sdc
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

3단계: 초기 동기화 확인

로컬 터미널
cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc[1] sdb[0]
      10476544 blocks super 1.2 [2/2] [UU]
      [=======>.............]  resync = 38.2% (4003840/10476544) finish=0.5min speed=200192K/sec

unused devices: <none>
로컬 터미널
# 동기화 완료 대기
watch -n1 cat /proc/mdstat
md0 : active raid1 sdc[1] sdb[0]
      10476544 blocks super 1.2 [2/2] [UU]

# [UU] = 두 디스크 모두 정상, 동기화 완료

4단계: 파일시스템 생성 및 마운트

로컬 터미널
# ext4 파일시스템 생성
sudo mkfs.ext4 /dev/md0

# 마운트
sudo mkdir /raid1
sudo mount /dev/md0 /raid1

# 테스트 데이터 쓰기
echo "RAID1 test data" | sudo tee /raid1/test.txt
df -hT /raid1
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/md0       ext4  9.8G   28K  9.3G   1% /raid1

5단계: mdadm.conf 저장 및 fstab 등록

로컬 터미널
# RAID 설정 영구 저장
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm.conf

# initramfs 업데이트
sudo update-initramfs -u 2>/dev/null || sudo dracut -f

# fstab 등록
echo '/dev/md0  /raid1  ext4  defaults  0  2' | sudo tee -a /etc/fstab

sudo mount -a && echo "fstab 검증 OK"

디스크 장애 시뮬레이션과 복구 — --fail, --remove, --add

목표

RAID 1 어레이에서 디스크 장애를 시뮬레이션하고, 새 디스크로 교체하여 재구축 완료까지 모니터링합니다.

로컬 터미널
mkdir -p /tmp/linux-master/part1/raid
# RAID 실습용 가상 디스크 4개 생성
for i in 1 2 3 4; do
  dd if=/dev/zero of=/tmp/linux-master/part1/raid/disk${i}.img bs=1M count=512 2>/dev/null
  sudo losetup -f --show /tmp/linux-master/part1/raid/disk${i}.img
done
echo "RAID 실습용 루프백 장치 4개 준비 완료"

1단계: 장애 디스크 마킹 (--fail)

로컬 터미널
# sdb를 faulty 상태로 마킹 (S.M.A.R.T 경고 수신 후 예방적 교체 시나리오)
sudo mdadm --fail /dev/md0 /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
로컬 터미널
cat /proc/mdstat
md0 : active raid1 sdc[1] sdb[0](F)
      10476544 blocks super 1.2 [2/1] [_U]

# (F) = Faulty 상태, [_U] = sdb 장애, sdc 정상
로컬 터미널
sudo mdadm --detail /dev/md0 | grep -A5 "Number"
    Number   Major   Minor   RaidDevice State
       -       0        0        0      removed
       1       8       32        1      active sync   /dev/sdc

       0       8       16        -      faulty   /dev/sdb

2단계: 장애 디스크 제거 (--remove)

로컬 터미널
sudo mdadm --remove /dev/md0 /dev/sdb
mdadm: hot removed /dev/sdb from /dev/md0
로컬 터미널
# 이제 물리적으로 디스크를 교체 (Hot-swap 가능한 경우)
# 실습에서는 동일 디스크를 재사용하거나 /dev/sdd로 교체 가정

3단계: 새 디스크 추가 및 재구축 (--add)

로컬 터미널
# 새 디스크 /dev/sdd 추가 (또는 교체된 /dev/sdb 재사용)
sudo mdadm --add /dev/md0 /dev/sdd
mdadm: added /dev/sdd
로컬 터미널
# 재구축(resync) 진행 상황 모니터링
watch -n2 cat /proc/mdstat
md0 : active raid1 sdd[2] sdc[1]
      10476544 blocks super 1.2 [2/1] [_U]
      [=============>.......]  recovery = 68.3% (7161856/10476544) finish=0.2min speed=198920K/sec
로컬 터미널
# 재구축 완료 확인
cat /proc/mdstat
md0 : active raid1 sdd[2] sdc[1]
      10476544 blocks super 1.2 [2/2] [UU]

# [UU] = 재구축 완료, 두 디스크 모두 정상

4단계: 데이터 무결성 확인

로컬 터미널
# 원본 데이터 확인
cat /raid1/test.txt
# RAID1 test data  ← 데이터 보존 확인

Hot Spare 설정

로컬 터미널
# 어레이에 hot spare 디스크 추가
# 장애 발생 시 자동으로 재구축 시작
sudo mdadm --add /dev/md0 /dev/sde

sudo mdadm --detail /dev/md0 | grep spare
#        2       8       64        -      spare   /dev/sde

RAID 어레이 상태 모니터링과 알림 설정

목표

/proc/mdstat와 mdadm --detail로 어레이 상태를 모니터링하고, 이메일 알림을 설정합니다.

실시간 상태 모니터링

로컬 터미널
# 모든 RAID 어레이 상태 한눈에 보기
cat /proc/mdstat
Personalities : [raid1] [raid5] [raid6]
md0 : active raid1 sdd[2] sdc[1]
      10476544 blocks super 1.2 [2/2] [UU]

md1 : active raid5 sdf[3] sde[2] sdd[1] sdc[0]
      31457280 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]

unused devices: <none>
로컬 터미널
# 어레이 세부 상태 확인
sudo mdadm --detail /dev/md0

# 디스크 슈퍼블록 확인
sudo mdadm --examine /dev/sdc
/dev/sdc:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : a1b2c3d4:e5f6a7b8:c9d0e1f2:a3b4c5d6
           Name : server1:0
  Creation Time : Wed Mar 28 09:00:00 2026
     Raid Level : raid1
   Raid Devices : 2
 Avail Dev Size : 20953088 (9.99 GiB 10.73 GB)
     Array Size : 10476544 (9.99 GiB 10.73 GB)

mdadm 모니터 데몬 설정

로컬 터미널
# /etc/mdadm.conf에 이메일 알림 설정
echo 'MAILADDR admin@company.com' | sudo tee -a /etc/mdadm.conf

# mdadm 모니터 데몬 시작 (장애 시 자동 이메일 발송)
sudo mdadm --monitor --daemonise --mail=admin@company.com \
  --delay=30 /dev/md0 /dev/md1
서버 터미널
# systemd로 mdmonitor 서비스 활성화
sudo systemctl enable mdmonitor
sudo systemctl start mdmonitor
sudo systemctl status mdmonitor
● mdmonitor.service - MD array monitor
     Loaded: loaded (/usr/lib/systemd/system/mdmonitor.service; enabled)
     Active: active (running) since Wed 2026-03-28 09:30:00 KST

문제 상황

RAID 어레이를 구성하고 마운트했으나 재부팅 후 /dev/md0이 존재하지 않아 마운트에 실패합니다.

로컬 터미널
# 재부팅 후 확인
cat /proc/mdstat
# Personalities :
# unused devices: <none>  ← 어레이 없음

ls /dev/md*
# ls: cannot access '/dev/md*': No such file or directory

원인 분석

소프트웨어 RAID는 부팅 시 /etc/mdadm.conf를 참조하여 어레이를 자동으로 조립(assemble)합니다. 이 파일에 어레이 정보가 없으면 자동 조립이 실패합니다.

로컬 터미널
cat /etc/mdadm.conf
# DEVICE partitions  ← 어레이 ARRAY 항목 없음

해결 방법

로컬 터미널
# 1. 디스크에서 RAID 슈퍼블록 스캔하여 어레이 감지
sudo mdadm --assemble --scan

# 2. 조립 성공 여부 확인
cat /proc/mdstat
md0 : active raid1 sdd[2] sdc[1]
      10476544 blocks super 1.2 [2/2] [UU]
로컬 터미널
# 3. 현재 어레이를 mdadm.conf에 영구 등록
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm.conf

cat /etc/mdadm.conf
DEVICE partitions
ARRAY /dev/md0 metadata=1.2 name=server1:0 UUID=a1b2c3d4:e5f6a7b8:...
로컬 터미널
# 4. initramfs 업데이트 (부팅 시 조립 적용)
sudo update-initramfs -u   # Debian/Ubuntu
# 또는
sudo dracut -f             # RHEL/CentOS/Rocky Linux

# 5. 재부팅 후 검증
sudo reboot
# 재부팅 후 cat /proc/mdstat로 자동 조립 확인

예방 포인트

  • RAID 생성 직후 mdadm --detail --scan >> /etc/mdadm.conf 실행을 워크플로에 포함합니다
  • update-initramfs 또는 dracut -f로 initramfs를 갱신해야 부팅 초기 단계에서 어레이가 조립됩니다

문제 상황

RAID 5 어레이에 디스크를 추가하여 재구축이 시작됐는데, 같은 서버에서 운영 중인 DB 서비스의 응답 시간이 크게 증가했습니다.

로컬 터미널
cat /proc/mdstat
md1 : active raid5 sde[3] sdd[2] sdc[1] sdb[0]
      31457280 blocks super 1.2 level 5, 512k chunk [4/3] [UUU_]
      [====>................]  recovery = 22.1% (2318848/10485760) finish=5.3min speed=200000K/sec

원인 분석

RAID 재구축 시 커널은 기본적으로 가능한 최대 속도로 재구축을 수행합니다. 이로 인해 서비스 I/O와 재구축 I/O가 경합하여 서비스 성능이 저하됩니다.

해결 방법

로컬 터미널
# 현재 sync_speed 한계 확인
cat /proc/sys/dev/raid/speed_limit_min
cat /proc/sys/dev/raid/speed_limit_max
# speed_limit_min: 1000 (KB/s)
# speed_limit_max: 200000 (KB/s) ← 200MB/s

# 재구축 속도를 50MB/s로 제한 (서비스 I/O 영향 최소화)
echo 50000 | sudo tee /proc/sys/dev/raid/speed_limit_max

# 적용 확인
cat /proc/mdstat
# speed=50123K/sec ← 속도 제한 적용됨
로컬 터미널
# 영구 적용 (재부팅 후에도 유지)
cat << 'EOF' | sudo tee /etc/sysctl.d/99-raid.conf
dev.raid.speed_limit_min = 1000
dev.raid.speed_limit_max = 50000
EOF

sudo sysctl -p /etc/sysctl.d/99-raid.conf
로컬 터미널
# 재구축 완료 후 원래 속도 제한으로 복원
echo 200000 | sudo tee /proc/sys/dev/raid/speed_limit_max

운영 시 권장 사항

  • 재구축 중에는 I/O 집중 작업(백업, 대용량 쿼리)을 피합니다
  • 비업무 시간(야간)에 재구축이 완료되도록 속도를 조절합니다
  • 모니터링 대시보드에서 I/O wait 지표를 주시합니다 (iostat -x 1)

💼
실무 맥락
현업 패턴

상황

파일 서버(NAS)의 RAID 5 어레이를 구성하는 디스크 /dev/sdc에서 S.M.A.R.T 경고(Reallocated Sector Count 급증)가 발생했습니다. 서비스 중단 없이 해당 디스크를 교체해야 합니다.

S.M.A.R.T 경고 확인

로컬 터미널
# S.M.A.R.T 상태 확인 (smartmontools 필요)
sudo smartctl -a /dev/sdc | grep -E "Reallocated|Pending|Uncorrectable"
  5 Reallocated_Sector_Ct   0x0033  001  001  036    Pre-fail  ...  2847
197 Current_Pending_Sector  0x0032  098  098  000    Old_age   ...   213
198 Offline_Uncorrectable   0x0030  098  098  000    Old_age   ...   201

무중단 교체 절차

로컬 터미널
# 1. 현재 어레이 상태 확인
sudo mdadm --detail /dev/md1
cat /proc/mdstat

# 2. 경고 디스크를 faulty로 마킹
sudo mdadm --fail /dev/md1 /dev/sdc
mdadm: set /dev/sdc faulty in /dev/md1
로컬 터미널
# 3. 어레이에서 논리적 제거
sudo mdadm --remove /dev/md1 /dev/sdc

# 4. 물리적 디스크 교체 (hot-swap 가능한 경우 서버 가동 중 교체)
#    교체 후 신규 디스크 /dev/sdc가 인식됨 확인
lsblk | grep sdc

# 5. 신규 디스크를 어레이에 추가
sudo mdadm --add /dev/md1 /dev/sdc
mdadm: added /dev/sdc
로컬 터미널
# 6. 재구축 진행 모니터링
watch -n5 'cat /proc/mdstat && echo && sudo mdadm --detail /dev/md1 | tail -10'
md1 : active raid5 sdc[4] sde[3] sdd[2] sdb[0]
      31457280 blocks super 1.2 level 5 [4/3] [U_UU]
      [=========>...........]  recovery = 47.2% (4952064/10485760) finish=0.7min
로컬 터미널
# 7. 재구축 완료 후 최종 확인
sudo mdadm --detail /dev/md1 | grep -E "State|Active|Working|Failed|Spare"
             State : clean
    Active Devices : 4
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 0

현업 포인트

  • S.M.A.R.T 모니터링은 smartd 데몬으로 자동화하여 경고를 이메일로 수신합니다
  • RAID 5는 재구축 중 추가 디스크 장애 시 데이터 손실 위험이 있으므로, 재구축 완료 전까지 I/O 부하를 줄입니다
  • 대용량 디스크(4TB+) 환경에서는 재구축 시간이 수 시간에 달하므로 RAID 6 또는 hot spare 운영을 권장합니다

정리

핵심 개념 요약

항목핵심 내용
RAID 0스트라이핑, 장애 허용 없음, 성능 최대, 실효 용량 100%
RAID 1미러링, N-1개 장애 허용, 실효 용량 50%
RAID 5분산 패리티(XOR), 1개 장애 허용, (N-1)/N 용량
RAID 6이중 패리티(P+Q), 2개 장애 허용, (N-2)/N 용량
RAID 10미러+스트라이핑, 쌍당 1개 허용, 50% 용량
/proc/mdstatU=정상, _=장애/missing, (F)=faulty
장애 복구 순서--fail--remove → 물리 교체 → --add
영구 설정mdadm --detail --scan >> /etc/mdadm.conf + update-initramfs -u

자주 사용하는 명령어 치트시트

로컬 터미널
# RAID 상태 확인
cat /proc/mdstat
sudo mdadm --detail /dev/md0
sudo mdadm --examine /dev/sdb

# RAID 생성
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc

# 장애 복구 시퀀스
sudo mdadm --fail /dev/md0 /dev/sdb    # 1. faulty 마킹
sudo mdadm --remove /dev/md0 /dev/sdb  # 2. 어레이에서 제거
sudo mdadm --add /dev/md0 /dev/sdd     # 3. 새 디스크 추가 (재구축 자동 시작)

# 영구 설정 저장
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm.conf
sudo update-initramfs -u   # Debian/Ubuntu
sudo dracut -f             # RHEL/CentOS/Rocky

지식 확인

퀴즈 — 5문제

Q1

RAID 5에서 4개의 디스크(각 1TB)를 사용할 때 실제 사용 가능한 총 용량은 얼마인가요?

Q2

RAID 6가 RAID 5와 가장 다른 점은 무엇인가요?

Q3

/proc/mdstat 출력에서 'UU_'가 표시될 때 올바른 해석은 무엇인가요?

Q4

디스크 교체 전 단계로 mdadm --fail 명령을 사용하는 목적은 무엇인가요?

Q5

RAID 0으로 구성된 어레이에서 디스크 1개에 장애가 발생했을 때 데이터 복구 가능 여부는?

0 / 5 답변

이것도 배워보세요

linux-master중급 · 75
[Linux] 네트워크 설정과 진단
Linux-master 트랙 계속