센로그

11. Mass-Storage Structure 본문

CS/운영체제

11. Mass-Storage Structure

seeyoun 2023. 12. 5. 06:23

◆ 요점 정리

1. HDD

물리적으로 접근하는 대용량 저장장치
  • 구성: 플래터, 트랙, 섹터, 실린더
    • disk arm, read-write head
  • positioning(access) time = seek time + rotational latency
  • 평균 I/O time = positioning time + transfer time + controller latency
  • 1Gb = 1/8 GB
  • overwrite 가능

 

2. NVM

전원 공급 없이도 데이터가 휘발되지 않고 보존되는 메모리
  • ROM
  • Flash Memory (EEPROM 활용): 썼다 지웠다 할 수 있는 롬
    • USB 
    • SSD
      • 내부의 FTL이 logical address를 physical address로 변환 
      • Erase Before Write; 블록 단위 삭제만 가능. 덮어쓰기(overwriting) 안됨. → NAND Memory 등장

 

3. HDD 스케쥴링

하드디스크 드라이버 컨트롤러의 버퍼(큐)를 통해 I/O요청 관리

 

목적 : Seek time 최소화

  • FCFS
  • SCAN
  • C-SCAN

 

4. Storage Device Management

  • Low-level formatting : 섹터 단위로 접근
  • Logical formatting : 실린더 단위로 디스크로 구별

 

5. Booting 과정

  • BIOS - MBR - Boot Loader - Kernel

 

6. NAS

원격 파일 저장소를 인터넷으로 제공해주는 방식. (RPC 사용)

 

 

7. RAID

디스크 여러개를 Array로 묶어서 사용함으로써 성능이나 안전성을 증진시키기 위한 방법
  • Striping: 여러 디스크를 번갈아가며 블록 분배 (연속된 블록을 동시에 접근할 수 있으므로 성능 증진)
  • Mirroring: 한 디스크의 데이터를 다른 디스크로 자동 복사 (안전성 증진)

 


◆ Mass Storage

컴퓨터 시스템은 파일이나 데이터를 영구적으로 저장하기 위한 mass storage(대용량 저장 장치)를 지원해야 한다.

 

보조 기억장치로는 하드 디스크, nonvolatile 메모리(비휘발성 메모리; ROM 등) 둘다 사용함.

이들은 다양한 측면에서의 차이가 있다.

  • 연속 접근 vs 랜덤 접근
  • 동기적 전송 vs 비동기적 전송
  • 전용 vs 공유
  • 읽기전용 vs 수정 가능

이런 각각의 특성들에 대해서 알아볼 것이고.

 

OS가 mass storage를 어떻게 관리하는지도 알아볼 것이다.

 

Mass storage와 관련된 OS의 주 목적은 다음과 같다.

  • Mass storage를 이용할 때 최대한 단순한 형태로 이용할 수 있도록 해주는 것
  • 최대한 I.O를 최적화해서데이터를 빨리 가져올 수 있게 해주는 것

 


◆ Hard Disk Drive

  • HDD는 platter(플래터; 접시) 형태의 디스크가 중첩되어있는 형태로 구성되어 있다.
    각 플래터 위에 데이터가 저장되어 있음.
  • 플래터마다 read-write head가 있음. 이 헤드를 플래터의 어떤 공간으로 움직여서 데이터를 읽는 것.

 

 

그림을 보자.

  • 플래터마다 read-write head가 하나씩 존재함.
  • 각 헤드는 모든 헤드를 한꺼번에 이동시키는 disk arm에 부착되어 있음
  • 플래터는 논리적으로 track이라는 단위로 나누어져있음. 원 한바퀴를 의미함.
  • 각 트랙은 sector라는 단위로 이루어져 있음. 각 원 안에서 여러 부분으로 나누어진 게 섹터.
    - 섹터 사이즈는 원래 512byte였으나 요즘은 4KB로 쓰곤 함.
  • 같은 위치의 트랙을 모은 것을 cylinder 라고 함.

 

< 특징 >

  • 떨어지면 플래터에 흠집이 나거나 헤드가 부서질 수 있기에 충격에 약함
  • overwrite 가능

 

ex)

하드디스크에서 정보를 과정에 대한 읽는 예시를 보자.

현재 BLUE 부분을 읽은 상태. 이번에는 RED 부분을 읽고 싶다고 하자.

이때 과정은 다음과 같다.

  1. 디스크 암이 뒤로 물러서서 read-write 헤드가 RED가 위치한 실린더로 옮겨도록 함
  2. 플래터가 회전해서 RED 섹터가 read-write 헤드 위치까지 이동함.
  3. 회전하면서 RED 섹터를 읽어나감.

 


◆ Hard Disk Drive: Performance

 

1) HDD의 성능은 어떻게 평가할까?

■ 데이터 전송 속도 (transfer rate)

HDD와 컴퓨터 사이의 데이터 전송 속도.

- 이론적으로 6Gb/s

Gb기가 바이트가 아니라 기가 비트. (기가 바이트는 GB)
Gb를 GB 단위로 변환하려면 나누기 8하면 됨

 

 Positioning time (Random-Access Time)

어떤 데이터를 읽기 위해 disk arm을 특정 실린더로 움직이고, 헤드가 특정 섹터에 도달하기까지의 시간

 

- Seek time: 암을 원하는 실린더(헤드가 요청한 섹터가 있는 트랙)로 이동하는 데 필요한 시간. 보통 3ms~12ms 소요

- Rotational latency: 원하는 섹터가 read-write 헤드 위치까지 회전하는 데 걸리는 지연 시간. 초당 60~250회정도 회전

 

데이터에 접근하기까지의 시간 Positioning time = Seek time + Rotational latency 

 

 

2) 그러면 실제로 하드웨어가 데이터를 처리할 때 걸리는 시간은 어떻게 계산할까?

  • 평균 I/O 시간 은 다음 3가지를 더한 것이다.
    ① Positioning time (=Access time)
    = Seek time + Rotational latency 
    ② Transfer time
    = 전송량/전송속도(transfer rate)

    ③ Controller overhead
    : 디바이스 컨트롤러가 처리할 때 발생하는 오버헤드

 

ex)

7200RPM 디스크로부터 4KB 블록을 전송하고자 한다. (1분당 7200회 회전할 수 있다는 뜻)

  • Seek time : 5ms
  • Transfer rate : 1Gb/s
  • Controller overhead : 0.1ms

이때 평균 I/O 시간을 구해보자.

 

 

ⓛ Access time

  • Seek time = 5ms
  • Rotational latency = 180도 도는 데 걸리는 시간.
    1분에 7200회 회전하므로 1초에는 120회. (1/120) 초에 1회이므로, (1/240) 초에 180도를 돌 것.
    따라서 1s/240 ≒  0.00417 s = 4.17 ms

② Transfer time

  • Transfer time = 4KB/(1Gb/s) = 4KB/(1024²KB/8s) =  32s /(1024²) ≒ 0.000031s = 0.031ms

③ Controller overhead

  • Controller overhead = 0.1ms

 

∴ ⓛ, ②, ③ 을 다 더한 평균 I/O 시간 = 5ms + 4.17ms + 0.031ms + 0.1ms = 9.301ms

 


◆ Nonvolatile Memory Disk

전원이 공급되지 않아도 기록된 데이터가 휘발되지 않고 보존되는 메모리 

 

Nonvolatile Memory(NVM; 비휘발성 메모리)는 말 그대로 전원이 공급되지 않아도 기록된 데이터가 휘발되지 않고 보존되는 메모리이다. 대표적으로 ROM이 있다.

 

ROM은 Read-Only Memory의 줄임말로, 기본적으로는 Read Only로 구현되어 읽을 수만 있고 쓸 수는 없다.

그래서 보통 부팅시스템 처럼, 컴퓨터 시스템에 필수적이나 바뀔 일이 거의 없는 경우에 ROM에 저장한다.

 

그런데 특수하게 수정이나 작성이 가능한 ROM도 존재한다.

ROM은 다시 쓰고 지울 수 있는 방식에 따라 MASK ROM, PROM, EPROM 등으로 구분됨. 

  • MASK ROM
    - 가장 기본적인 ROM
    - 제조 과정에서 미리 내용을 기록해 놓은 메모리
    - 사용자가 내용 수정 불가
  • PROM(Programmable ROM)
    - 사용자가 한번만 기록 가능
  • EPROM(Erasable PROM)
    - 데이터 삭제 가능
  • EEPROM(Electrically Erasable PROM)
    - 전기적인 기능으로 데이터 삭제 가능
    - 현재 ROM이라고 하면 대부분 EEPROM을 뜻함.

 

ROM을 활용한 NVM이 또 있는데, 바로 Flash Memory이다.

  • Flash Memory: EEPROM으로 구현됨. Read Only가 아니라 썼다 지웠다 할 수 있는 ROM.

플래시 메모리는 RAM처럼 메모리에 데이터를 쓸 수 있으며, ROM처럼 전원 공급 없이도 데이터를 보존한다.

대표적으로 SSD(Solid-State DIsk)USB 드라이브에 사용된다.

- SSD는 Flash Memory이긴 한데, 하드디스크처럼 디스크 드라이브 형태로 쓸 수 있도록 컨테이너를 만들어놓은 것임.

 


◆ HDD vs NVM

하드디스크와 NVM을 비교해보자.

 

 

1. NVM이 HDD보다 Reliable하고 속도가 더 빠름

  • HDD는 아무리 빠르게 처리하더라도 물리적으로 암이 움직이고 플레터가 돌아가는 과정이 필요해서 느림
    또 플래터에 흠집이 나거나 헤드가 부서지는 등 물리적으로 고장이 잘 남
  • NVM랜덤 Access가 가능해서 비교적 속도가 더 빠름.
    전기적인 방식으로 동작하므로 물리적으로 좀 더 Reliable
 

2. NVM이 HDD보다 훨씬 비싸고, 비교적 용량이 적음


3. NVM은 사용 기간(수명)이 HDD에 비해 짧음.

  • HDD는 overwirte 가능.
  • NVM은 erase before write인데, 한정된 횟수 만큼만 erase할 수 있으므로, 쓸수록 닳아 없어짐.

 


◆ Solid State Disk (SSD)

SSD에 대해 살펴보자.

SSD 안에 Flash Translation Layer(FTL)가 있어서, Read/Write 요청 받으면 logical block address를 실제 physical address바꿔줌.

 

여러 block으로 구성되어있으며, block 안에는 page 단위로 나누어져 있음.

 

 

< 특징 >

  • Erase Before Write: 그냥 덮어쓰는 것(Overwrite)은 안됨. 블락 전체를 erase한 후 데이터를 써야 한다.
    • Erase 단위는 block이고, Read/Write 단위는 page이다. 페이지 단위로 erase하는 것은 불가능함

 


◆ NAND Flash Controller

페이지 단위로 erase를 못하고 항상 블록 단위로 해야 erase한 후 write해야 한다면, 유효한 데이터와 유효하지 않은 데이터가 혼합되어 삭제될 것임.

 

이를 쫌 더 잘 관리하고자 등장한 게 NAND Flash Controller.

  • 플래시 변환 계층(FTL)을 유지 관리함
    - 논리 block이 포함된 physical 페이지를 매핑함
    - valid한 논리 block을 추적함

  • 가비지 컬렉션(GC)을 구현 → invalid 페이지 공간의 메모리를 해제함.
  • GC를 위한 작업 공간을 제공하기 위해 overprovisioning을 할당함
  • 모든 셀에 동일하게 쓰기 위한 wear leveling을 제공함.

 


◆ HDD Scheduling

프로세스가 I/O 기능이 필요한 경우, OS에 시스템 콜을 보낸다.

 

I/O request는 다음 정보들을 포함한다.

  • 요청할 operation이 읽기인지, 쓰기인지
  • 내가 열고 싶은 파일이 뭔지
  • 데이터 읽어와서 메모리에 올릴텐데, 어떤 메모리에 올릴건지
  • 얼마나 많은 데이터를 전송할건지

 

디스크 드라이브 컨트롤러는 작은 버퍼를 갖고 있어서, I/O 요청을 관리할 수 있는 queue로 쓴다.

  • 디스크 드라이브가 idle 상태인 경우, request는 즉시 서비스될 것임
  • 반면 드라이브가 busy 상태인 경우, request는 queue에 넣어짐

 

 

과거에는 OS가 queue 관리나 head scheduling을 해줬다.

현재는 디스크 내부적으로 관리되거나, 디스크 controller가 관리해줌.

 

그래서 OS 논리 block 주소를 제공하거나, request 정렬을 핸들링 해주는 정도만 하면 됨.

 

 

디스크 I/O request들을 스케쥴링하기 위한 몇 알고리즘이 존재함.

스케쥴링의 목표는 Seek Time의 최소화. arm 움직이는 시간을 최소화하고자 함.

이제 몇 가지 스케쥴링 알고리즘을 살펴보고 평가해보자.

  • FCFS 스케쥴링
  • SCAN 스케쥴링
    • C-SCAN 스케쥴링

 

 

※ 알고리즘을 평가 방법

: 큐에 주어진 실린더의 넘버들(0~199)을 접근하는 동안, 헤드가 움직인 총 거리를 기준으로 각 알고리즘의 성능이 어떤지 평가할 것임.

 

우리는 다음 상황을 바탕으로 평가를 진행할 것.

  • Queue : 98, 183, 37, 122, 14, 124, 65, 67
  • Head Starts at 53
 

 


FCFS Scheduling

요청 받은 순서대로 서비스해줌

 

queue에 요청받은 순서대로 실린더 번호를 넣고, 차례대로 처리함.

 

  • 가장 공평함
  • 일반적으로 성능은 그리 좋지 않음

 

엄청 왔다갔다 함.

 

헤드는 총 640 실린더를 움직임.

 


SCAN Scheduling

가는 방향의 끝까지 가면서 탐색한 후, 돌아서 반대 방향의 끝까지 가며 탐색하는 방식 (양방향)

 

엘리베이터처럼 움직이는 알고리즘.

 

  • 기본적인 SCAN 알고리즘은 아래와 같이 양방향으로 움직임.
  • 가는 방향의 끝까지 가면서 탐색한 후, 돌아서 반대 방향의 끝까지 가며 탐색하는 방식
  • 특정 실린더에 대해서는 wait time이 길어질 수 있음. 
    → Circular SCAN으로 보완

183번 요청은 일찍 들어온 거에 비해서 wait time이 너무 길어짐.

 

헤드는 총  640 실린더를 움직임.

 


C- SCAN Scheduling

가는 방향의 끝에 도달하면 처음으로 돌아가서 다시 원래 방향으로 쭉 탐색하는 방식. (단방향)

 

  • Circular SCAN 알고리즘은 단방향으로 움직임.
  • 가는 방향의 끝에 도달하면 처음(반대쪽 끝)으로 돌아가서 다시 원래 방향으로 쭉 탐색하는 방식.
    (돌아가는 동안에는 탐색 안하고 이동만 함)
    SCAN에 비해서는 일정한 wait time을 제공함

 

SCAN에서의 183번처럼 엄청나게 오래 기다리는 실린더는 없음 ㅇㅇ

 


◆ Error Detection and Correction

 

Error detection : Drive에 문제가 생겼는지 확인하는 것을 의미함. 

  • 만약 에러가 감지되었다면 작동을 중지할 수 있음.
  • 보통 에러 감지는 parity bit를 통해서 수행됨.

 

Parity bit: Checksum 방식의 일종으로, 데이터의 비트 개수를 세는 것. 에러 감지 목적

  • 데이터 비트가 짝수개인 경우 Parity = 0
  • 데이터 비트가 홀수개인 경우 Parity = 1
  • ex)
    00010000 에서 Parity = 1
    00111100 에서 Parity = 0

 

ECC(Error-Correction Code)는 오류를 감지할 뿐만 아니라 일부 오류를 수정할 수 있다.
  • soft한 오류는 수정 가능하지만, hard한 오류는 감지할 뿐 수정할 수는 없다.

 


◆ Storage Device Management

어떻게 저장 장치를 관리하는지에 관한 내용. 어떻게 포멧팅할지.

 

두 종류가 있음.

  • Low-level Formatting (= Physical Formatting)
    : 디스크 컨트롤러가 read/write할 수 있도록 디스크를 섹터로 분할하는 것.
    • 각 섹터는 헤더 정보와 데이터, ECC를 저장할 수 있다. (컨트롤러가 사용하는 정보들)
    • 일반적으로 한 섹터는 512바이트임. (임의로 설정 가능함)
  • Logical Formatting (= making a file system)
    : 디스크를 하나 이상의 실린더 그룹으로 파티션해서, 각 파티션을 별도의 논리 디스크로써 처리하는 것.
    • 디스크를 사용하여 파일을 보관하려면 운영 체제가 디스크에 OS자체 데이터 구조를 기록해야 한다.
    • 파일 시스템을 만드는 방식임.
    • 효율성을 높이기 위해 대부분의 파일 시스템은 block을 cluster로 그룹화한다.
      • 디스크 I/Oblock 단위로 수행됨
      • 파일 I/Ocluster 단위로 수행됨

 


◆ Boot Block

부팅할 때 중요한 정보들이 들어있는 block

 

이번에는 컴퓨터 시스템 부팅시 저장 장치에 접근하는 과정에 대해 알아볼 것임

Disk storage의 앞부분에는 주로 boot block이 위치하고 있다.

 

  • OS는 디스크의 루트 파티션(파일 시스템 최상위)에 포함되어 있으며, 이는 부팅 시 마운트된다.
    (파일 시스템을 마운트하면 시스템과 해당 사용자가 그 파일 시스템을 사용할 수 있게 됨)
  • 마운트 시 파일 시스템의 일관성이 체크됨
    • 모든 메타데이터가 올바른가?
      - 그렇지 않으면 수정하고 다시 시도함
      - "예"인 경우 마운트 테이블에 추가하고 액세스 허용

 

 

 

  • MBR (master boot record)
    : 하드 디스크의 첫 번째 논리 블록 또는 NVM 장치의 첫 번째 페이지.
    - 부트스트랩 로더를 실행시킴. 
    어떤 파티션이 부트되어야 하는지에 대한 표시(어느 파티션에 부트스트랩 로더가 있는지)가 되어 있다.
    - 부트 코드와 파티션 테이블이 들어 있다.
  • 부트스트랩 로더 (bootstrap loader)
    : 컴퓨터의 전원을 켜거나 재부팅할 때, 컴퓨터가 실행을 시작하기 위해 실행되는 초기 프로그램
    • 부트스트랩 로더는 NVM 플래시 메모리의 펌웨어에 저장되어있다.
      - 이 코드는 디스크 디바이스 컨트롤러에게 부트스트랩 프로그램을 메모리에 올리도록 지시함.
      코드를 실행하면 MBR에 접근하여 부트 파티션을 알아내고, 부트 파티션에 접근해서 완전한 부트스트랩 프로그램 실행한다.
    • 완전한 부트스트랩 프로그램은 장치의 고정된 위치인 부트 파티션에 있는 '부트 블록'에 저장되어 있다.

 

 

구체적인 부팅 과정을 보자.

 

  1. 마더보드와 디스크는 연결되어 있으며, 마더보드 뒤에 조그만 NVM 메모리가 따로 있음(펌웨어).
    컴퓨터 전원을 켜면, 펌웨어안에 저장된 BIOS 코드가 실행됨. (부팅시 ASUS 이런거 뜨는 거)
  2. BIOS가 디스크에 있는 MBR에 접근하여 부트 코드를 호출함.
  3. 부트 코드는 MBR의 파티션 테이블을 참조하여 부트 로더의 위치를 알아내 실행하고, 이를 통해 (부트 파티션의 부트 블록에 위치한) 부트스트랩 프로그램을 실행함
  4. 부트스트랩 프로그램을 통해 커널을 메모리에 올려서 실행함.
    그러면 커널이 루트 파일 시스템 마운트함. (루트 파티션에 OS가 포함되어 있음)

 

 

 

 


◆ Swap-Space Management

페이징 할 때, 메모리에 지금 당장 필요하지 않은 페이지는 swap-out 해서 (DRAM 으로부터) 보조기억장치swap space로 옮겼었다.

 

OS는 swap space 관리도 해준다.

  • swap 공간은 DRAM보다 느린 보조 기억장치이므로, 성능 최적화가 중요하다. 
  • 보통 여러 개의 swap space가 존재함
  • Swap space에 partition을 따로 둬서 사용할 수도 있고, file 형태로 사용할 수도 있음.

 

 

가볍게 다음 예시를 보자.

그림은 Linux 시스템에서 사용하는, 스왑을 위한 데이터 구조를 나타낸 것이다.

 

Swap space page slot swap map으로 이루어져 있다.

  • Page slot들은 swap out된 페이지들을 담고 있는 영역.
  • Swap map은 페이지가 실제로 사용되었는지 아닌지에 대한 개수를 표현한 것

 

Swap map의 카운터 값이 0이면 사용 가능하고, 0보다 큰 값은 스왑된 페이지들이 사용되고 있는 것을 나타낸다

  • 아무도 페이지를 사용하고 있지 않으면 0
  • 하나의 프로세스가 사용하고 있으면 1
  • 페이지가 여러 프로세스 사이에서 share되는 경우도 있음. 3은 세 개의 페이지가 공유하고 있는 것.

 


◆ Storage Attachment

디스크 접근 방식으로 다음 세 가지 방법이 있다.

  • host-attached: 컴퓨터의 I/O 포트를 통해서 직접 연결
  • network-attached: RPC(원격 프로시저 콜)를 통해 연결
  • 클라우드를 통해 연결

 

그 중 network-attached 방식으로 접근하는 저장장치를 NAS 라고 부름.

 

NAS (Network-Attached Storage)

원격의 파일 스토리지를 LAN/WAN 등의 인터넷으로 제공해주는 것. (원격 파일 시스템에 연결해서 쓰는 느낌)

 

RPC를 사용함.

연결된 컴퓨터가 NAS로 정보를 요구하면, NAS에서는 스스로 해당 요구를 수행하고 결과를 IP로 전해줌.

 

  • 별도의 file 시스템이 존재 → NFS, CIFS, etc.
      운영체제가 무언가 따로 처리할 것도 없고 한 번 잘 세팅해두면 클라이언트 입장에서도 잘 쓸 수 있다.
  • File 단위로 접근
  • IP 기반으로 동작
  • 중/소규모 회사나 학교에서 많이 사용
    → 용도 : 시크릿한 데이터를 쓰려고 사용함.
    어둠의 경로로 다운받은 비싼 소프트웨어 공유할 때, 이 방법 쓰면 여러 클라이언트가 공유해서 사용할 수 있음

 


RAID (Redundant Array of Inexpensive Disks)

저렴한 여러개의 DISK들을 Array로 묶어서 사용하는 방식. → 성능 또는 안전성 증진

 

여러개의 디스크를 어떻게 하면 효과적으로 쓸 수 있는지에 관한 내용임.

  • RAID: 저렴한 DISK를 여러 개 묶는 Array.
  • Redundant: 불필요하게 남는 디스크를 더 써서 성능을 좋게 하거나 안전성을 증진한다는 의미임.
    (안전성이란 고장이 나더라도 다른 데서 꺼내쓸 수 있도록 하는 것. 백업 처럼.)

 

  • 왼쪽 그림: 독립적인 DISK 4개가 있고, 각각 100개의 블락이 존재한다고 생각
  • 오른쪽 그림(RAID 사용): 4개의 DISK가 하나인 것처럼 동작함. 한 DISK에 400개의 블락이 존재한다고 생각.
    • 여기서 나오는 개념이 striping.
      : 디스크에 블락을 분배할 때 여러 디스크를 번갈아가면서 분배하는 것.
      - 0은 1번, 1은 2번, 2는 3번, 3은 4번, 5는 0번 디스크…
      → 번갈아가면서 접근 가능하게 해서 퍼포먼스를 향상시킴.
    • 이와 대비되는 개념이 그냥 순차적으로 분배하는 방법.
      - 0~99는 1번 디스크, 100~199는 2번 디스크...

 

 

RAID 스킴은 Redundant한 데이터를 저장하여, 성능 또는 안전성을 증진함.

 

이를 구현하는 몇 가지 방식이 있다.

    • RAID 0 (non-redundant striping)
      : 퍼포먼스를 높이기 위해 스트라이핑(디스크에 블락을 분배할 때 번갈아가면서 분배하는 것)을 제공하는 방식.
      - 한 데이터는 한 곳에만 저장되므로 redundancy(불필요한 중복)는 없음
      - 성능 향상
    • RAID 1 (mirroring)
      : 미러링(한 데이터를 다른 디스크에 자동으로 복사)을 제공하는 방식.  

      - 하나가 고장나면 다른 디스크에서 접근해서 가져올 수 있음. 
      - 안전성 증진
    • RAID 0+1 (mirrored stripes) or RAID 1+0 (striped mirrors)   
      : 스트라이핑 및 미러링을 둘다 제공하는데, 적용하는 순서에 따라 기능이 달라짐

      • RAID 0+1 : 스트라이핑 먼저 한 다음에 미러링. 
        한꺼번에 스트라이프로 묶임. 따라서 한 디스크가 고장나면 전체 스트라이프를 복구해야 한다.
      • RAID 1+0 : 미러링 먼저 적용한 다음에 스트라이핑. 
        미러끼리 묶임. 미러링으로 묶인 디스크를 통해서 손실된 데이터만을 복원할 수 있음


    • RAID 4, 5, 6
      • RAID 4: parity 저장을 위한 디스크를 추가로 두는 것
        • 디스크 5개가 있으면 4개는 데이터, 1개는 이들의 parity값을 저장
        • 디스크들의 특정 블록에서의 비트들을 합쳐서, 짝수면 parity = 0, 홀수면 parity = 1 이런 식으로 추가 디스크 블록에 저장함.
        • 어떤 디스크 블록 하나에 문제가 생겼는지를 parity 계산을 통해서 알 수 있다.
      • RAID 5: parity가 하나의 디스크가 아닌 여러 디스크에 들어가는 것.
        • RAID 4의 경우에는 parity 디스크가 망가지면 더 이상 못 읽으니까 이를 보완한 것.
      • RAID 6: parity랑 비슷한 값인 Q라는 값을 추가로 저장해서 좀 더 안전하게 하는 거
        • parity는 짝수 개의 비트가 동시에 바뀌면 틀렸는지 알 수 없다는 한계가 있음. 따라서 Q도 저장.

 

'CS > 운영체제' 카테고리의 다른 글

13. File-System Interface  (0) 2023.12.06
12. I/O System  (0) 2023.12.06
10. Virtual Memory  (0) 2023.12.04
9. Main Memory  (0) 2023.12.04
8. Deadlocks  (0) 2023.10.16
Comments