[OS] - Storage

오동훈·2021년 6월 5일
0

Operating System

목록 보기
14/16

1. Hard Disk

하드디스크는 아래와 같이 구성되어 있다.

1. Disk가 Delay 되는 이유

  1. Rotational Delay
    • 헤드가 섹터를 찾는 시간
  2. Seek Delay
    • 헤드의 ARM이 Track을 찾는 시간
  3. Transfer time
    • Track가 섹터를 찾은 후 읽어 들이는 시간

1번과 2번은 기계적인 부분이라 속도 측면에서 매우 느리지만, 3번과 같은 경우에는 전기적인 신호로 작동되는 부분이라 속도가 빠르다.

  • Track skew - 일부로 번호 차이를 둬 이격시켜 놓는 이유
    track과 sector를 찾는 시간에 맞게 위치에 차이를 둬, 맞아 떨어지게끔 하기 위함이다.

2. 속도 계산

TI/O = Tseek + Trotation + Ttransfer
Assume we are transferring 4096 bytes

--Calculation
CheetahTI/O = 4 ms + 1 / (15000 RPM / 60 s/M / 1000 ms/s) / 2 + (4096 B / 125 MB/s * 1000 ms/s / 220 MB/B)
TI/O = 4 ms + 2ms + 0.03125 ms ≈ 6 ms
BarracudaTI/O = 9 ms + 1 / (7200 RPM / 60 s/M / 1000 ms/s) / 2 + (4096 B / 105 MB/s * 1000 ms/s / 220 MB/B)
TI/O = 9 ms + 4.17 ms + 0.0372 ms ≈ 13.2 ms

Random으로 하게되면 속도가 매우 떨어짐

3. Caching

Write Through Caching & Write Back Cashing 두가지 방법이 존재한다.

          Write Through CachingWrite Back Cashing
장점캐시와 메모리에 업데이트를 같이 하여,
데이터 일관성을 유지할 수 있어서 안정적이다.
Write Through보다 훨씬 빠르다.
단점속도가 느린 주기억장치 또는 보조기억장치에 데이터를 기록할 때, CPU가 대기하는 시간이 필요하기 때문에 성능이 떨어진다.속도가 빠르지만 캐시에 업데이트 하고 메모리에는 바로 업데이트를 하지 않기 때문에, 캐시와 메모리가 서로 값이 다른 경우가 발생할 때가 있다.
특징데이터 로스가 발생하면 안되는 상황에서는 Write Through를 사용하는 것이 좋다.빠른 서비스를 요하는 상황에서는 Write Back을 사용하는 것이 좋다.

4. Disk Scheduling

  1. FCFS - '이거보다는 좋아야 한다' 라는 기준

  2. SSTF - SeekTime이 Optimal, but starvation 문제 발생 가능

  3. SCAN - starvation 문제 X, 끝에 존재하는 애들의 시간이 오래걸림

  4. C-SCAN - SCAN을 개선한 것, 한쪽 방향으로만 service 함

  5. C-LOOK - 애는 끝까지 안가고 있는애 위치까지 간 후, 다시 돌아와서 작동

2. RAID

RAID란 Redundant Array of Independent Disk (독립된 디스크의 복수 배열) 혹은 Redundant Array of Inexpensive Disk (저렴한 디스크의 복수 배열)의 약자입니다.
말 그대로 RAID는 여러개의 디스크를 묶어 하나의 디스크처럼 사용하는 기술입니다.

  • 디스크는 10개 있지만 1개처럼 보이게 하는것을 'Transparent'라고 합니다.

Chunk size
Chunk size가 작으면 병렬성이 높아지고, Chunk size가 크면 Seek Time을 아낄 수 있음.
일반적인 시스템에서는 64KB를 사용

1. 기대 효과

  1. 대용량의 단일 볼륨을 사용하는 효과
  2. 디스크 I/O 병렬화로 인한 성능 향상(RAID 0, RAID 5, RAID 6 등)
  3. 데이터 복제로 인한 안정성 향상(RAID 1 등)

RAID는 컴퓨터를 구성하는 여러 부품 중 기계적인 특성 때문에 상대적으로 속도가 느린 하드디스크를 보완하기 위해 만든 기술입니다.

RAID를 구성하는 디스크의 개수가 같아도, RAID의 구성 방식에 따라 성능, 용량이 바뀌게 됩니다.
이 구성 방식을 RAID Level 이라고 부릅니다.

2. RAID Level

1. RAID 0 : Striping

RAID를 구성하는 모든 디스크에 데이터를 분할하여 저장합니다.

전체 디스크를 모두 동시에 사용하기 때문에 성능은 단일 디스크 성능의 N배 입니다.
마찬가지로 용량 역시 단일 디스크의 용량의 N배가 됩니다.

하지만 하나의 디스크라도 문제가 발생 할 경우 전체 RAID가 깨지는 불상사가 발생합니다.

즉, 안정성은 1/N으로 줄어든다 할 수 있습니다.

성능과 용량은 최대한으로 사용하는 대신, 안정성은 극악이라 할 수 있습니다.

Capacity : N
Reliability : 0
Sequence read and write : N S
Random read and write : N
R

2. RAID 1 : Mirroring

RAID 1 은 모든 디스크에 데이터를 복제하여 기록합니다.

즉, 동일한 데이터를 N개로 복제하여 각 디스크에 저장합니다.

때문에 여러 개의 디스크로 RAID를 구성해도, 실제 사용 가능한 용량은 단일 디스크의 용량과 동일합니다.

Write시엔 데이터를 복제하여 기록하기 때문에, RAID 1의 최대 강점은 안정성이 높다는 것입니다.
극단적으로, N-1개의 디스크가 고장나도 데이터 사용이 가능합니다.

안정성이 중요한 시스템에서 사용 할 수 있겠으나, 비용 문제로 인해 거의 사용하지 않습니다.

Capacity : N/2
Reliability : 1개가 망가져도 사용 가능
Sequence read : (N / 2) S
Sequence write : (N / 2)
S
Random read : N R
Random write : (N / 2)
R -> 두번을 써야 되므로

3. RAID 4

Block 단위로 striping을 하고, error correction을 위해 패리티 디스크를 1개 사용합니다.
용량 및 성능이 단일 디스크 대비 (N-1)배 증가합니다.

그리고 1개의 디스크 에러 시 복구 가능합니다. (2개 이상의 디스크 에러 시 복구 불가능)
Block 단위로 striping 하는 것은 RAID 5, RAID 6와 동일하지만, 패리티 코드를 동일한 디스크에 저장하기 때문에 패리티 디스크의 사용량이 높아 해당 디스크의 수명이 줄어든다고 합니다.

RAID 4의 단점을 개선시킨 것이 RAID 5 입니다.

4. RAID 5

제일 사용 빈도가 높은 RAID Level 입니다.

Block 단위로 striping을 하고, error correction을 위해 패리티를 1개의 디스크에 저장하는데, 패리티 저장 하는 디스크를 고정하지 않고, 매 번 다른 디스크에 저장합니다.

용량 및 성능이 단일 디스크 대비 (N-1)배 증가합니다.

최소 3개의 디스크로 구성 가능하고, 1개의 디스크 에러 시 복구 가능합니다.(2개 이상의 디스크 에러 시 복구 불가능)
RAID 0에서 성능, 용량을 조금 줄이는 대신 안정성을 높인 RAID Level이라 보시면 됩니다.

5. RAID 6

RAID 5에서 성능, 용량을 좀 더 줄이고, 안정성을 좀 더 높인 RAID Level 입니다.

Block 단위로 striping을 하고, error correction을 위해 패리티를 2개의 디스크에 저장하는데, 패리티 저장하는 디스크를 고정하지 않고, 매 번 다른 디스크에 저장합니다.
용량 및 성능이 단일 디스크 대비 (N-2)배 증가합니다.

최소 4개의 디스크로 구성 가능하고, 2개의 디스크 에러 시 복구 가능합니다.(3개 이상의 디스크 에러 시 복구 불가능)

RAID 5에서 성능, 용량을 조금 줄이는 대신 안정성을 높인 RAID Level이라 보시면 됩니다.

3. SSD

  • 기계적인 부분이 없어 물리적인 손상 문제를 걱정 할 필요가 없다.
  • 전력을 아낄 수 있다. (기계 Part가 없어서)
  • HHD보다 빠름

1. Challenges with NAND Flash

1. Write amplicaion

수정하기 위해서는 지우고 다시 기록해야 된다는 특징을 가지고 있습니다.
그렇게 되면, 속도가 느려지는 경향이 있어 아예 다른 페이지에 새로 작성하고, 기존에 작성했던 페이지는 invalid라고 표기하고 넘어갑니다.
그렇게 되면 페이지 내에 남아있는 용량이 많이 남게 되는데fragment 문제가 나타날 수 있습니다.

2. Wear Leveling

지우게 되면 고압의 전류를 가해 지우게 되는데, 이렇게 높은 전압을 가해 지우게 되면 저항도 늘게 되는데, 거기를 read & write 하는데 더 높은 전력을 필요로 합니다.
따라서, 이 작업을 몇 번 하다보면 exccess 하지 못하는 상황에 도달하게 되고,
그래서 한군데를 집중적으로 사용하다 보면 수명이 빨리 닳으니 전체적으로 닳게 해주는 방법을 의미합니다.

이 방법에는 Dynamic과 Static

2. SSD Controllers

3. Flavors of NAND Flash Memory

profile
삽질의 기록들🐥

0개의 댓글