2026. 6. 14. 01:03ㆍ리눅스
Ⅰ. RAID (Redundant Array of Inexpensive / Independent Disks)
- 다수의 디스크를 논리적인 하나의 디스크로 구성해 데이터를 분산 저장하고 동시에 여러 개를 읽어들이는 기능 제공
- 데이터 저장 및 관리에 대한 성능과 속도가 향상되고, 이중성, 신뢰성, 안정성을 보장받음
Ⅰ-Ⅰ. RAID 방식
| RAID | 구분 | 설명 |
| 개념 | 여러 개의 하드디스크 (또는 SSD)를 하나의 논리적 디스크처럼 묶어 성능과 데이터 안정성을 향상시키는 기술 |
|
| 특징 | 다수의 디스크를 논리적인 하나의 디스크로 구성하여 데이터를 분산 저장하고 동시에 여러 개를 읽어들이는 기능 제공 |
|
| 데이터 저장 및 관리에 대한 성능과 속도가 향상되고, 이중성과 신뢰성, 안정성을 보장받음 | ||
| 방식 구분 | 하드웨어 RAID (Hardware RAID) | |
| 소프트웨어 RAID (Software RAID) | ||
| 하드웨어 RAID | 단위 | 디스크 단위로 RAID 구성 |
| 필요 장비 | RAID Controller (전용 하드웨어 장치) | |
| 역할 | Controller가 RAID 연산 (복제, 패리티, 분산 저장 등)을 직접 수행 | |
| 장점 | CPU 부하 거의 없음 | |
| 속도 빠르고 안정성 높음 | ||
| 장애 복구 용이 | ||
| 단점 | 고가의 Controller Card 필요 | |
| 구성 비용 높음 | ||
| 적용 예시 | 서버, 데이터 센터, 고성능 NAS 등 | |
| 소프트웨어 RAID | 단위 | 파티션 단위로 RAID 구성 |
| 필요 장비 | 별도 하드웨어 불필요 | |
| RAID 관리 프로그램 (mdadm) 이용 | ||
| 역할 | 운영체제 (OS)가 RAID 연산을 CPU 자원으로 처리 | |
| 장점 | 별도 장비 필요 없음 (저비용) | |
| 설정 간단하여 일반 PC에서도 가능 | ||
| 단점 | CPU 부하 발생 | |
| 하드웨어 RAID보다 안정성과 성능 낮음 | ||
| 적용 예시 | 개인용 PC, 중소규모 서버, 테스트 환경 등 |
Ⅱ. RAID 구성을 위한 파티션 작업 실시

# 주 파티션 1 생성 ( /dev/sdc 디스크)
fdisk /dev/sdc 명령을 통해 /dev/sdc 디스크의 파티션 설정을 위해 진입
fdisk의 n 옵션을 통해 새로운 파티션 생성
fdisk의 p 옵션을 통해 생성한 새로운 파티션을 주 파티션으로 설정
fdisk의 default 옵션을 통해 주 파티션에 번호 1 부여
fdisk의 default 옵션을 통해 주 파티션 1의 첫 번째 섹터의 범위를 2048로 설정
fdisk의 default 옵션을 통해 주 파티션 1의 마지막 섹터 범위를 417791로 설정
fdisk의 t 옵션을 통해 주 파티션 1의 타입 변경
FD 옵션을 통해 주 파티션 1의 타입을 Linux RAID autodetect (RAID 자동 감지용) 타입으로 변경
fdisk의 p 옵션을 통해 주 파티션 1의 타입이 잘 변경되었는지 확인
fdisk의 w 옵션을 통해 저장하고 나가기

# 주 파티션 1 생성 ( /dev/sdd 디스크)
fdisk /dev/sdd 명령을 통해 /dev/sdd 디스크의 파티션 설정을 위해 진입
fdisk의 n 옵션을 통해 새로운 파티션 생성
fdisk의 p 옵션을 통해 생성한 새로운 파티션을 주 파티션으로 설정
fdisk의 default 옵션을 통해 주 파티션에 번호 1 부여
fdisk의 default 옵션을 통해 주 파티션 1의 첫 번째 섹터의 범위를 2048로 설정
fdisk의 default 옵션을 통해 주 파티션 1의 마지막 섹터 범위를 417791로 설정
fdisk의 t 옵션을 통해 주 파티션 1의 타입 변경
FD 옵션을 통해 주 파티션 1의 타입을 Linux RAID autodetect (RAID 자동 감지용) 타입으로 변경
fdisk의 p 옵션을 통해 주 파티션 1의 타입이 잘 변경되었는지 확인
fdisk의 w 옵션을 통해 저장하고 나가기

# 주 파티션 1 생성 ( /dev/sde디스크)
fdisk /dev/sde 명령을 통해 /dev/sde 디스크의 파티션 설정을 위해 진입
fdisk의 n 옵션을 통해 새로운 파티션 생성
fdisk의 p 옵션을 통해 생성한 새로운 파티션을 주 파티션으로 설정
fdisk의 default 옵션을 통해 주 파티션에 번호 1 부여
fdisk의 default 옵션을 통해 주 파티션 1의 첫 번째 섹터의 범위를 2048로 설정
fdisk의 default 옵션을 통해 주 파티션 1의 마지막 섹터 범위를 417791로 설정
fdisk의 t 옵션을 통해 주 파티션 1의 타입 변경
FD 옵션을 통해 주 파티션 1의 타입을 Linux RAID autodetect (RAID 자동 감지용) 타입으로 변경
fdisk의 p 옵션을 통해 주 파티션 1의 타입이 잘 변경되었는지 확인
fdisk의 w 옵션을 통해 저장하고 나가기

# 주 파티션 1 생성 ( /dev/sdf 디스크)
fdisk /dev/sdf 명령을 통해 /dev/sdf 디스크의 파티션 설정을 위해 진입
fdisk의 n 옵션을 통해 새로운 파티션 생성
fdisk의 p 옵션을 통해 생성한 새로운 파티션을 주 파티션으로 설정
fdisk의 default 옵션을 통해 주 파티션에 번호 1 부여
fdisk의 default 옵션을 통해 주 파티션 1의 첫 번째 섹터의 범위를 2048로 설정
fdisk의 default 옵션을 통해 주 파티션 1의 마지막 섹터 범위를 417791로 설정
fdisk의 t 옵션을 통해 주 파티션 1의 타입 변경
FD 옵션을 통해 주 파티션 1의 타입을 Linux RAID autodetect (RAID 자동 감지용) 타입으로 변경
fdisk의 p 옵션을 통해 주 파티션 1의 타입이 잘 변경되었는지 확인
fdisk의 w 옵션을 통해 저장하고 나가기

# 주 파티션 1 생성 ( /dev/sdg 디스크)
fdisk /dev/sdg 명령을 통해 /dev/sdg 디스크의 파티션 설정을 위해 진입
fdisk의 n 옵션을 통해 새로운 파티션 생성
fdisk의 p 옵션을 통해 생성한 새로운 파티션을 주 파티션으로 설정
fdisk의 default 옵션을 통해 주 파티션에 번호 1 부여
fdisk의 default 옵션을 통해 주 파티션 1의 첫 번째 섹터의 범위를 2048로 설정
fdisk의 default 옵션을 통해 주 파티션 1의 마지막 섹터 범위를 417791로 설정
fdisk의 t 옵션을 통해 주 파티션 1의 타입 변경
FD 옵션을 통해 주 파티션 1의 타입을 Linux RAID autodetect (RAID 자동 감지용) 타입으로 변경
fdisk의 p 옵션을 통해 주 파티션 1의 타입이 잘 변경되었는지 확인
fdisk의 w 옵션을 통해 저장하고 나가기

fdisk -l /dev/sd* | grep raid 명령을 통해 /dev/sd로 시작하는 모든 디스크에서 RAID와 관련된 내용 출력
Ⅲ. RAID 유형
Ⅲ -Ⅰ. RAID 0 (Striping)

| RAID 0 (Striping) |
구분 | 설명 | |
| 개념 | 데이터를 여러 디스크에 분산 (Striping)해서 저장하는 방식으로 성능 (속도) 향상을 목적으로 하는 RAID 구조 |
||
| 데이터를 여러 디스크에 나누어 동시에 저장 및 읽기 때문에 속도 빠르지만 데이터 복구 기능 (패리티, Mirroring)이 없어 안정성은 낮은 방식 |
|||
| 구성 요소 | 구성 요소 | 설명 | |
| 디스크 개수 | 최소 2개 이상 필요 | ||
| 데이터 단위 | Stripe 단위로 나누어 저장 | ||
| 패리티 (Parity) | 없음 (즉, 장애 복구 기능 없음) | ||
| 동작 원리 | Striping 구조 | 큰 파일을 여러 개의 블록 (Stripe)으로 나눠서 각 디스크에 교차 분산 저장 | |
| 장점 | 항목 | 설명 | |
| 속도 향상 | 데이터가 여러 디스크에 병렬로 저장되고 읽히기 때문에 입출력 속도가 매우 빠름 |
||
| 용량 효율 100% | 모든 디스크 공간이 실제 데이터 저장에 사용됨 | ||
| 적합한 환경 | 게임, 영상 편집, 고속 데이터 처리 등 속도 중심 환경 | ||
| 단점 | 항목 | 설명 | |
| 데이터 손실 위험 높음 | 하나의 디스크라도 고장나면 전체 데이터 복구 불가 | ||
| 내결함성 (Fault Tolerance) |
없음 (복구 불가) | ||
| 적합하지 않은 환경 | 데이터 안정성이 중요한 DB 서버, 금융 시스템 등 | ||
● 스트라이핑 (Striping)
| Striping (스트라이핑) |
구분 | 설명 | |
| 개념 | 데이터를 여러 개의 디스크 (또는 저장 장치)에 조각내어 병렬로 분산 저장하는 기법 | ||
| 데이터 분산 저장 기법 | |||
| 동작 원리 | 하나의 큰 파일을 여러 개의 블록 (Stripe)으로 나눠서 각 디스크에 번갈아가며 순서대로 저장하는 방식 | ||
| 특징 | 항목 | 설명 | |
| 저장 단위 | Stripe (데이터를 일정 크기로 나눈 블록 단위) | ||
| 저장 방식 | 여러 디스크에 순차적으로 분산 저장 | ||
| 입출력 (I/O) 방식 | 여러 디스크가 병렬로 읽고 쓰기 | ||
| 복구 기능 | 없음 (Parity나 Mirroring 미지원) | ||
| 필요 디스크 수 | 최소 2개 이상 | ||
| 속도 효과 | 읽기, 쓰기 속도 향상 (병렬 처리) | ||
| 장점 | 항목 | 설명 | |
| 고속 성능 | 여러 디스크가 동시에 작업 -> I/O 처리 속도 향상 | ||
| 공간 효율 100% | 모든 디스크 공간이 실제 데이터 저장에 사용됨 | ||
| 적합한 용도 | 영상 편집, 3D 렌러딩, 게임 등 대용량, 고속 작업 환경 | ||
| 단점 | 항목 | 설명 | |
| 내결함성 (Fault Tolerance) |
없음 (한 디스크라도 고장 나면 전체 데이터 손실) | ||
| 데이터 복구 불가 | RAID 1, 5처럼 백업 구조가 없어 복구 불가능 | ||
| 데이터 안정성 낮음 | 고성능 위주 환경에는 적합하지만 중요한 데이터엔 부적합 | ||
● /dev/sdc1(200M), /dev/sdd1(200M), /dev/sde1(200M) 디스크를 RAID 0으로 구성

# /dev/md0 생성 (RAID 0)
mdadm 명령을 통해 리눅스에서 소프트웨어 RAID 생성하고 관리하도록 설정
--create 옵션을 통해 새로운 RAID 장치 생성
/dev/md0 옵션을 통해 RAID로 생성될 논리 디바이스 이름을 /dev/md0으로 생성
--level=0 옵션을 통해 RAID 레벨 0 (Striping) 선택
-> 데이터를 여러 디스크에 분할 저장하여 속도를 향상시키는 방식
--raid-devices=3 옵션을 통해 RAID에 참여하는 실제 디스크 또는 파티션 개수 3개로 설정
/dev/sdc1 /dev/sdd1 /dev/sde1 옵션을 통해 RAID에 참여할 세 개의 파티션 경로 설정
ls -l /dev/md0 명령을 통해 /dev/md0 디바이스 파일의 상세 정보 확인
fdisk -l /dev/md0 명령을 통해 /dev/md0 디바이스의 파티션 테이블과 용량과 섹터 정보 나열
mdadm --detail --scan -v 명령을 통해 현재 시스템에서 인식한 모든 md 배열을 스캔하여
mdadm.conf에 넣을 구성 라인 자세히 출력
cat /proc/mdstat 명령을 통해 현재 시스템의 소프트웨어 RAID 상태를 보여주는
가상 파일인 /proc/mdstat 내용 확인

mkfs -t ext4 /dev/md0 > /dev/null 명령을 통해 /dev/md0 디바이스에 ext4 타입의 파일 시스템을 설치하고
명령어 출력 결과를 /dev/null로 리다이렉션하여 화면에 아무것도 출력되지 않도록 설정
# /mnt/raid0 디렉터리 생성
mkdir /mnt/raid0 명령을 통해 mount할 때 사용될 /mnt/raid0 임시 디렉터리 생성
# /dev/md0과 /mnt/raid0 디렉터리 mount 작업
mount /dev/md0 /mnt/raid0 명령을 통해 /dev/md0과 /mnt/raid0 mount
df -h 명령을 통해 잘 mount 되었는지 확인

# /dev/md0과 /mnt/raid0 디렉터리 mount 작업 해지
umount /dev/md0 명령을 통해 /dev/md0과 /mnt/raid0 mount 해제
# /dev/md0 정지
mdadm --stop /dev/md0 명령을 통해 활성화된 RAID 배열인 /dev/md0 정지
cat /proc/mdstat 명령을 통해 현재 시스템의 소프트웨어 RAID 상태를 보여주는
가상 파일인 /proc/mdstat 내용 확인
# /dev/sdc1, /dev/sdd1, /dev/sde1 삭제
mdadm --zero-superblock /dev/sdc1 /dev/sdd1 /dev/sde1 명령을 통해 각 파티션의 RAID 슈퍼블록 삭제
mdadm --examine /dev/sdc1 /dev/sdd1 /dev/sde1 명령을 통해
지정된 파티션의 RAID 슈퍼블록이 잘 삭제되었는지 확인
ls -l /dev/md0 명령을 통해 /dev/md0 디바이스가 잘 삭제되었는지 확인
Ⅲ -Ⅱ. RAID 1 (Mirroring)

| RAID 1 (Mirroring) |
구분 | 설명 | |
| 개념 | 데이터를 두 개 이상의 디스크에 완전히 동일하게 복제 (Mirroring)하여 데이터 안전성 (무결성)을 극대화하는 방식 |
||
| 같은 데이터를 두 개의 디스크에 동시에 저장하기 때문에 하나의 디스크가 고장나더라도 다른 디스크에서 데이터 그대로 사용 가능 |
|||
| 구성 요소 | 항목 | 설명 | |
| 디스크 개수 | 최소 2개 이상 필요 | ||
| 데이터 저장 방식 | 모든 데이터를 동일하게 복제 저장 | ||
| 패리티 (Parity) | 사용하지 않음 (대신 완전 복제) | ||
| 용량 효율 | 50% (두 개 중 한 개는 복제용으로 사용) | ||
| 동작 원리 | Mirroring 구조 | 한 쪽이 죽어도 다른 쪽이 복제되어 대신 살아남는 구조 -> 이중화 구조 (Fault Tolerant System) |
|
| 장점 | 항목 | 설명 | |
| 데이터 안정성 높음 | 한 디스크 손상 시 다른 디스크로 복구 가능 | ||
| 복구 속도 빠름 | 별도 복구 과정 없이 자동으로 동작 (즉시 사용 가능) | ||
| 읽기 성능 향상 | 두 디스크가 동시에 읽기 처리 가능 (병렬 읽기) | ||
| 적합한 환경 | 데이터 무결성이 중요한 서버, 금융 / 회계 시스템 등 | ||
| 단점 |
항목 | 설명 | |
| 저장 효율 낮음 | 동일 데이터 복제 -> 전체 용량의 50%만 사용 가능 | ||
| 비용 증가 | 같은 데이터를 두 번 저장해야 하므로 디스크 2배 필요 | ||
| 쓰기 속도 낮음 | 데이터를 두 번 기록해야 하므로 RAID 0보다 느림 | ||
| 3개 이상 디스크 사용 시 | 보통 2개 단위로만 복제 | ||
| 3번째 이후는 미사용 unless 설정 변경 | |||
● 미러링 (Mirroring)
| Mirroring (미러링) |
구분 | 설명 | |
| 개념 | 같은 데이터를 두 개 이상의 디스크에 동시에 복제하여 저장하는 기술 | ||
| 데이터의 안정성과 무결성을 보장하기위한 이중화 (Replication) 방법 | |||
| 한쪽 디스크에 기록된 내용이 동시에 다른 디스크에도 똑같이 복제되는 구조 | |||
| 하나의 디스크가 고장나도 다른 디스크가 즉시 대체 역할 수행 | |||
| 동작 원리 | 동작 원리 | 설명 | |
| 쓰기 (Write) 동작 원리 | 동일한 데이터가 두 개 이상의 디스크에 동시에 기록 | ||
| 기록 속도는 단일 디스크 대비 다소 느릴 수 있음 | |||
| 읽기 (Read) 동작 원리 | 데이터를 읽을 때 둘 중 속도가 더 빠른 디스크에서 읽거나 여러 디스크가 병렬로 데이터를 나눠 읽는 방식인 병렬 읽기도 가능 |
||
| 읽기 속도는 오히려 향상되는 경우도 있음 | |||
| 특징 | 항목 | 설명 | |
| 데이터 저장 방식 | 동일한 데이터를 두 개 이상의 디스크에 동시에 복제 | ||
| 주요 목적 | 데이터 보호 (무결성 보장) | ||
| 장애 복구 | |||
| 필요 디스크 수 | 최소 2개 이상 | ||
| 복구 방법 | 한쪽 디스크 손상 시, 다른 디스크로 즉시 부팅 가능 | ||
| 저장 효율 | 전체 용량의 50% (나머지는 복제본 저장용) | ||
| 성능 특성 | 읽기 빠름 | ||
| 쓰기 보통 | |||
| 적용 RAID | RAID 1 | ||
| 장점 | 항목 | 설명 | |
| 데이터 안정성 최고 수준 | 한 디스크 고장 시에도 다른 디스크에서 즉시 복구 가능 | ||
| 즉시 복구 | 별도의 복구 과정 없이 바로 사용 가능 (Failover 즉시 작동) | ||
| 읽기 성능 향상 | 병렬 읽기 가능 -> 읽기 속도 증가 | ||
| 적합한 환경 | 은행, 서버, 의료, 정부 등 데이터 손실이 절대 허용되지 않는 시스템 | ||
| 단점 | 항목 | 설명 | |
| 저장 효율 낮음 | 같은 데이터를 두 번 저장 -> 용량 절반만 실제 사용 가능 | ||
| 비용 증가 | 디스크 2배 필요 | ||
| 쓰기 속도 저하 | 동일 데이터를 동시에 두 곳에 기록하므로 RAID 0보다 느림 | ||
● /dev/sdf1(200M), /dev/sdg1(200M) 디스크를 RAID 1로 구성

# /dev/md1 생성 (RAID 1)
mdadm 명령을 통해 리눅스에서 소프트웨어 RAID 생성하고 관리하도록 설정
--create 옵션을 통해 새로운 RAID 장치 생성
/dev/md1 옵션을 통해 RAID로 생성될 논리 디바이스 이름을 /dev/md1로 생성
--level=1 옵션을 통해 RAID 레벨 1 (Mirroring) 선택 -> 두 디스크에 동일 데이터 복제
--raid-devices=2 옵션을 통해 RAID에 참여하는 실제 디스크 또는 파티션 개수 2개로 설정
/dev/sdf1 /dev/sdg1 옵션을 통해 RAID에 참여할 두 개의 파티션 경로 설정
ls -l /dev/md1 명령을 통해 /dev/md1 디바이스 파일의 상세 정보 확인
fdisk -l /dev/md1 명령을 통해 /dev/md1 디바이스의 파티션 테이블과 용량과 섹터 정보 나열
mdadm --detail --scan -v 명령을 통해 현재 시스템에서 인식한 모든 md 배열을 스캔하여
mdadm.conf에 넣을 구성 라인 자세히 출력
cat /proc/mdstat 명령을 통해 현재 시스템의 소프트웨어 RAID 상태를 보여주는
가상 파일인 /proc/mdstat 내용 확인

mfks -t ext4 /dev/md1 > /dev/null 명령을 통해 /dev/md1 디바이스에 ext4 타입의 파일 시스템을 설치하고
명령어의 출력 결과를 /dev/null로 리다이렉션하여 화면에 아무것도 출력되지 않도록 생성
# /mnt/raid1 디렉터리 생성
mkdir /mnt/raid1 명령을 통해 mount할 때 사용할 /mnt/raid1 임시 디렉터리 생성
# /dev/md1과 /mnt/raid1 디렉터리 mount 작업
mount /dev/md1 /mnt/raid1 명령을 통해 /dev/md1과 /mnt/raid1 mount
df -h 명령을 통해 잘 mount 되었는지 확인

# /dev/md1과 /mnt/raid1 디렉터리 mount 작업 해지
umount /dev/md1 명령을 통해 /dev/md1r과 /mnt/raid1 mount 해제
# /dev/md1 정지
mdadm --stop /dev/md1 명령을 통해 활성화된 RAID 배열인 /dev/md1 정지시킴
# /dev/sdf1, /dev/sdg1 삭제
mdadm --zero-superblock /dev/sdf1 /dev/sdg1 명령을 통해 각 파티션의 RAID 슈퍼블록 삭제
mdadm --examine /dev/sdf1 /dev/sdg1 명령을 통해 파티션의 RAID 슈퍼블록이 잘 삭제되었는지 확인
ls -l /dev/md1 명령을 통해 /dev/md1 디바이스가 잘 삭제되었는지 확인
Ⅲ - Ⅲ. RAID 4 (Parity)

| RAID 4 (Partiy) |
구분 | 설명 | |
| 개념 | 데이터를 여러 디스크에 Striping (분산 저장)하면서 패리티 (Parity) 정보를 별도의 전용 디스크에 저장하여 데이터 복구 기능을 제공하는 RAID 구조 |
||
| RAID 0처럼 데이터를 여러 디스크에 나누어 저장하지만 하나의 디스크를 따로 두어 에러 검출 및 복구용 정보 (Parity) 저장 |
|||
| 데이터 Striping + 전용 Partiy 디스크를 통한 복구 가능 | |||
| 구성 | 항목 | 설명 | |
| 디스크 개수 | 최소 3개 이상 필요 | ||
| 저장 구조 | 2개 이상의 데이터 디스크 + 1개의 Parity 디스크 | ||
| Parity 저장 방식 | 한 디스크에만 집중 저장 | ||
| 용량 효율 | 전체 디스크 용량 - 1 (한 개 디스크는 Parity용으로 사용) | ||
| 동작 원리 | 동작 원리 | 설명 | |
| 데이터 저장 (쓰기) | 데이터를 여러 디스크에 분산 저장 (Striping) | ||
| 동시에 패리티 디스크에 에러 복구용 정보 (Parity Bit) 저장 | |||
| 패리티는 XOR 연산을 통해 생성 | |||
| 한쪽 디스크가 고장나도 남은 데이터 + Parity로 복구 가능 | |||
| 데이터 읽기 | 데이터 디스크에서 직접 읽음 (패리티 디스크는 사용 안 함) | ||
| 고속 읽기 가능 (병렬 읽기 가능) | |||
| 복구 과정 | 한 디스크가 손상되면 남은 데이터와 패리티를 XOR 연산으로 계산해 손실 데이터 복구 가능 |
||
| 장점 | 항목 | 설명 | |
| 데이터 복구 가능 | Parity 정보를 이용해 한 개 디스크 손상 시 복구 가능 | ||
| 읽기 성능 우수 | 데이터 디스크가 병렬로 읽기 가능 | ||
| 용량 효율 높음 | 한 개 디스크만 패리티용으로 사용 (RAID 1보다 효율적) | ||
| 적합한 환경 | 데이터 안정성과 용량 효율을 동시에 고려하는 서버용 | ||
| 단점 | 항목 | 설명 | |
| 패리티 디스크 집중 부하 | 쓰기 작업 시 매번 패리티 디스크를 갱신해야 하므로 I/O 병목 발생 |
||
| 패리티 디스크 손상 시 | 패리티 정보 손실 -> 에러 검출 및 복구 불가 | ||
| 쓰기 속도 낮음 | 패리티 계산 (XOR)과 저장이 동시에 일어나므로 RAID 0보다 느림 |
||
| 확장성 제한 | 디스크 추가 시 패리티 재계산 필요 (비효율적) | ||
● Parity
| Parity (패리티) |
구분 | 설명 | |
| 개념 | 데이터를 전송하거나 저장할 때 발생할 수 있는 오류를 검출하기 위한 방법 | ||
| 데이터를 전송할 때 1비트 (Parity Bit)를 추가로 붙여 전송된 데이터가 올바른지 확인할 수 있도록 단순하면서도 효율적인 오류 검출 기술 |
|||
| 데이터 전송 중 깨지거나 손실되지 않았는가를 1비트로 판단하는 오류 감지 방식 | |||
| 동작 원리 | 전송할 데이터 '1'의 개수를 기준으로 패리티 비트 (Parity Bit) 생성 | ||
| 데이터 블록에 추가적인 1비트를 붙여 짝수 (Even) 또는 홀수 (Odd) 상태를 맞춤 | |||
| 수신 측에서 받은 데이터의 1 개수를 다시 계산해 보낸 쪽과 동일한 짝 / 홀 상태인지 비교하여 오류 검출 |
|||
| 종류 | 종류 | 설명 | |
| 짝수 패리티 (Even Parity) |
전체 데이터의 '1'의 개수가 짝수가 되도록 패리티 비트 설정 | ||
| 홀수 패리티 (Odd Parity) |
전체 데이터의 '1'의 개수가 홀수가 되도록 패리티 비트 설정 | ||
| 특징 | 항목 | 설명 | |
| 주요 기능 | 오류 검출 (Detection)만 가능하고 수정(Correction)은 불가 | ||
| 비트 수 증가 | 데이터에 1비트만 추가 -> 효율적 | ||
| 단일 오류 감지 기능 | 1비트 오류는 감지 가능하지만 2비트 이상 오류는 감지 불가 | ||
| 적용 분야 | RAID 4, 5, 6, 메모리 (ECC), 시리얼 통신 (UART), 파일 전송(FTP)등 |
||
| 장점 | 구조 단순 | ||
| 추가 비트 1개로 오류 검출 가능 | |||
| 통신 속도에 거의 영향 없음 | |||
| 단점 | 오류 검출만 가능하고 복구는 불가능 | ||
| 2비트 이상 오류 감지 불가 | |||
| 복잡한 오류 정정에는 부적함 | |||
| RAID에서의 Parity 역할 |
RAID 4, 5, 6에서는 이 Parity Bit 개념을 확장해서 각 디스크의 데이터 블록을 XOR 연산하여 패리티 블록 생성 |
||
| 하나의 디스크가 고장나면 나머지 데이터와 패리티로 복구 가능 | |||
| Parity = 데이터 오류 검출 + 복구의 핵심 정보 역할 수행 | |||
● /dev/sdc1(200M), /dev/sdd1(200M), /dev/sde1(200M) 디스크를 RAID 4로 구성

# /dev/md4 생성 (RAID 4)
mdadm 명령을 통해 리눅스에서 소프트웨어 RAID 생성하고 관리하도록 설정
--create 옵션을 통해 새로운 RAID 장치 생성
/dev/md4 옵션을 통해 RAID로 생성될 논리 디바이스 이름을 /dev/md4로 생성
--level=4 옵션을 통해 RAID 레벨 4 (Parity) 선택 -> Parity 기반, 전용 패리티 디스크 1개
--raid-devices=3 옵션을 통해 RAID에 참여하는 실제 디스크 또는 파티션 개수 3개로 설정
/dev/sdc1 /dev/sdd1 /dev/sde1 옵션을 통해 RAID에 참여할 세 개의 파티션 경로 설정
ls -l /dev/md4 명령을 통해 /dev/md4 디바이스 파일의 상세 정보 확인
fdisk -l /dev/md4 명령을 통해 /dev/md4 디바이스의 파티션 테이블과 용량과 섹터 정보 나열
mdadm --detail --scan -v 명령을 통해 현재 시스템에서 인식한
모든 md 배열을 스캔하여 mdadm.conf에 넣을 구성 라인 자세히 출력
cat /proc/mdstat 명령을 통해 현재 시스템의 소프트웨어 RAID 상태를 보여주는
가상 파일인 /proc/mdstat 내용 확인

mfks -t ext4 /dev/md4 > /dev/null 명령을 통해 /dev/md4 디바이스에 ext4 타입의 파일 시스템을 설치하고
명령어의 출력 결과를 /dev/null로 리다이렉션하여 화면에 아무것도 출력되지 않도록 생성
# /mnt/raid4 디렉터리 생성
mkdir /mnt/raid4 명령을 통해 mount할 때 사용할 /mnt/raid4 임시 디렉터리 생성
# /dev/md4와 /mnt/raid4 디렉터리 mount 작업
mount /dev/md4 /mnt/raid4 명령을 통해 /dev/md4와 /mnt/raid4 mount
df -h 명령을 통해 잘 mount 되었는지 확인

# /dev/md4와 /mnt/raid4 디렉터리 mount 작업 해지
umount /dev/md4 명령을 통해 /dev/md4 mount 해제
# /dev/md4 정지
mdadm --stop /dev/md4 명령을 통해 활성화된 RAID 배열인 /dev/md4 정지시킴
# /dev/sdc1, /dev/sdd1, /dev/sde1 삭제
mdadm --zero-superblock /dev/sdc1 /dev/sdd1 /dev/sde1 명령을 통해 각 파티션의 RAID 슈퍼블록 삭제
mdadm --examine /dev/sdc1 /dev/sdd1 /dev/sde1 명령을 통해 파티션의 RAID 슈퍼블록이 잘 삭제되었는지 확인
ls -l /dev/md4 명령을 통해 /dev/md4 디바이스가 잘 삭제되었는지 확인
Ⅲ - IV. RAID 5 (Distributed Parity)

| RAID 5 (Distributed Parity) |
구분 | 설명 | |
| 개념 | 데이터를 여러 디스크에 분산 저장 (Striping)하면서 패리티 (Parity) 정보를 모든 디스크에 순차적으로 분산 저장하는 방식 |
||
| RAID 4처럼 패리티를 저장하지만 특정 디스크에 집중시키지 않고, 각 디스크에 순서대로 분산 저장함으로써 병목 현상을 줄인 구조 |
|||
| RAID 5 = Striping (성능) + 분산 패리티 (복구 기능) -> 속도, 안정성, 효율성의 균형형 RAID |
|||
| 구성 | 항목 | 설명 | |
| 디스크 개수 | 최소 3개 이상 | ||
| 데이터 저장 구조 | 여러 디스크에 데이터 + 패리티 분산 저장 | ||
| 패리티 저장 방식 | 디스크마다 번갈아가며 저장 (순차적 분산) | ||
| 용량 효율 | 전체 용량의 (N-1) / N (한 개의 디스크는 패리티용으로 사용) | ||
| 동작 원리 | 동작 원리 | 설명 | |
| 데이터 쓰기 (Write) | 데이터를 여러 디스크에 분산 저장 | ||
| 동시에 패리티 정보 (에러 복구용 XOR 결과)를 다른 디스크에 저장 |
|||
| 패리티 위치가 블록마다 바뀌므로 모든 디스크에 부하가 고르게 분산됨 |
|||
| 데이터 읽기 (Read) | RAID 0처럼 병렬로 데이터를 읽기 때문에 읽기 속도 빠름 | ||
| 복구 중이 아닐 때는 패리티 디스크 사용하지 않음 | |||
| 디스크 장애 발생 시 | 한 개의 디스크가 손상되어도 나머지 디스크의 데이터와 패리티를 XOR 연산으로 복구 가능 |
||
| 장점 | 항목 | 설명 | |
| 읽기 속도 빠름 | 데이터가 여러 디스크에 분산되어 병렬 읽기 가능 | ||
| 복구 기능 제공 | 한 개 디스크 손상 시 패리티 정보로 복구 가능 | ||
| 패리티 병목 해소 | 패리티가 분산 저장되어 RAID 4의 I/O 병목 문제 해결 | ||
| 용량 효율 우수 | 한 개 디스크만 패리티용으로 사용하므로 RAID 1보다 효율적 | ||
| 안정성과 성능의 균형 | RAID 중 가장 범용적으로 사용됨 (서버, NAS, 스토리지 등) | ||
| 단점 | 항목 | 설명 | |
| 쓰기 속도 느림 | 패리티 계산 (XOR 연산)과 분산 저장으로 쓰기 속도 저하 | ||
| 복구 시 성능 저하 | 디스크 손상 후 복구 과정 중 I/O 속도 급격히 감소 | ||
| 두 개 이상 손상 시 복구 불가 |
1개까지는 복구 가능하지만 2개 이상 디스크 손상 시 데이터 손실 |
||
● Distributed Parity (분산 패리티)
| Distributed Parity (분산 패리티) |
구분 | 설명 | |
| 개념 | RAID 4처럼 패리티 정보를 한 디스크에 몰아서 저장하지 않고, 여러 디스크에 균등하게 분산 저장하는 방식 |
||
| 데이터는 여러 디스크에 Striping 형태로 분산 저장하고, 각 디스크에 번갈아 가며 패리티 블록 (Parity Block)을 저장하는 구조 |
|||
| 읽기, 쓰기 부하가 특정 디스크에 집중되는 문제 (병목) 해결 | |||
| RAID 5 핵심 기술로 패리티 정보를 여러 디스크에 나누어 저장해 복구 가능성과 성능 균형을 동시에 확보한 방식 |
|||
| 동작 원리 | 각 디스크는 데이터 블록과 패리티 블록을 번갈아 저장 | ||
| 각 줄마다 패리티 위치가 다르기 때문에 부하 분산 효과 발생 | |||
| 한 디스크가 손상되면 나머지 디스크의 데이터와 패리티 (XOR 연산)을 이용해 복구 가능 | |||
| 장점 | 항목 | 설명 | |
| 병목 현상 제거 | 패리티가 분산되어 특정 디스크에 부하 집중 없음 | ||
| 병렬 쓰기 가능성 | 여러 디스크가 동시에 데이터와 패리티 기록 | ||
| 복구 가능성 | 디스크 1개 고장 시 나머지 데이터 + 패리티로 복구 가능 | ||
| 읽기 속도 향상 | 여러 디스크에서 동시에 읽기 가능 (병렬 읽기) | ||
| 용량 효율 높음 | 전체 디스크 중 1개의 용량만 패리티 용도로 사용 | ||
| 균형형 RAID | 성능, 안정성, 효율 모두 일정 수준 확보 (RAID 5의 대표 장점) |
||
| 단점 | 항목 | 설명 | |
| 복구 제한 | 디스크 2개 고장 시 데이터 복구 불가능 | ||
| 쓰기 속도 저하 | 패리티 계산(XOR 연산)으로 인해 RAID 0보다 느림 | ||
| 복구 시간 지연 | 장애 발생 후 재구성(Rebuild)에 오랜 시간 소요 | ||
| 복구 중 성능 저하 | 복구 시 나머지 디스크에 높은 부하 발생 -> I/O 느려짐 | ||
● RAID 4 VS RAID 5
| 구분 | RAID 4 (Parity) | RAID 5 (Distributed Parity) |
| 패리티 저장 위치 | 전용 패리티 디스크 1개 | 모든 디스크에 분산 저장 |
| 병목 현상 | O (패리티 디스크 집중) | X (분산되어 병목 해소) |
| 성능 | 쓰기 성능 낮음 | 쓰기 / 읽기 속도 모두 향상 |
| 내결함성 | 디스크 1개 고장 시 복구 가능 | 디스크 1개 고장 시 복구 가능 |
● /dev/sdc1(200M), /dev/sdd1(200M), /dev/sde1(200M) 디스크를 RAID 5로 구성

# /dev/md5 생성 (RAID 5)
mdadm 명령을 통해 리눅스에서 소프트웨어 RAID 생성하고 관리하도록 설정
--create 옵션을 통해 새로운 RAID 장치 생성
/dev/md5 옵션을 통해 RAID로 생성될 논리 디바이스 이름을 /dev/md5로 생성
--level=5 옵션을 통해 RAID 레벨 5 (Distributed Parity) 선택
--raid-devices=3 옵션을 통해 RAID에 참여하는 실제 디스크 또는 파티션 개수 3개로 설정
/dev/sdc1 /dev/sdd1 /dev/sde1 옵션을 통해 RAID에 참여할 세 개의 파티션 경로 설정
ls -l /dev/md5 명령을 통해 /dev/md5 디바이스 파일의 상세 정보 확인
fdisk -l /dev/md5 명령을 통해 /dev/md5 디바이스의 파티션 테이블과 용량과 섹터 정보 나열
mdadm --detail --scan -v 명령을 통해 현재 시스템에서 인식한 모든 md 배열을 스캔하여
mdadm.conf에 넣을 구성 라인 자세히 출력
cat /proc/mdstat 명령을 통해 현재 시스템의 소프트웨어 RAID 상태를 보여주는
가상 파일인 /proc/mdstat 내용 확인

mfks -t ext4 /dev/md5 > /dev/null 명령을 통해 /dev/md5 디바이스에 ext4 타입의 파일 시스템을 설치하고
명령어의 출력 결과를 /dev/null로 리다이렉션하여 화면에 아무것도 출력되지 않도록 생성
# /mnt/raid5 디렉터리 생성
mkdir /mnt/raid5 명령을 통해 mount할 때 사용할 /mnt/raid5 임시 디렉터리 생성
# /dev/md5와 /mnt/raid5 디렉터리 mount 작업
mount /dev/md5 /mnt/raid5 명령을 통해 /dev/md5와 /mnt/raid5 mount
df -h 명령을 통해 잘 mount 되었는지 확인

# /dev/md5와 /mnt/raid5 디렉터리 mount 작업 해지
umount /dev/md5 명령을 통해 /dev/md5와 /mnt/raid5 mount 해제
# /dev/md5 정지
mdadm --stop /dev/md5 명령을 통해 활성화된 RAID 배열인 /dev/md5 정지시킴
# /dev/sdc1, /dev/sdd1, /dev/sde1 삭제
mdadm --zero-superblock /dev/sdc1 /dev/sdd1 /dev/sde1 명령을 통해 각 파티션의 RAID 슈퍼블록 삭제
mdadm --examine /dev/sdc1 /dev/sdd1 /dev/sde1 명령을 통해 파티션의 RAID 슈퍼블록이 잘 삭제되었는지 확인
ls -l /dev/md5 명령을 통해 /dev/md5 디바이스가 잘 삭제되었는지 확인
Ⅲ - V. RAID 6 (Dual Parity)

| RAID 6 (Dual Parity) |
구분 | 설명 | |
| 개념 | RAID 5와 동일한 Striping + 분산 패리티 구조이지만 패리티 정보를 두 종류로 저장 (이중 패리티)하여 최대 2개의 디스크가 동시에 고장나도 데이터 복구가 가능한 고안정성 RAID 방식 |
||
| 2개의 패리티 (P,Q)로 두 디스크 손상 시에도 복구 가능 | |||
| RAID 6 = RAID 5 + 이중 패리티 보호 | |||
| 구성 | 항목 | 설명 | |
| 디스크 개수 | 최소 4개 이상 | ||
| 데이터 저장 구조 | 데이터 Striping + 2개의 패리티 블록 (P, Q) 분산 저장 | ||
| 패리티 저장 방식 | 각 디스크에 순서대로 P, Q 패리티를 분산 저장 | ||
| 용량 효율 | 전체 디스크 수 - 2 (두 개의 디스크 용량은 패리티용으로 사용) | ||
| 동작 원리 | 동작 원리 | 설명 | |
| 데이터 쓰기 (Write) | RAID 5와 동일하게 데이터 Striping 수행 | ||
| 동시에 2개의 패리티 (P, Q) 계산 및 저장 (이중 보호 구조) | |||
| P는 XOR 연산, Q는 복잡한 Reed-Solomon 코드 (다른 방식의 수학적 계산)로 구성 |
|||
| 데이터 복구 (Read / Recovery) |
1개 디스크 손상 -> RAID 5와 동일하게 P를 이용해 복구 | ||
| 2개의 디스크 손상 -> P와 Q를 이용한 이중 복구 가능 | |||
| 장점 | 항목 | 설명 | |
| 이중 보호 기능 | 최대 2개의 디스크가 동시에 고장나도 복구 가능 | ||
| 데이터 안정성 최고 수준 | RAID 5 대비 신뢰도 대폭 향상 | ||
| 읽기 성능 우수 | Striping 구조로 병렬 읽기 가능 | ||
| 적합한 환경 | 미션 크리티컬 서버, 대규모 데이터데이스, NAS 등 | ||
| 단점 | 항목 | 설명 | |
| 쓰기 속도 저하 | 패리티 2개 계산 (P, Q) 때문에 RAID 5보다 느림 | ||
| 복잡한 연산 | Reed-Solomon 기반의 패리티 계산으로 CPU 부하 증가 | ||
| 복구 시간 김 | 두 개의 패리티 연산 및 대용량 데이터 재구성 필요 | ||
| 용량 효율 하락 | 전체 디스크 중 2개는 패리티 전용 (용량 효율 = (N -2) / N) | ||
● Dual Parity
| Dual Parity (이중 패리티) |
구분 | 설명 | |
| 개념 | RAID 6에서 사용하는 핵심 구조로 두 개의 서로 다른 방식의 패리티 정보를 저장하여 동시에 두 개의 디스크가 손상되더라도 데이터 복구가 가능한 구조 |
||
| RAID 6 = RAID 5 + 두 개의 패리티 (P, Q) | |||
| 동작 원리 | 동작 원리 | 설명 | |
| 패리티 종류 | P 패리티 (XOR 기반) + Q 패리티 (Reed-Solomon 기반) | ||
| 저장 구조 | 모든 디스크에 P, Q 패리티를 분산 저장 (Distributed Dual Parity) | ||
| 복구 원리 | 1개 손상 시 P 패리티만으로 복구 | ||
| 2개 손상 시 P와 Q 연산으로 복구 | |||
| 연산 방식 | 2종류의 수학적 계산을 동시에 수행하므로 CPU 자원 사용량 증가 | ||
| 장점 | 구분 | 설명 | |
| 안정성 | 두 개의 디스크가 동시에 고장나도 데이터 복구 가능 | ||
| 가용성 | 대용량 서버, NAS, 스토리지 등에서 매우 높은 신뢰성 제공 | ||
| 성능 (읽기) | 읽기 속도는 RAID 5와 거의 유사 (병렬 읽기 구조 유지) | ||
| 데이터 보존성 | 복구 실패 확률이 극히 낮아 미션 크리티컬 환경에 적합 | ||
| 단점 | 구분 | 설명 | |
| 연산 복잡도 | 패리티 연산이 2회 이루어져 CPU 사용량 및 계산량 증가 | ||
| 용량 효율 감소 | 두 개의 디스크 용량이 패리티로 사용되어 효율 약간 낮음 | ||
| 쓰기 속도 저하 | 패리티 연산이 두 번 이루어져 RAID 5보다 쓰기 속도 느림 | ||
| 비용 증가 | 디스크 2개가 패리티용으로 사용되므로 하드웨어 비용 상승 | ||
● RAID 5 VS RAID 6
| 구분 | RAID 5 (Distributed Parity) | RAID 6 (Dual Parity) |
| 패리티 개수 | 1개 | 2개 |
| 복구 가능 디스크 수 | 1개 | 2개 |
| 패리티 저장 방식 | 분산 패리티 | 분산 이중 패리티 |
| 최소 디스크 수 | 3개 | 4개 |
| 성능 | 빠름 | 약간 느림 (패리티 연산 2번 필요) |
| 안정성 | 중간 | 매우 높음 |
● /dev/sdc1(200M), /dev/sdd1(200M), /dev/sde1(200M), /dev/sdf1(200M), /def/sdg1(200M) 디스크를
RAID 6으로 구성

# /dev/md6 생성 (RAID 6)
mdadm 명령을 통해 리눅스에서 소프트웨어 RAID 생성하고 관리하도록 설정
--create 옵션을 통해 새로운 RAID 장치 생성
/dev/md6 옵션을 통해 RAID로 생성될 논리 디바이스 이름을 /dev/md6으로 생성
--level=6 옵션을 통해 RAID 레벨 6 (Dual Parity) 선택
--raid-devices=5 옵션을 통해 RAID에 참여하는 실제 디스크 또는 파티션 개수 5개로 설정
/dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1 옵션을 통해 RAID에 참여할 네 개의 파티션 경로 설정
ls -l /dev/md6 명령을 통해 /dev/md6 디바이스 파일의 상세 정보 확인
fdisk -l /dev/md6 명령을 통해 /dev/md6 디바이스의 파티션 테이블과 용량과 섹터 정보 나열
mdadm --detail --scan -v 명령을 통해 현재 시스템에서 인식한 모든 md 배열을 스캔하여
mdadm.conf에 넣을 구성 라인 자세히 출력
cat /proc/mdstat 명령을 통해 현재 시스템의 소프트웨어 RAID 상태를 보여주는
가상 파일인 /proc/mdstat 내용 확인

mfks -t ext4 /dev/md6 > /dev/null 명령을 통해 /dev/md6 디바이스에 ext4 타입의 파일 시스템을 설치하고
명령어의 출력 결과를 /dev/null로 리다이렉션하여 화면에 아무것도 출력되지 않도록 생성
# /mnt/raid6 디렉터리 생성
mkdir /mnt/raid6 명령을 통해 mount할 때 사용할 /mnt/raid6 임시 디렉터리 생성
# /dev/md6과 /mnt/raid 6 mount 작업
mount /dev/md6 /mnt/raid6 명령을 통해 /dev/md6과 /mnt/raid6 mount
df -h 명령을 통해 잘 mount 되었는지 확인

# /dev/md6과 /mnt/raid6 mount 작업 해지
umount /dev/md6 명령을 통해 /dev/md6 mount 해제
# /dev/md6 정지
mdadm --stop /dev/md6 명령을 통해 활성화된 RAID 배열인 /dev/md6 정지시킴
# /dev/sdc1, /dev/sdd1, /dev/sde1, /dev/sdf1, /dev/sdg1 삭제
mdadm --zero-superblock /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1 명령을 통해
각 파티션의 RAID 슈퍼블록 삭제
mdadm --examine /dev/sdc1 /dev/sdd1 /dev/sde1/dev/sdf1 /dev/sdg1 명령을 통해
파티션의 RAID 슈퍼블록이 잘 삭제되었는지 확인
ls -l /dev/md6 명령을 통해 /dev/md6 디바이스가 잘 삭제되었는지 확인
Ⅳ. RAID 특징
● 디스크 6개 구성
- RAID 1 (Mirroring)의 복제 특징 때문에 디스크 3개씩 RAID 0 (Striping)으로 구성
- 디스크 3개씩 RAID 0으로 구성한 디스크 장치 2개를 RAID 1로 구성
● 디스크 8개 구성
- RAID 1 복제 특징 때문에 4개씩 RAID 0으로 구성
- 디스크 4개씩 RAID 0으로 구성된 디스크 장치 2개를 RAID 1로 구성
Ⅳ - Ⅰ. RAID 0 + 1 (Striping + Mirroring)

| RAID 0 + 1 (Striping + Mirroring) |
구분 | 설명 | |
| 개념 | RAID 0 (Striping)으로 데이터를 분산 저장한 뒤, 그 전체 RAID 0 그룹을 RAID 1 (Mirroring)으로 복제하는 방식 |
||
| RAID 0으로 데이터를 나누어 빠르게 저장하고, RAID 0 전체를 RAID 1로 복제하여 안정성도 확보하는 구조 |
|||
| RAID 0 + 1 = 빠른 속도의 RAID 0 + 안정성 높은 RAID 1 -> 속도 + 안정성을 모두 갖춘 하이브리드 RAID 구조 |
|||
| 구조 | 항목 | 설명 | |
| 디스크 개수 | 최소 4개 이상 (짝수 단위 구성 필요) | ||
| 기본 구조 | RAID 0 그룹 2개를 구성 -> 각 그룹을 RAID 1로 복제 | ||
| 저장 방식 | RAID 0 그룹 내에서 데이터 병렬 저장 후, RAID 1을 통해 복제 저장 |
||
| 용량 효율 | 전체 디스크 용량의 50% (나머지 50%는 복제용) | ||
| 동작 원리 | 동작 원리 | 설명 | |
| 데이터 쓰기 (Write) | RAID 0 단계에서 데이터를 여러 디스크에 병렬로 분산 저장 | ||
| RAID 1 단계에서 RAID 0 전체를 복제하여 이중화된 복사본 저장 | |||
| 데이터 읽기 (Read) | 병렬 읽기 가능 (RAID 0의 장점) | ||
| 손상된 RAID 0 그룹이 있을 경우, RAID 1의 복제본에서 즉시 데이터 복구 가능 |
|||
| RAID 0 -> 데이터 분산 저장 (속도 향상) | |||
| RAID 1 -> 전체 그룹 복제 (안정성 향상) | |||
| 장점 | 항목 | 설명 | |
| 속도 | RAID 0의 병렬 저장으로 읽기와 쓰기 속도 향상 | ||
| 안정성 | RAID 1의 복제 기능으로 장애 복구 가능 | ||
| 이중화 구조 | Striping + Mirroring 동시에 적용 | ||
| 성능 균형 | 성능과 안정성을 모두 고려한 구조 (고성능 서버에 적합) | ||
| 단점 | 항목 | 설명 | |
| 디스크 효율 낮음 | 전체 용량의 50%만 실제 사용 가능 (복제용 50%) | ||
| 비용 증가 | Mirroring 때문에 디스크 2배 필요 | ||
| 복구 제약 | RAID 0 그룹 중 하나가 완전히 손상되면 전체 데이터 접근 불가 | ||
● /dev/sdc1(200M), /dev/sdd1(200M), /dev/sde1(200M), /dev/sdf1(200M) 디스크를 RAID 0 + 1로 구성

# /dev/md11 생성 (RAID 0)
mdadm 명령을 통해 리눅스에서 소프트웨어 RAID 생성하고 관리하도록 설정
--create 옵션을 통해 새로운 RAID 장치 생성
/dev/md11 옵션을 통해 RAID로 생성될 논리 디바이스 이름을 /dev/md11로 생성
--level=0 옵션을 통해 RAID 레벨 0 (Striping) 모드 선택
--raid-devices=2 옵션을 통해 RAID에 참여하는 실제 디스크 또는 파티션 개수 2개로 설정
/dev/sdc1 /dev/sdd1 옵션을 통해 RAID에 참여할 두 개의 파티션 경로 설정
# /dev/md12 생성 (RAID 0)
mdadm 명령을 통해 리눅스에서 소프트웨어 RAID 생성하고 관리하도록 설정
--create 옵션을 통해 새로운 RAID 장치 생성
/dev/md12 옵션을 통해 RAID로 생성될 논리 디바이스 이름을 /dev/md12로 생성
--level=0 옵션을 통해 RAID 레벨 0 (Striping) 모드 선택
--raid-devices=2 옵션을 통해 RAID에 참여하는 실제 디스크 또는 파티션 개수 2개로 설정
/dev/sde1 /dev/sdf1 옵션을 통해 RAID에 참여할 두 개의 파티션 경로 설정
# /dev/md13 생성 (RAID 1)
mdadm 명령을 통해 리눅스에서 소프트웨어 RAID 생성하고 관리하도록 설정
--create 옵션을 통해 새로운 RAID 장치 생성
/dev/md13 옵션을 통해 RAID로 생성될 논리 디바이스 이름을 /dev/md13으로 생성
--level=1 옵션을 통해 RAID 레벨 1 (Mirroring) 모드 선택
--raid-devices=2 옵션을 통해 RAID에 참여하는 실제 디스크 또는 파티션 개수 2개로 설정
/dev/md11 /dev/md12 옵션을 통해 RAID에 포함될 두 개의 파티션 지정
ls -l /dev/md11 /dev/md12 /dev/md13 명령을 통해
/dev/md11, /dev/md12, /dev/md13 디바이스 파일의 상세 정보 확인
fdsik -l /dev/md11 명령을 통해 /dev/md11 디바이스의 파티션 테이블과 용량과 섹터 정보 나열
fdsik -l /dev/md12 명령을 통해 /dev/md12 디바이스의 파티션 테이블과 용량과 섹터 정보 나열
fdsik -l /dev/md13 명령을 통해 /dev/md13 디바이스의 파티션 테이블과 용량과 섹터 정보 나열
mdadm --detail --scan -v 명령을 통해 현재 시스템에서 인식한
모든 md 배열을 스캔하여 mdadm.conf에 넣을 구성 라인 자세히 출력
cat /proc/mdstat 명령을 통해 현재 시스템의 소프트웨어 RAID 상태를 보여주는
가상 파일인 /proc/mdstat 내용 확인

mfks -t ext4 /dev/md13 > /dev/null 명령을 통해 /dev/md13 디바이스에 ext4 타입의 파일 시스템을 설치하고
명령어의 출력 결과를 /dev/null로 리다이렉션하여 화면에 아무것도 출력되지 않도록 생성
# /mnt/raid01 디렉터리 생성
mkdir /mnt/raid01 명령을 통해 mount할 때 사용할 /mnt/raid01 임시 디렉터리 생성
# /dev/md13과 /mnt/raid01 디렉터리 mount 작업
mount /dev/md13 /mnt/raid01 명령을 통해 /dev/md13과 /mnt/raid01 mount
df -h 명령을 통해 잘 mount 되었는지 확인

lsblk 명령을 통해 시스템에 연결된 블록 장치들의 정보 확인

# /dev/md13과 /mnt/raid01 디렉터리 mount 작업 해지
umount /dev/md13 명령을 통해 /dev/md13과 /mnt/raid01 mount 해제
# /dev/md13 중지
mdadm --stop /dev/md13 명령을 통해 활성화된 RAID 배열인 /dev/md13 RAID 장치 중지
# /dev/md12 중지
mdadm --stop /dev/md12 명령을 통해 활성화된 RAID 배열인 /dev/md12 RAID 장치 중지
# /dev/md11 중지
mdadm --stop /dev/md11 명령을 통해 활성화된 RAID 배열인 /dev/md11 RAID 장치 중지
# /dev/sdc1, /dev/sdd1, /dev/sde1, /dev/sdf1 제거
mdadm --zero-superblock /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 명령을 통해
각각의 디스크 파티션들에 대해 슈퍼 블록 제거
mdadm --examine /dev/sdc1 /dev/sdd1 /dev/sde1/dev/sdf1 명령을 통해
지정된 파티션의 RAID 슈퍼블록이 잘 삭제되었는지 확인
ls -l /dev/md* 명령을 통해 디렉터리에서 md로 시작하는 장치들이 잘 삭제되었는지 확인
Ⅴ. RAID 1 + 0 특징
● 디스크 6개 구성
- RAID 1 복제 특징 때문에 디스크 2개씩 RAID 1로 구성
- 디스크 2개씩 RAID 1로 구성한 디스크 장치 3개를 RAID 0으로 구성
● 디스크 8개 구성
- RAID 1 복제 특징 때문에 2개씩 RAID 1로 구성
- 디스크 2개씩 RAID 1로 구성된 디스크 장치 4개를 RAID 0으로 구성
Ⅴ - Ⅰ. RAID 1 + 0 (Mirroring + Striping)

| RAID 1 + 0 (Mirroring + Striping) |
구분 | 설명 | |
| 개념 | RAID 1 (Mirroring)으로 디스크를 복제하여 안정성을 확보하고, 그 복제된 디스크 쌍들을 RAID 0 (Striping)으로 묶어 속도를 향상시키는 복합 RAID 구조 |
||
| RAID 1로 데이터를 복제 (Mirroring)하고, 복제된 디스크 쌍을 RAID 0으로 병렬 처리 (Striping)하는 구조 |
|||
| RAID 1 + 0 = RAID 1 (Mirroring) + RAID 0 (Striping) -> RAID 10이라고도 부르며 속도와 안정성의 균형이 가장 뛰어난 RAID 구조 |
|||
| 구조 | 항목 | 설명 | |
| 디스크 개수 | 최소 4개 이상 (짝수로 구성해야 함) | ||
| 기본 구조 | RAID 1로 디스크를 복제한 뒤, 복제된 쌍을 RAID 0으로 병렬 처리 | ||
| 저장 방식 | 각 디스크 쌍은 동일한 데이터를 저장하고, 여러 쌍이 병렬로 데이터 조각을 분산 저장 |
||
| 용량 효율 | 전체 디스크 용량의 50% (나머지 절반은 복제용) | ||
| 동작 원리 | 동작 원리 | 설명 | |
| 데이터 쓰기 (Write) | RAID 1 단계에서 두 개의 디스크에 동일한 데이터를 복제 저장 | ||
| RAID 0 단계에서 복제된 쌍 단위로 병렬 저장 수행 -> 쓰기 속도 향상 |
|||
| 데이터 읽기 (Read) | RAID 1의 복제본 중 더 빠른 디스크에서 읽음 | ||
| 여러 RAID 1 그룹이 병렬로 작동하므로 읽기 속도는 매우 빠름 | |||
| RAID 1로 안정성 확보 -> RAID 0으로 속도 향상 | |||
| RAID 0 + 1보다 복구 유연성이 훨씬 뛰어남 | |||
| 장점 | 항목 | 설명 | |
| 속도 향상 | RAID 0 병렬 처리로 읽기와 쓰기 모두 빠름 | ||
| 안정성 확보 | RAID 1 복제로 데이터 이중화 | ||
| 복구 유연성 | 한 쌍 (Mirroring 그룹) 내의 디스크 1개 손상 시에도 정상 동작 | ||
| 이중 보호 구조 | Mirroring + Striping 병행으로 고속과 고안정성 시스템 구축 가능 | ||
| 단점 | 항목 | 설명 | |
| 용량 효율 낮음 | 전체 디스크 용량의 50%만 사용 가능 (절반은 복제) | ||
| 비용 증가 | Mirroring으로 인해 디스크 2배 필요 | ||
| 복구 중 부하 | 복제 디스크가 손상되면 재복제(Rebuild) 시 성능 저하 가능 | ||
● RAID 0 +1 VS RAID 1 + 0 비교
| 구분 | RAID 0 + 1 | RAID 1 + 0 (RAID 10) |
| 구성 순서 | Striping 후 Mirroring | Mirroring 후 Striping |
| 복구 구조 | RAID 0 그룹 손상 시 전체 데이터 복구 불가 |
한 쌍 Mirroring 그룹) 내 1개 손상은 무관 |
| 안정성 | 상대적으로 낮음 | 매우 높음 |
| 성능 | 비슷하지만 RAID 10이 실질적으로 우위 | 빠름 |
| 용량 효율 | 50% | 50% |
| 적합 환경 | 단순한 고속 I/O 작업 환경 | 데이터 안정성이 중요한 서버 / NAS 환경 |
| RAID 1 + 0은 RAID 0 + 1보다 복구 안정성이 더 높고 실무에서 더 많이 사용됨 | ||
● /dev/sdc1(200M), /dev/sdd1(200M), /dev/sde1(200M), /dev/sdf1(200M) 디스크를 RAID 1 + 0으로 구성

# /dev/md10 생성 (RAID 0, RAID 1)
mdadm 명령을 통해 리눅스에서 소프트웨어 RAID 생성하고 관리하도록 설정
--create 옵션을 통해 새로운 RAID 장치 생성
/dev/md10 옵션을 통해 RAID로 생성될 논리 디바이스 이름을 /dev/md10으로 생성
--level=10 옵션을 통해 RAID 1 (Mirroring) 모드와 RAID 0 (Striping) 모드를 사용하도록 지정
--raid-devices=4 옵션을 통해 RAID에 참여하는 실제 디스크 또는 파티션 개수 4개로 설정
/dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 옵션을 통해 RAID에 참여할 네 개의 파티션 경로 설정
ls -l /dev/md10 명령을 통해 /dev/md10 디바이스 파일의 상세 정보 확인
fdsik -l /dev/md10 명령을 통해 /dev/md10 디바이스의 파티션 테이블과 용량과 섹터 정보 나열
mdadm --detail --scan -v 명령을 통해 현재 시스템에서 인식한 모든 md 배열을 스캔하여
mdadm.conf에 넣을 구성 라인 자세히 출력
cat /proc/mdstat 명령을 통해 현재 시스템의 소프트웨어 RAID 상태를 보여주는
가상 파일인 /proc/mdstat 내용 확인

mfks -t ext4 /dev/md10 > /dev/null 명령을 통해 /dev/md10 디바이스에 ext4 타입의 파일 시스템을 설치하고
명령어의 출력 결과를 /dev/null로 리다이렉션하여 화면에 아무것도 출력되지 않도록 생성
# /mnt/raid10 디렉터리 생성
mkdir /mnt/raid10 명령을 통해 mount할 때 사용할 /mnt/raid10 임시 디렉터리 생성
# /dev/md10과 /mnt/raid10 디렉터리 mount 작업
mount /dev/md10 /mnt/raid10 명령을 통해 /dev/md10과 /mnt/raid10 mount
df -h 명령을 통해 잘 mount 되었는지 확인

# /dev/md10과 /mnt/raid10 디렉터리 mount 작업 해지
umount /dev/md10 명령을 통해 /dev/md10 mount 해제
# /dev/md10 중지
mdadm --stop /dev/md10 명령을 통해 활성화된 RAID 배열인 /dev/md10 RAID 장치 중지
# /dev/sdc1, /dev/sdd1, /dev/sde1, /dev/sdf1 삭제
mdadm --zero-superblock /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 명령을 통해
각각의 디스크 파티션들에 대해 슈퍼 블록 제거
mdadm --examine /dev/sdc1 /dev/sdd1 /dev/sde1/dev/sdf1 명령을 통해
지정된 파티션의 RAID 슈퍼블록이 잘 삭제되었는지 확인
ls -l /dev/md10 명령을 통해 디렉터리에서 잘 삭제되었는지 확인

ls -l /dev/sd* 명령을 통해 디렉터리에서 sd로 시작하는 파일들의 상세 정보 확인

fdisk /dev/sdh 명령을 통해 /dev/sdh 디스크의 파티션 설정을 위해 진입

# 주 파티션 1 생성 ( /dev/sdh 디스크)
fdisk의 n 옵션을 통해 새로운 파티션 생성
fdisk의 p 옵션을 통해 새로 생성한 파티션을 주 파티션으로 설정
fdisk의 default 옵션을 통해 주 파티션에 번호 1 부여
fdisk의 default 옵션을 통해 주 파티션 1의 첫 번째 섹터의 범위를 2048로 설정
fdisk의 default 옵션을 통해 주 파티션 1의 마지막 섹터의 범위를 1466367로 설정
fdisk의 t 옵션을 통해 주 파티션 1의 타입 변경
fd 명령을 통해 주 파티션 1의 타입을 Linux에서 Linux raid autodetect로 변경
fdisk의 p 옵션을 통해 주 파티션 1의 타입이 잘 변경되었는지 확인
fdisk의 w 옵션을 통해 저장 후 나가기

# /dev/md0 (RAID 0)
mdadm 명령을 통해 리눅스에서 소프트웨어 RAID 생성하고 관리하도록 설정
--create 옵션을 통해 새로운 RAID 장치 생성
/dev/md0 옵션을 통해 RAID로 생성될 논리 디바이스 이름을 /dev/md0으로 생성
--level=0 옵션을 통해 RAID 0 (Striping) 모드를 사용하도록 지정
--raid-devices=2 옵션을 통해 RAID에 참여하는 실제 디스크 또는 파티션 개수 2개로 설정
/dev/sdc1 /dev/sdh1 옵션을 통해 RAID에 참여할 두 개의 파티션 경로 설정
ls -l /dev/md0 명령을 통해 /dev/md0 디바이스 파일의 상세 정보 확인
fdsik -l /dev/md0 명령을 통해 /dev/md0 디바이스의 파티션 테이블과 용량과 섹터 정보 나열
mdadm --detail --scan -v 명령을 통해 현재 시스템에서 인식한
모든 md 배열을 스캔하여 mdadm.conf에 넣을 구성 라인 자세히 출력
cat /proc/mdstat 명령을 통해 현재 시스템의 소프트웨어 RAID 상태를 보여주는
가상 파일인 /proc/mdstat 내용 확인

# /dev/md0 중지
mdadm --stop /dev/md0 명령을 통해 활성화된 RAID 배열인 /dev/md0 RAID 장치 중지
# /dev/sdc1, /dev/sdh1 제거
mdadm --zero-superblock /dev/sdc1 /dev/sdh1 명령을 통해 각각의 디스크 파티션들에 대해 슈퍼 블록 제거
mdadm --examine /dev/sdc1 /dev/sdh1 명령을 통해 지정된 파티션의 RAID 슈퍼블록이잘 삭제되었는지 확인
ls -l /dev/md0 명령을 통해 디렉터리에서 잘 삭제되었는지 확인

# /dev/md1 (RAID 1)
mdadm 명령을 통해 리눅스에서 소프트웨어 RAID 생성하고 관리하도록 설정
--create 옵션을 통해 새로운 RAID 장치 생성
/dev/md1 옵션을 통해 RAID로 생성될 논리 디바이스 이름을 /dev/md1로 생성
--level=1 옵션을 통해 RAID 1 (Mirroring) 모드를 사용하도록 지정
--raid-devices=2 옵션을 통해 RAID에 참여하는 실제 디스크 또는 파티션 개수 2개로 설정
/dev/sdc1 /dev/sdh1 옵션을 통해 RAID에 참여할 두 개의 파티션 경로 설정
ls -l /dev/md1 명령을 통해 /dev/md1 디바이스 파일의 상세 정보 확인
fdsik -l /dev/md1 명령을 통해 /dev/md1 디바이스의 파티션 테이블과 용량과 섹터 정보 나열
mdadm --detail --scan -v 명령을 통해 현재 시스템에서 인식한
모든 md 배열을 스캔하여 mdadm.conf에 넣을 구성 라인 자세히 출력
cat /proc/mdstat 명령을 통해 현재 시스템의 소프트웨어 RAID 상태를 보여주는
가상 파일인 /proc/mdstat 내용 확인

# /dev/md1 중지
mdadm --stop /dev/md1 명령을 통해 활성화된 RAID 배열인 /dev/md1 RAID 장치 중지
# /dev/sdc1, /dev/sdh1 제거
mdadm --zero-superblock /dev/sdc1 /dev/sdh1 명령을 통해 각각의 디스크 파티션들에 대해 슈퍼 블록 제거
mdadm --examine /dev/sdc1 /dev/sdh1 명령을 통해 지정된 파티션의 RAID 슈퍼블록이 잘 삭제되었는지 확인
ls -l /dev/md1 명령을 통해 디렉터리에서 잘 삭제되었는지 확인

# /dev/md5 (RAID 5)
mdadm 명령을 통해 리눅스에서 소프트웨어 RAID 생성하고 관리하도록 설정
--create 옵션을 통해 새로운 RAID 장치 생성
/dev/md5 옵션을 통해 RAID로 생성될 논리 디바이스 이름을 /dev/md5로 생성
--level=5 옵션을 통해 RAID 5 (Distributed Parity) 모드를 사용하도록 지정
--raid-devices=3 옵션을 통해 RAID에 참여하는 실제 디스크 또는 파티션 개수 3개로 설정
/dev/sdc1 /dev/sdd1 /dev/sdh1 옵션을 통해 RAID에 참여할 세 개의 파티션 경로 설정
ls -l /dev/md5 명령을 통해 /dev/md5 디바이스 파일의 상세 정보 확인
fdsik -l /dev/md5 명령을 통해 /dev/md5 디바이스의 파티션 테이블과 용량과 섹터 정보 나열
mdadm --detail --scan -v 명령을 통해 현재 시스템에서 인식한
모든 md 배열을 스캔하여 mdadm.conf에 넣을 구성 라인 자세히 출력
cat /proc/mdstat 명령을 통해 현재 시스템의 소프트웨어 RAID 상태를 보여주는
가상 파일인 /proc/mdstat 내용 확인

# /dev/md5 중지
mdadm --stop /dev/md5 명령을 통해 활성화된 RAID 배열인 /dev/md5 RAID 장치 중지
# /dev/sdc1, /dev/sdd1, /dev/sdh1 제거
mdadm --zero-superblock /dev/sdc1 /dev/sdd1 /dev/sdh1 명령을 통해
각각의 디스크 파티션들에 대해 슈퍼 블록 제거
mdadm --examine /dev/sdc1 /dev/sdd1 /dev/sdh1 명령을 통해
지정된 파티션의 RAID 슈퍼블록이잘 삭제되었는지 확인
ls -l /dev/md5 명령을 통해 디렉터리에서 잘 삭제되었는지 확인

# /dev/sdc1, /dev/sdh1를 PV로 생성 및 초기화
pvcreate /dev/sdc1 /dev/sdh1 명령을 통해
저장된 /dev/sdc1, /dev/sdh1 파티션을 LVM에서 사용할 수 있는 PV로 생성 및 초기화
# TEST_VG 생성
vgcreate TEST_VG /dev/sdc1 /dev/sdh1 명령을 통해
PV인 /dev/sdc1와 /dev/sdh1을 하나로 묶어 TEST_VG라는 이름으로 VG 생성
vgdisplay -v 명령을 통해 VG가 잘 생성되었는지 확인

# TEST_VG 삭제
vgremove 명령을 통해 VG였던 TEST_VG 삭제
# /dev/sdc1, /dev/sdh1 삭제
pvremove /dev/sdc1 /dev/sdh1 명령을 통해 PV였던 /dev/sdc1과 /dev/sdh1 삭제
'리눅스' 카테고리의 다른 글
| Linux 백업 관리 (0) | 2026.06.14 |
|---|---|
| Linux 패키지 관리 (0) | 2026.06.14 |
| Linux LVM 디스크 구성 (0) | 2026.06.13 |
| Linux 파일 시스템 생성 및 마운트 (0) | 2026.06.13 |
| Linux 디스크 파티션 작업 (0) | 2026.06.13 |