혼공컴운

[혼공컴운] 7장. 보조기억장치

게으른 the lazy 2024. 7. 22. 01:15

https://www.backblaze.com/blog/ssd-vs-hdd-future-of-storage/

7. 보조기억장치

  • 보조기억장치는 딱히 볼 게 있을까? 싶었다.
  • 하지만 HDD와 플래시를 본다고 하니 급 궁금해졌다.
  • RAID도 본다고 하니 더 궁금해졌다.
  • 레이드 보스와의 연관성은 모르겠다.

7.1 다양한 보조기억장치

  • 내가 9살 쯤 학교에서 처음 만졌던 컴퓨터는 보조기억장치가 없었다.
  • 그냥 누르니까 뭔가 나오는 신기한 장치였다.
  • 대충 이렇게 생겼었다.

출처: https://uxdesign.cc/what-i-learned-from-a-30-year-old-video-game-console-9eafa9abf9da

  • 컴퓨터 학원에서 만졌던 컴퓨터는 5.25인치 플로피 디스크를 넣을 수 있었다.
  • 디스크를 넣어야 MS-DOS가 구동되었던 걸로 기억한다.
  • 왜 이렇게 불편할까, 영구 저장 가능한 저장장치는 왜 없는걸까, 라고 불편해하고 있었는데,
  • 몇 년 후 정말로 HDD가 달린 컴퓨터가 나왔다.
  • 수 십 MB 정도의 저장용량이었을 것 같다.
  • 30년 전 얘기다. 지금 이 글을 쓰고 있는 PC는 4 TB짜리 HDD가 달려 있다.
  • 아, 물론 OS는 1 TB 짜리 SSD에서 돌아가고 있다.

7.1.1 하드 디스크

  • 대학원에 들어가기 전 학부 연구생을 했다.
  • 당시 맡은 업무는 하드 디스크의 헤드 구동기 시뮬레이션이었다.
  • 하드 디스크의 디스크 암은 스피커에 들어가는 voice coil motor로 움직이는데,
  • 헤드 쪽에 더 작게 움직이는 구동기를 붙이는 과제였다.
  • 누군가는 이렇게 설명했다.
  • 헤드가 디스크 위에 떠서 움직이는 것은, 비행기가 지상 30 cm 위에서 비행하는 것과 같다고.
  • 실제로 요즘 HDD에서 헤드가 떠있는 높이는 5 nm라고 한다.
    • nm 맞다. micron 아니다.
  • 그래서 지문만 묻어도 crash가 일어날 수 있다.
  • 책에서 좀 멀어지는 듯하니 하드웨어 얘기는 여기까지 하자.

  • HDD의 각 디스크는 플래터라고 부른다.
  • 플래터는 트랙으로 나뉘고, 트랙은 섹터로 나뉜다.
    • 트랙은 피자 전체의 치즈 크러스트이고, 섹터는 피자 한 조각의 치즈 크러스트이다.

출처: https://en.wikipedia.org/wiki/Cylinder-head-sector

  • 여러 플래터의 같은 위치의 트랙을 모라서 실린더라고 부른다.
  • 실린더라는 개념이 필요한 이유는?
  • 연속된 정보를 하나의 실린더에 기록하기 때문이다.
  • 그렇게 하면 헤드를 움직이지 않고 정보를 읽을 수 있다! 완전 천재다.

7.1.2 플래시 메모리

  • 10년 전 만 해도 플래시 메모리는 거의 USB 메모리를 뜻했다.
  • 요즘은 개인 PC나 태블릿에도 플래시 메모리가 대세(?)다. 바로 SSD다.
  • 플래시 메모리에서 정보 저장의 가장 작은 단위는 이다.
  • 한 셀에 1비트만 저장할 수 있는 것을 SLC(Single Level Cell) 타입이라 부른다.
  • 2비트면 MLC(Multiple Level Cell), 3비트면 TLC(Triple Level Cell)이다.
  • SLC -> MLC -> TLC로 갈수록
    • 수명이 짧아지고
    • 읽기/쓰기 속도가 느리지만
    • 싸다.

  • 셀이 모인 단위를 페이지, 페이지가 모인 단위를 블록, 블록이 모인 단위를 플레인, 플레인이 모인 단위를 다이라고 부른다.
  • 플래시 메모리에서 읽기/쓰기는 페이지 단위로 이루어진다.
  • 그런데 삭제는 페이지보다 큰 블록 단위로 이루어진다.
  • 왜 그래야만 했을까...

출처: https://www.youtube.com/watch?v=qgIKeaZBlbo

  • 게다가 플래시 메모리는 덮어쓰기가 안된다.
  • 그래서 값을 수정하려면 빈 공간에 써야 한다.
  • 그러면 안 쓰는 쓰레기 값이 생기잖아?
  • 그런데 삭제는 통으로(블록 단위로) 지워야 하네?
  • 그래서 가비지 컬렉션이 이루어진다.
  • 블록을 통채로 다른 블록으로 옮기고 기존 블록을 삭제한다.
  • 다시 한번...

출처: https://www.youtube.com/watch?v=qgIKeaZBlbo


7.2 RAID의 정의와 종류

  • RAID 보스 그런거 아닌 거 같다.
  • RAID라는 단어는 15년 쯤 전에 들어보긴 했는데,
  • HDD 뻑날 때를 대비해서 백업을 만들어두는 것 정도로 알고 있었다.

7.2.1 추가과제: RAID의 종류와 장단점

  • RAID는 Redundant Array of Independent Disks의 약자다.

  • RAID 0부터 RAID 6까지 있다.

  • RAID 0

    • 데이터를 여러 HDD에 분산시켜서 저장한다.
    • 이렇게 분산하여 저장하는 것을 스트라이핑이라고 부른다.
    • 장점: 한번에 동시에 읽으면 읽는게 빠르다.
    • 단점: HDD 하나 뻑나면 (...욕 필터링 중...) 된다.
  • RAID 1

    • 데이터의 복사본을 만든다.
    • 장점: 뻑나도 복구 가능하다.
    • 단점: 용량이 줄어든다.
  • RAID 4

    • 오류 검출, 복구를 위한 정보만 저장하는 HDD를 따로 둔다.
    • 이 정보를 패리티 비트(parity bit)라고 부른다.
    • 장점: 오류 검출 가능
    • 단점: 오류를 복구해준다는 말은 아님
  • RAID 5

    • 패리티 정보를 여러 HDD에 분산해서 저장한다.
    • 장점: 병목 현상이 줄어든다.
    • 단점: 패리티가 날아가면...?
  • RAID 6

    • 패리티 정보를 2개 만든다.
    • 장점: 오류 검출/복구 수단이 2개가 생겼다.
    • 단점: 쓸 게 많아서 느리다.
  • 결론: 이게 동작한다는 게 신기할 정도다. 컴퓨터 만든 사람들 존경함다.