idea·blog

NAS 미니랩 1/4 · RAID 패리티

디스크가 죽어도 파일은 살아 있습니다.

NAS는 파일을 블록으로 나눠 여러 디스크에 쓰고, 블록들을 XOR한 패리티를 함께 적어 둡니다. 디스크 하나가 고장 나면 남은 블록들을 다시 XOR해서 잃어버린 블록을 그대로 되살립니다. 단, “하나”까지만요.

이것만 기억하세요남은 블록들의 XOR
= 잃어버린 블록

아래 파란 버튼만 누르세요

블록이 채워지고, 사라지고, 되살아나는 걸 보세요

시나리오
데이터패리티유실복구
대기 중

photo.jpg → 블록 9개 (스트라이프 3줄 × 3블록) + 패리티 3

XOR 계산기

블록을 쓰거나 복구할 때, 여기서 실제 바이트 값으로 XOR 계산을 보여드려요.

지나온 기록

저장을 시작하면 단계마다 기록이 쌓여요.

시나리오를 고르고 저장 시작을 누르세요. 파일이 블록으로 나뉘어 저장되고, 디스크가 고장 나는 순간부터가 진짜예요.

원리 세 가지만

패리티 하나로 고장을 견디는 이유

01나눠 쓰고, 함께 적어요.

파일을 블록으로 잘라 여러 디스크에 나눠 쓰고(스트라이핑), 같은 줄 블록들을 XOR한 패리티를 한 블록 더 적어 둬요. 추가 비용은 디스크 한 대 분량뿐이에요.

02XOR은 되돌릴 수 있어요.

같은 값을 두 번 XOR 하면 사라져요(a⊕b⊕b=a). 그래서 패리티에서 남은 블록들을 다시 XOR 하면, 잃어버린 블록만 정확히 남아요.

03딱 한 대까지만 견뎌요.

식 하나로는 미지수 하나만 풀 수 있어요. 두 대가 동시에 죽으면 복구 불가 — 그래서 RAID가 있어도 백업은 따로 필요해요.

블록 나눠 쓰기패리티 함께 적기고장 나면 XOR 복구새 디스크 리빌드
원리 위주로 단순화한 시뮬레이션입니다.

이 데모는 패리티를 마지막 디스크에 고정한 배치(RAID 4에 가까움)로 보여줍니다. 실제 RAID 5는 쓰기 부하를 나누려고 패리티를 스트라이프마다 다른 디스크에 돌려가며 둡니다. 블록 크기, 컨트롤러·파일 시스템의 동작, 리빌드 중 실패 확률 같은 상세도 생략했습니다. 그리고 RAID는 장비 고장 대비일 뿐, 실수·랜섬웨어·화재를 막는 백업이 아닙니다.

참고: Patterson · Gibson · Katz, “A Case for RAID” (1988)이 랩의 소개글 읽기 →

실험을 마쳤다면