시스템 · 서버핵심 · 20분 읽기

RAID·백업·복구와 quota

RAID는 일부 장치 고장에 대응하는 구조입니다. 삭제·오염·전체 장애에서 복구하려면 별도의 백업과 복원 검증이 필요합니다.

개념부터 찾아보기

정의·역할·동작 원리를 독립 페이지에서 확인하세요. 본문의 밑줄 용어에도 설명이 있습니다.

이 노트에서 설명할 수 있게 되는 것

  1. RAID의 데이터 배치를 그림으로 읽고 고장 허용 조건을 판정한다.
  2. 정상·degraded·재구축 상태를 구분한다.
  3. RAID와 백업이 복구하는 실패 종류를 RPO·RTO에 연결한다.

01stripe와 mirror가 실제 블록을 놓는 위치

  • 같은 크기 디스크 두 개에 을 만들면 연속 데이터 구간을 chunk로 나누어 A0,B0,A1,B1처럼 번갈아 배치한다.
  • 여러 장치로 I/O를 분산할 수 있지만 필요한 데이터 조각이 여러 디스크에 흩어지므로 하나가 고장 나면 전체 내용을 완성할 수 없다.
  • 은 같은 논리 블록을 두 장치에 기록한다.
  • 한쪽이 없어도 남은 복사본으로 읽을 수 있지만 삭제나 잘못된 쓰기도 함께 복제된다.
  • 디스크 수를 늘렸을 때 성능이 항상 1.4배 또는 정확히 두 배가 되는 것은 아니다.
    • 순차·랜덤 I/O, 읽기·쓰기 비율, 큐 깊이, 컨트롤러, 네트워크, 동기화 여부가 결과에 영향을 준다.
  • 동일 크기 N개 디스크의 단순 은 대략 N개 용량, 두 개 은 한 개 용량을 제공한다.
  • 메타데이터와 정렬 등 때문에 표시되는 실사용량은 이론 계산과 약간 다를 수 있다.

02패리티와 중첩 RAID의 장애 허용을 계산하기

  • 는 한 stripe의 데이터로부터 패리티를 계산해 여러 디스크에 분산한다.
  • 데이터 조각 하나를 잃어도 남은 데이터와 패리티로 재구성하며 동시 한 장치 장애를 견딘다.
  • 은 서로 독립적인 두 패리티 정보를 사용해 두 장치 장애를 견딘다.
  • 같은 크기 디스크라면 데이터 용량은 각각 (N-1)배와 (N-2)배지만 작은 쓰기는 패리티 갱신 비용이 생길 수 있다.
  • 전형적인 네 디스크 은 두 미러 쌍 위에 stripe를 놓는다.
  • 한 쌍에서 둘이 동시에 고장 나면 다른 쌍이 살아 있어도 해당 데이터가 사라진다.
    • 서로 다른 쌍에서 하나씩 고장 나면 계속 동작할 수 있다.
    • 반대로 stripe 두 묶음을 미러하는 +1은 같은 네 디스크라도 장애 후 남는 구조가 다르다.
  • 하위 md1·md11이 raid1이고 상위 md110이 raid0인 출력은 +0 구조를 나타낸다.

03Linux MD의 생성·조립·마운트가 다른 단계인 이유

  • mdadm은 MD 장치의 구성을 관리한다.
  • --create는 선택한 구성원에 새 배열 메타데이터를 만들고, 조립은 기존 구성원의 UUID·이벤트 정보 등을 이용해 배열을 다시 활성화하는 과정이다.
  • 배열 위에 파일 시스템을 생성하고 그것을 마운트하는 것은 또 다른 단계다.
  • 배열 정보가 저장되는 mdadm.conf와 파일 시스템의 마운트 위치를 기록하는 fstab은 목적이 다르다.
  • mdadm --detail --scan의 ARRAY 줄은 배열 조립용 설정 자료다. 이를 mdadm.conf에 기록한다고 fstab의 마운트 항목이 자동 생성되지는 않는다.
  • 초기 부팅에 root 배열이 필요하면 initramfs 안에서도 구성원과 배열을 찾을 수 있어야 한다.
  • data 배열은 배포판의 udev/ 자동 조립으로 처리될 수 있으므로 운영체제 구성과 배열 용도를 함께 설명한다.
bash
cat /proc/mdstat
sudo mdadm --detail /dev/md1
sudo mdadm --detail --scan
lsblk -f
# MD UUID와 그 위 파일 시스템 UUID는 다른 계층의 식별자다.

교육용 설정·명령 예시. 실행 환경과 대상 경로를 가정하며 이 페이지를 만들면서 실행하지 않았다.

04clean·degraded·recovery를 블록 복제 상태로 읽기

  • 두 구성원 의 [2/2] [UU]는 필요한 두 자리에 정상 구성원이 둘 있음을 나타내는 대표 출력이다.
  • 한쪽이 빠지면 [2/1] [U_] 같은 상태가 보이고 배열은 degraded로 계속 서비스할 수 있다.
  • clean은 대기 중인 기록 정합성의 상태를 설명할 수 있으며 clean, degraded가 함께 나타날 수 있다.
    • clean만 보고 모든 디스크가 정상이라고 해석하면 안 된다.
  • 새 장치를 추가하면 남은 데이터에서 복사하여 복구하는 동안 recovery 진행률이 나타난다.
    • 복구가 끝나기 전에는 원래 장애 허용 여유가 회복되지 않았다.
  • write-intent bitmap은 어떤 범위에 쓰기가 있었는지 기록해 일부 동기화 작업에 도움을 주지만 별도 백업이 아니다.
  • scrub/check는 구성원 사이의 불일치를 검사하는 작업이며 어느 복사본이 올바른 사용자 데이터인지 항상 자동 판정해 주지는 않는다.
  1. 두 정상 멤버에 같은 논리 데이터를 유지하는 미러 쌍을 가정한다. 두 복사본이 있는 상태와 배열에 기록할 변경이 없는 clean 상태는 같은 뜻이 아니다.
  2. 한 멤버를 더 사용할 수 없으면 남은 정상 복사본으로 I/O를 계속할 수 있으나 해당 미러의 중복성이 사라진 degraded 상태가 된다.
  3. 정상 데이터가 남은 배열에 사용 가능한 교체 장치나 spare가 참여한다. 새 장치가 배열 구성과 용량 조건을 만족해야 한다.
  4. MD가 필요한 데이터를 정상 멤버에서 복구 대상으로 복제한다. 복구 중의 쓰기도 일관되게 처리해야 하므로 사용자 I/O와 복구 작업이 자원을 함께 사용한다.
  5. 복구가 끝나고 멤버가 정상 상태로 참여하면 다시 복사본을 유지한다. 완료 전에 남은 복사본까지 잃으면 복구 가능성을 보장할 수 없다.
text
# 설명용 /proc/mdstat 상태
md1 : active raid1 sdb1[1] sda1[0]
      102400 blocks super 1.2 [2/2] [UU]
# 한 구성원 장애 후 가능한 표시: [2/1] [U_]
# 교체 후: recovery 진행률 -> 완료 뒤 [UU]

교육용 설정·명령 예시. 실행 환경과 대상 경로를 가정하며 이 페이지를 만들면서 실행하지 않았다.

수업 원본 자료

장애 상태의 /proc/mdstat 읽기

중첩 RAID 실습에서 md3 raid1의 md1 멤버에 F 표시와 2/1, 밑줄 U 표시가 보이는 터미널 캡처원본 크기로 보기 ↗
수업 원본 조회 화면. md3 위아래의 중첩 RAID 구성을 보여 주는 특정 실습이며, 일반 RAID 1 예시와 구성을 혼동하지 않습니다.

이 자료에서 읽어낼 것

  1. md3 줄의 raid1은 해당 배열의 수준입니다. md1[0](F)의 (F)는 이 배열에서 해당 멤버가 실패 상태라는 표시입니다.
  2. [2/1]은 기대한 두 멤버 중 현재 하나가 활성인 상태, [_U]는 한 슬롯이 빠지고 다른 슬롯이 동작 중이라는 단서입니다. active라는 단어만 보고 정상 이중화 상태라고 판단하면 안 됩니다.
  3. 아래 md1과 md2의 raid0 줄은 다른 계층의 배열입니다. 어떤 물리 장치와 논리 배열이 연결됐는지 확인하고, 복구 전에 백업 상태와 고장 원인을 확인합니다.
LEARN THROUGH PRACTICE

RAID 1의 정상·저하·멤버 교체 상태 읽기

같은 MD 배열의 멤버 수와 역할을 추적해, 데이터가 읽히는 상태와 중복성이 복구된 상태를 구별한다.

실습 구성과 전제

  • 화면은 가상 디스크로 만든 배열 /dev/md1의 장애 주입 및 멤버 교체 실습이다. 실제 운영 장치에 장애 명령을 적용하지 않는다.
  • 세 화면은 배열 식별 정보와 멤버 표를 대조해 읽는다. 아래에서는 조회 명령만 제시한다.
  1. 정상 배열의 기준을 기록한다

    • Level이 raid1이고 두 멤버가 active sync라면 같은 논리 데이터를 두 장치에 유지하는 구성을 읽을 수 있다. usable 용량은 두 디스크 용량의 단순 합이 아니다.
    • State뿐 아니라 Devices, Active Devices, Failed Devices, 멤버 역할을 기록해야 이후 변화가 분명해진다.
    bash
    sudo mdadm --detail /dev/md1
    cat /proc/mdstat

    배열 상태와 커널의 MD 요약을 조회한다.

    5/28-raid · 명령·상태 출력 28원본 크기로 보기 ↗
    • 배열 상태는 clean, Active Devices는 2, Failed Devices는 0이다.
    • sda1과 sdb1이 각각 active sync로 표시되고 배열 크기는 약 100MiB다.
    확인 기준

    clean 한 단어만 확인하지 말고 기대 멤버 수와 실제 active 수가 일치하는지 본다.

  2. 장애 이후 읽기 가능성과 중복성 손실을 분리한다

    • 장애를 주입한 뒤 State는 clean, degraded로 바뀐다. surviving 멤버가 남아 서비스가 이어질 수 있지만 추가 장애에 대한 보호는 줄어든다.
    • clean은 기록된 배열 상태를 설명하며, degraded와 함께 나올 수 있다. 파일이 읽힌다는 사실만으로 두 복제본이 모두 정상이라고 판단하지 않는다.
    5/28-raid · 명령·상태 출력 35원본 크기로 보기 ↗
    • Active Devices는 1, Failed Devices는 1로 바뀐다.
    • sdb1은 faulty로, 한 RAID 슬롯은 removed로 나타나고 sda1이 active sync로 남아 있다.
    확인 기준

    이 실습의 faulty 표시는 의도한 장애 주입 결과다. 실제 장치 고장 원인을 이 화면만으로 진단한 것은 아니다.

  3. 교체 후 배열 참여와 재동기화 완료를 확인한다

    • 새 장치를 추가하면 재구축 중 상태를 거쳐 동기화된 멤버가 된다. 두 번째 장치를 인식했다는 사실만으로 복구가 끝났다고 판단하지 않는다.
    • 마지막 화면은 sde1이 active sync로 참여하고 Active Devices 2, Failed Devices 0으로 돌아온 결과를 보여 준다. 재구축 진행률 자체는 이 정지 화면에 보이지 않는다.
    5/28-raid · 명령·상태 출력 41원본 크기로 보기 ↗
    • sda1과 sde1이 active sync로 나열된다.
    • State는 clean이고 Active Devices=2, Failed Devices=0으로 표시된다.
    확인 기준

    멤버 수와 역할, /proc/mdstat의 재동기화 표시, 파일 시스템 접근을 모두 확인한다. 는 실수 삭제까지 되돌리는 백업이 아니다.

실습에서 확인한 동작 원리

  • 은 한 멤버가 고장 나도 동작할 수 있지만 degraded 동안 중복 보호가 약해진다.
  • 장치 추가, 재구축 진행, active sync 복귀는 서로 다른 상태이며 백업 복원과도 다르다.

설정·출력 추가로 확인하기 65장

아래 화면을 펼쳐 위 실습의 설정값, 명령과 확인 기준을 비교해 보세요. 각 묶음은 별도 실습 기록입니다.

실습 화면 묶음 01 16장
5/28-raid · 명령·상태 출력 13원본 크기로 보기 ↗
  • 「rocky 실습 (sata)」 문맥에 삽입된 원본 명령·상태 출력이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/28-raid · 명령·상태 출력 14원본 크기로 보기 ↗
  • 「rocky 실습 (sata)」 문맥에 삽입된 원본 명령·상태 출력이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/28-raid · 명령·상태 출력 25원본 크기로 보기 ↗
  • 「striping (raid0)」 문맥에 삽입된 원본 명령·상태 출력이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/28-raid · 명령·상태 출력 26원본 크기로 보기 ↗
  • 「striping (raid0)」 문맥에 삽입된 원본 명령·상태 출력이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/28-raid · 명령·상태 출력 27원본 크기로 보기 ↗
  • 「striping (raid0)」 문맥에 삽입된 원본 명령·상태 출력이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/28-raid · 명령·상태 출력 32원본 크기로 보기 ↗
  • 「sdc, sdd 를 striping 모드로 묶어라 - raid 0」 문맥에 삽입된 원본 명령·상태 출력이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/28-raid · 명령·상태 출력 34원본 크기로 보기 ↗
  • 「mdadm --detail --scan | sudo tee -a /etc/mdadm.conf」 문맥에 삽입된 원본 명령·상태 출력이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/28-raid · 실습·개념 참고 화면 18원본 크기로 보기 ↗
  • 「rocky 실습 (sata)」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/28-raid · 실습·개념 참고 화면 2원본 크기로 보기 ↗
  • 「rocky 실습 (sata)」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/28-raid · 실습·개념 참고 화면 3원본 크기로 보기 ↗
  • 「rocky 실습 (sata)」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/28-raid · 실습·개념 참고 화면 33원본 크기로 보기 ↗
  • 「sdc, sdd 를 striping 모드로 묶어라 - raid 0」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/28-raid · 실습·개념 참고 화면 36원본 크기로 보기 ↗
  • 「riad 1 에서 하나 에러 상황」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/28-raid · 실습·개념 참고 화면 37원본 크기로 보기 ↗
  • 「riad 1 에서 하나 에러 상황」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/28-raid · 실습·개념 참고 화면 38원본 크기로 보기 ↗
  • 「riad 1 에서 하나 에러 상황」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/28-raid · 실습·개념 참고 화면 40원본 크기로 보기 ↗
  • 「riad 1 에서 하나 에러 상황」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/28-raid · 실습·개념 참고 화면 42원본 크기로 보기 ↗
  • 「동작하고 있는 레이드 중지」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
실습 화면 묶음 02 12장
5/29 - guota (용량 제한) · 실습·개념 참고 화면 1원본 크기로 보기 ↗
  • 「quota (디스크 용량 제한) - 준비」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/29 - guota (용량 제한) · 실습·개념 참고 화면 10원본 크기로 보기 ↗
  • 「quota - 디스크 제한」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/29 - guota (용량 제한) · 실습·개념 참고 화면 11원본 크기로 보기 ↗
  • 「quota - 디스크 제한」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/29 - guota (용량 제한) · 실습·개념 참고 화면 12원본 크기로 보기 ↗
  • 「quota - 디스크 제한」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/29 - guota (용량 제한) · 실습·개념 참고 화면 2원본 크기로 보기 ↗
  • 「quota (디스크 용량 제한) - 준비」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/29 - guota (용량 제한) · 실습·개념 참고 화면 3원본 크기로 보기 ↗
  • 「quota (디스크 용량 제한) - 준비」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/29 - guota (용량 제한) · 실습·개념 참고 화면 4원본 크기로 보기 ↗
  • 「quota (디스크 용량 제한) - 준비」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/29 - guota (용량 제한) · 실습·개념 참고 화면 5원본 크기로 보기 ↗
  • 「quota (디스크 용량 제한) - 준비」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/29 - guota (용량 제한) · 실습·개념 참고 화면 6원본 크기로 보기 ↗
  • 「quota (디스크 용량 제한) - 준비」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/29 - guota (용량 제한) · 실습·개념 참고 화면 7원본 크기로 보기 ↗
  • 「quota (디스크 용량 제한) - 준비」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/29 - guota (용량 제한) · 실습·개념 참고 화면 8원본 크기로 보기 ↗
  • 「quota (디스크 용량 제한) - 준비」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/29 - guota (용량 제한) · 실습·개념 참고 화면 9원본 크기로 보기 ↗
  • 「quota - 디스크 제한」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
실습 화면 묶음 03 9장
Raid 0+1 · 명령·상태 출력 1원본 크기로 보기 ↗
  • 문서 문맥에 삽입된 원본 명령·상태 출력이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
Raid 0+1 · 명령·상태 출력 2원본 크기로 보기 ↗
  • 문서 문맥에 삽입된 원본 명령·상태 출력이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
Raid 0+1 · 명령·상태 출력 3원본 크기로 보기 ↗
  • 문서 문맥에 삽입된 원본 명령·상태 출력이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
Raid 0+1 · 명령·상태 출력 4원본 크기로 보기 ↗
  • 문서 문맥에 삽입된 원본 명령·상태 출력이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
Raid 0+1 · 명령·상태 출력 5원본 크기로 보기 ↗
  • 문서 문맥에 삽입된 원본 명령·상태 출력이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
Raid 0+1 · 명령·상태 출력 8원본 크기로 보기 ↗
  • 문서 문맥에 삽입된 원본 명령·상태 출력이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
Raid 0+1 · 실습·개념 참고 화면 6원본 크기로 보기 ↗
  • 문서 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
Raid 0+1 · 실습·개념 참고 화면 7원본 크기로 보기 ↗
  • 문서 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
Raid 0+1 · 실습·개념 참고 화면 9원본 크기로 보기 ↗
  • 문서 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
실습 화면 묶음 04 8장
raid test 시나리오 · 실습·개념 참고 화면 1원본 크기로 보기 ↗
  • 「실제 장애 테스트」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
raid test 시나리오 · 실습·개념 참고 화면 2원본 크기로 보기 ↗
  • 「실제 장애 테스트」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
raid test 시나리오 · 실습·개념 참고 화면 3원본 크기로 보기 ↗
  • 「실제 장애 테스트」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
raid test 시나리오 · 실습·개념 참고 화면 4원본 크기로 보기 ↗
  • 「실제 장애 테스트」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
raid test 시나리오 · 실습·개념 참고 화면 5원본 크기로 보기 ↗
  • 「실제 장애 테스트」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
raid test 시나리오 · 실습·개념 참고 화면 6원본 크기로 보기 ↗
  • 「실제 장애 테스트」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
raid test 시나리오 · 실습·개념 참고 화면 7원본 크기로 보기 ↗
  • 「실제 장애 테스트」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
raid test 시나리오 · 실습·개념 참고 화면 8원본 크기로 보기 ↗
  • 「실제 장애 테스트」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
실습 화면 묶음 05 20장
raid · 명령·상태 출력 11원본 크기로 보기 ↗
  • 「log」 문맥에 삽입된 원본 명령·상태 출력이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
raid · 명령·상태 출력 12원본 크기로 보기 ↗
  • 「log」 문맥에 삽입된 원본 명령·상태 출력이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
raid · 명령·상태 출력 13원본 크기로 보기 ↗
  • 「log」 문맥에 삽입된 원본 명령·상태 출력이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
raid · 명령·상태 출력 14원본 크기로 보기 ↗
  • 「log」 문맥에 삽입된 원본 명령·상태 출력이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
raid · 명령·상태 출력 15원본 크기로 보기 ↗
  • 「log」 문맥에 삽입된 원본 명령·상태 출력이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
raid · 명령·상태 출력 17원본 크기로 보기 ↗
  • 「log」 문맥에 삽입된 원본 명령·상태 출력이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
raid · 명령·상태 출력 2원본 크기로 보기 ↗
  • 「db」 문맥에 삽입된 원본 명령·상태 출력이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
raid · 명령·상태 출력 3원본 크기로 보기 ↗
  • 「db」 문맥에 삽입된 원본 명령·상태 출력이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
raid · 명령·상태 출력 4원본 크기로 보기 ↗
  • 「db」 문맥에 삽입된 원본 명령·상태 출력이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
raid · 명령·상태 출력 5원본 크기로 보기 ↗
  • 「db」 문맥에 삽입된 원본 명령·상태 출력이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
raid · 명령·상태 출력 6원본 크기로 보기 ↗
  • 「db」 문맥에 삽입된 원본 명령·상태 출력이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
raid · 명령·상태 출력 7원본 크기로 보기 ↗
  • 「db」 문맥에 삽입된 원본 명령·상태 출력이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
raid · 명령·상태 출력 8원본 크기로 보기 ↗
  • 「db」 문맥에 삽입된 원본 명령·상태 출력이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
raid · 실습·개념 참고 화면 1원본 크기로 보기 ↗
  • 「db」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
raid · 실습·개념 참고 화면 10원본 크기로 보기 ↗
  • 「db」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
raid · 실습·개념 참고 화면 16원본 크기로 보기 ↗
  • 「log」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
raid · 실습·개념 참고 화면 19원본 크기로 보기 ↗
  • 「log」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
raid · 실습·개념 참고 화면 20원본 크기로 보기 ↗
  • 「log」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
raid · 실습·개념 참고 화면 21원본 크기로 보기 ↗
  • 「log」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
raid · 실습·개념 참고 화면 9원본 크기로 보기 ↗
  • 「db」 문맥에 삽입된 원본 실습·개념 참고 화면이다. RAID·백업·복구와 quota 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
동작·명령 참고 문서
원리 심화

05패리티 갱신과 장애 뒤 재구축이 요구하는 정보

  • 미러는 같은 데이터를 보관하고 패리티는 다른 데이터와 결합해 누락을 복원할 정보를 보관한다. 데이터 원본을 모두 별도 디스크 하나에 모아 두는 구조가 아니다.
  • 일부 stripe의 데이터만 바뀌어도 패리티를 일치시켜야 한다. read-modify-write 계열은 이전 데이터·패리티를 읽고 새 패리티를 계산하므로 사용자 쓰기 한 번이 여러 장치 I/O를 만들 수 있다.
  • 데이터와 패리티 갱신 도중 전원이 끊기면 두 상태가 어긋날 수 있다. MD의 journal·PPL 같은 일관성 정책은 이런 갱신 경계를 다루며 단순 파일 백업과 목적이 다르다.
  • 고장 난 멤버의 블록을 복구하려면 필요한 다른 데이터와 패리티가 유효해야 한다. dirty이면서 degraded인 /6을 무조건 강제로 조립하는 것은 이 전제를 무시할 수 있다.
  • clean은 미처리 쓰기가 없는 상태를, degraded는 중복성에 필요한 멤버가 부족한 상태를 설명한다. 서로 다른 질문이므로 clean이라는 단어 하나로 모든 멤버의 건강을 보증하지 않는다.
예제로 추적

06단일 XOR 패리티로 누락 블록 하나 복원하기

  • 4비트 데이터 A=1010, B=1100과 패리티 P=A XOR B를 사용하는 학습 모델을 가정한다. 실제 디스크 블록 크기·패리티 배치·메타데이터를 축약한 계산이다.
  • 각 비트가 다르면 1, 같으면 0이므로 1010 XOR 1100=0110이다. P=0110을 보관하면 A나 B 중 하나가 없을 때 다른 둘로 계산할 수 있다.
  • A가 사라졌지만 B와 P가 유효하면 B XOR P=1100 XOR 0110=1010으로 A를 되찾는다. XOR을 두 번 하면 같은 비트가 상쇄되는 성질을 사용한다.
  • A와 B가 함께 없어지면 P 하나만으로 둘을 유일하게 정할 수 없다. 단일 패리티가 두 데이터 손실을 일반적으로 복구하지 못하는 이유다.
  • 동일한 2TiB 장치 네 개의 일반 는 패리티 상당 공간 하나를 제외한 약 6TiB를 제공한다. 파일 시스템·메타데이터 비용과 실제 가용 표시는 별도다.
연산결과
1010 XOR 11000110
1100 XOR 01101010
검증·예외

07md 상태 표시를 복구의 단계에 대입하기

  • 2개 멤버 의 가상 표기 [2/1] [U_]는 구성상 두 자리 중 하나만 사용 가능함을 나타낸다. 장치의 실제 슬롯·serial과 연결해야 어느 디스크인지 알 수 있다.
  • recovery/resync 진행률이 보이면 데이터를 읽을 수 있어도 중복성이 모두 회복된 완료 상태는 아니다. 남은 시간은 현재 속도의 추정이며 고정 약속이 아니다.
  • check에서 불일치가 발견됐다고 어느 복사본이 올바른 업무 데이터인지 자동 확정되는 것은 아니다. 컨트롤러·전원·장치 오류와 백업 근거가 필요하다.
  • 재구축은 남은 장치를 많이 읽는다. 그중 필요한 블록이 읽히지 않으면 단순한 장치 수 계산보다 복구 조건이 나빠질 수 있다.
  • 모든 멤버가 정상이어도 사용자의 삭제는 정상 쓰기로 반영될 수 있다. 이 경우 필요한 것은 장애 멤버 교체가 아니라 삭제 전 시점의 백업 복원이다.
text
md0 : active raid1 ...
      ... [2/1] [U_]
      ... recovery = 35.0% ...

멤버 수와 복구 진행 판독을 위한 축약 가상 /proc/mdstat 형식. 정확한 필드 배치는 커널·구성에 따라 달라진다.

08quota는 디스크 전체가 남아 있어도 쓰기를 제한한다

  • quota는 사용자·그룹·프로젝트 단위로 할당 가능한 수를 제한한다.
  • 큰 파일 하나는 블록 한도를, 매우 작은 파일 수만 개는 한도를 먼저 소모할 수 있다.
  • soft limit을 넘으면 grace 기간이 시작되고 기한 안에 내려가지 않으면 추가 할당을 제한한다.
  • 은 추가 할당의 절대 상한이다.
    • 따라서 df에서 빈 공간이 보여도 특정 사용자에게 Disk quota exceeded가 생길 수 있다.
  • ext 계열에서는 설정 방식에 따라 quota 데이터베이스 생성·활성화와 edquota/setquota가 사용되고 XFS는 자체 quota 관리와 xfs_quota를 사용한다.
  • XFS의 accounting 활성화는 최초 마운트 조건과 관련되므로 일반 remount만으로 항상 새 quota 기능을 켤 수 있다고 가정하지 않는다.
  • 는 특정 디렉터리 트리를 하나의 사용 단위로 묶을 때 유용하다. quota 단위는 도구의 표시와 버전에 맞춰 읽고, 장애 허용 ·과거 복원 백업·사용량 제한 quota를 각각 구별한다.
bash
df -h /srv/data
df -i /srv/data
quota -s
sudo repquota -as
# XFS인 경우
sudo xfs_quota -x -c "state" /srv/data
sudo xfs_quota -x -c "report -h" /srv/data

교육용 설정·명령 예시. 실행 환경과 대상 경로를 가정하며 이 페이지를 만들면서 실행하지 않았다.

09용량 제한과 관찰

  • quota는 사용자·그룹 또는 지원되는 프로젝트 단위로 공간이나 파일 수를 제한하는 기능이다.
  • 전체 여유 공간과 개인에게 허용된 양은 다를 수 있으며 soft limit, , 유예 기간의 의미를 구분한다.
    • quota와 는 서로 다른 목적의 기능이다.
bash
cat /proc/mdstat
df -h
df -i

소프트웨어 상태와 파일 시스템의 공간· 사용량을 조회한다.

10RAID 10의 고장 위치를 직접 따라가기

  • 두 장치씩 묶은 미러 두 쌍에 데이터를 스트라이핑한 구성을 가정한다.
  • 첫 번째 데이터 블록 A는 장치 1·2에, 다음 블록 B는 장치 3·4에 같은 내용으로 저장한다.
  • 네 장치 중 장치 1이 고장나도 A는 장치 2에서 읽을 수 있다.
  • 이어 장치 3이 고장난다면 A와 B 각각의 복사본이 하나씩 남아 배열을 계속 사용할 수 있는 조건이 된다.
    • 그러나 장치 1·2가 함께 고장나면 A의 두 복사본을 모두 잃으므로 같은 두 장치 고장이라도 결과가 다르다.
  • 이 도식은 미러 쌍 위에 스트라이핑한 배치를 설명하는 예이며 모든 구현의 배치 방식을 대표하지 않는다.
  • 의 단일 패리티와 의 이중 패리티도 주어진 고장 수와 데이터·패리티의 유효성이라는 조건 아래 복구한다.
  • degraded 배열이 읽기를 제공한다는 사실은 추가 고장에도 안전하다는 뜻이 아니다.
  • 교체 장치 재구축은 남은 장치의 데이터를 많이 읽으므로 부하와 추가 오류를 함께 관찰해야 한다.

설명과 함께 보는 보조 도식

경로와 상태

고장 수보다 고장 위치가 중요한 RAID 10

A와 B는 서로 다른 데이터 블록이며 각 미러 쌍에 같은 블록이 복제된다.

AABB첫 번째 미러 쌍의 논리 데이터블록 A두 번째 미러 쌍의 논리 데이터블록 BA의 첫 복사본장치 1A의 두 번째 복사본장치 2B의 첫 복사본장치 3B의 두 번째 복사본장치 4
전체 단계를 한 번에 읽기
  1. 01

    정상 배치

    A·B의 복사본이 각각 두 개씩 존재한다.

    상태
    두 미러 쌍 정상
  2. 02

    장치 1 고장

    A는 장치 2로 읽을 수 있으나 해당 쌍의 중복성이 사라진다.

    상태
    degraded
  3. 03

    사례 1: 장치 1·3 고장

    서로 다른 미러 쌍에 하나씩 복사본이 남는다.

    읽기 가능 조건
    A·B 모두 복사본 생존
  4. 04

    사례 2: 장치 1·2 고장

    앞 단계와 다른 가정이다. A의 두 복사본을 모두 잃는다.

    결과
    A를 배열에서 복구할 수 없음

파란 실선: 현재 단계에서 강조하는 연결 · 붉은 점선: 사용할 수 없는 연결

학습 모식도. 실제 연결 관계와 선택한 상태를 단순화했으며 표시된 고장·구성 조건에만 적용한다.

11복구 가능성을 상태와 시간으로 확인하기

  • 백업은 필요한 과거 시점의 데이터를 별도 보관하고 되돌리는 수단이다.
  • 는 허용할 데이터 손실 시간 범위, 는 복구에 허용할 시간 목표를 뜻한다.
  • 배열 조회에서는 구성 장치 수와 실제 동작 장치 수, 실패 표식, 동기화·재구축 진행을 대조한다.
    • clean 같은 상태와 장치별 오류 이력도 함께 보아야 한다.
  • 물리 장치 교체에서는 이름만 따라가면 재부팅이나 연결 순서 변화로 다른 디스크를 뽑을 수 있으므로 장치 식별자와 슬롯 정보를 대조한다.
  • 메타데이터를 지우거나 강제로 조립하는 명령은 관찰 단계가 아니라 복구 판단이 필요한 변경 작업이다.
  • 업무 데이터가 잘못 삭제된 경우에는 정상 라도 삭제 내용이 복제되므로 삭제 직전 백업을 찾아야 한다. 전날 밤 백업만 있다면 마지막 백업 이후 변경 손실이 와 맞는지 계산하고, 복원·정합성 검사·서비스 연결에 걸린 전체 시간을 와 비교한다.
  • 백업 파일을 읽을 수 있다는 확인과 서비스를 복구했다는 확인도 다르다.
  • quota는 개별 계정의 사용을 제한하는 장치로, 의 고장 복구나 과거 시점 복원을 제공하지 않는다.
  • 분리된 환경의 복구 검증에는 데이터뿐 아니라 필요한 설정·키·절차도 포함한다.
구성·관찰 대상관찰 내용해석
장치 배치어떤 미러 쌍이 손상됐는가고장 개수만으로 판정하지 않음
배열 상태degraded·재구축·장치 오류중복성이 회복됐는지
백업 시점복구 가능한 마지막 변경허용 데이터 손실과 비교
복원 시간업무 검증까지의 소요 달성 여부
학습 확인

이해했는지 확인하기

  • 선택한 RAID가 견디는 고장 조건을 설명한다.
  • 백업 복원으로 RPO·RTO 달성 여부를 확인한다.
  • degraded 상태와 quota 초과를 별도로 점검한다.

함께 확인할 공식 자료