Post

21. HDD

21. HDD

RAID 0

Block-level striping (without parity or mirroring)

→ Space efficiency: 1

→ No fault tolerance. Block 하나 망가지면 망함

→ High bandwidth


RAID 1: Mirroring & Duplexing

Mirroring (without parity or striping)

→ 그냥 2개씩 만들어서 하나 망가지면 다른 하나 쓰면 되는거 아님? Write할때는 2번 쓰고, Read할 때는 같은지 확인하고.

→ Space efficiency: 1/2

→ Survive a single disk failure


RAID 2: Hamming Code ECC

Bit level striping. 하나의 기본 block이 여러개의 disk에 나눠져 있음. 따라서 read할때는 한번에 4개 다 읽어야함. 그리고 그 비트가 적절한지 다른 곳에 저장된 hamming code ECC를 확인하여 체크한다. 1-비트 에러정도는 고칠 수 있다.

하나의 노드가 죽어도 괜찮다.

다만 오버헤드가 발생하며, write 시에는 4개의 디스크 모두에 써야하기 때문에 병렬성이 떨어지고 power를 많이 먹는다.


RAID3

ECC보다는 parity지.

Bit-level striping, but parity!

각 비트를 XOR한 값들을 따로 저장한다.

single node failure에서 살아남을 수 있다.

→ XOR의 특성에 따라, 날아간 비트를 뺴고 XOR을 하면 유실된 해당 비트의 값이 나온다.

ex) XOR 0010 = 1. 2nd bit lost → 0_10, 1

XOR 0101 = 0


RAID4

RAID3이랑 비슷한데, block-level striping.

이제 개별 block만 건드릴 수 있으므로 병렬성이 향상됨.

그럼 어떻게 B1에만 write할 수 있나요?

NEW B1 (+) OLD B1 (+) Old B parity = New B Parity

Parity의 특성상, 모두 XOR되어있음. 즉, 비트 하나가 ‘바뀌었는지’ 여부를 파악하여 해당 여부와 기존 Parity를 XOR 시키면 됨.

  • Space efficiency: (n-1)/n
  • Bottleneck
    • Parity disk is bottleneck for traffic. (bandwidth가 4배 필요함)
    • write할 때 한번 읽어서 parity를 계산해야한다. (should read)

RAID 5

Distribute Parity → bottleneck 해소


RAID 6

make something cool 🙂

This post is licensed under CC BY 4.0 by the author.