Posts 대용량 저장장치 구조 (Mass-Storage Structure)
Post
Cancel

대용량 저장장치 구조 (Mass-Storage Structure)

Preview Image

공룡책(10판) Chapter 11 요약

HDD, NVM과 같은 대용량 저장장치에 대해 알아보는 단원이다.

개관 _ Overview

  1. 하드 디스크
    • 디스크 암(헤드), 플래터(트랙:섹터, 실린더(트랙의 집합))
    • 분당 회전수(RPM)는 전송 속도와 관련이 있다.
    • 탐색 시간(seek time): 디스크 암이 헤드를 움직여 특정 실린더를 찾아가는 시간
    • 회전 지연시간(rotational latency): 원하는 섹터를 찾아가는데 걸리는 회전 시간
  2. 비휘발성 메모리 장치 _ Nonvolatile Memory Devices
    • SSD(solid-state disk)나 USB 드라이브
    • 탐색, 회전 지연시간이 없어 빠를 수 있고 전력 소비량이 적다.
    • 단위용량당 하드에 비해 가격이 높다. (요즘은?)
    • NAND 반도체는 일부 특성 때문에 자체적인 저장 및 신뢰성 문제를 가진다
      • 섹터와 유사한 ‘페이지’ 단위로 읽고 쓸 수 있지만 데이터를 덮어쓸 수 없다.
      • 덮어쓰기 위해서는, 먼저 NAND 셀을 지워야 하는데 삭제는 여러 페이지로 구성된 ‘블록’ 단위로 이루어지며 읽기 또는 쓰기보다 시간이 더 걸린다.
      • 삭제할 때마다 기능이 열화되며, 약 100000개의 프로그램(삭제주기) 후에 셀은 더이상 데이터를 유지하지 않는다.
      • 쓰기 마모로 인해, 그리고 움직이는 부품이 없기 때문에 NAND NVM 수명은 연 단위가 아니라 DWPD (Drive Writes Per Day)로 측정된다.
  3. 휘발성 메모리 _ Volatile Memory
    • DRAM: 표준 파일 연산 등을 임시로 저장하기 위해 사용한다.


디스크 스케줄링 _ Disk Scheduling

운영체제의 책임 중 하나는 효율적인 하드웨어 사용으로, HDD의 경우 접근 시간 최소화, 전송 대역폭 최대화가 숙제이다. 여기서는 I/O 요청에 대해 처리하려고 할 때, 기계식 플래터 기반 저장장치에 적용되는 디스크 스케줄링의 형태들을 소개한다.

  1. 선입 선처리 스케줄링 (FCFS Scheduling) : 선입 선처리 방식으로 head movement가 효율적이지 않아서 빠른 서비스를 제공할 수 없다.
  2. SCAN 스케줄링 (SCAN Scheduling) : 디스크 암(disk arm)이 양쪽으로 왕복하면서 가는 길에 있는 요청을 처리한다.
  3. C-SCAN 스케줄링 (Circular-SCAN Scheduling) : 한 방향으로만 헤드를 움직이고 다시 원점으로 돌아가 서비스 시작한다.


NVM 스케줄링 _ NVM Scheduling

NVM 장치는 디스크 헤드가 없기에 간단한 FCFS 정책을 사용한다. 무작위 I/O에서 HDD에 비해 처리량 측면에서 많은 이득을 갖는다. 단 쓰기 이득이 읽기 이득보다 적으며, HDD는 장치 수명 동안 성능이 일관되나 NVM 장치는 수명이 될 수록 성능이 떨어지게 된다.


오류 감지 및 수정 _ Error Detection and Correction

메모리, 네트워킹 및 저장장치를 포함하여 필수적으로 이용되며, 오류 감지는 문제가 발생했는지 여부를 결정한다.

  • 패리티 : 고정 길이 워드의 값을 계산, 저장 및 비교하기 위하여 나머지 연산을 수행하는 체크섬의 한 형태
  • 순환 중복 검사(cyclic redundancy check, CRC) : 해시 함수를 사용하여 다중 비트 오류를 감지
  • 오류 수정 코드(error-correction code, ECC) : 문제 감지 및 보정을 수행한다. 읽기, 쓰기 할때 ECC를 계산하여 데이터 손상 여부를 알 수 있고 몇 비트만 손상된 경우 소프트 오류를 보고, 수정불가인 경우는 하드 오류이다.


저장장치 관리 _ Storage Device Management

  • 부트 블록(Boot Block)
    • 전원이 켜지거나 재부팅할 때 실행되는 초기 프로그램, bootstrap
    • 고정된 위치에 있는 부트 블록에 저장된다.


RAID 구조 _ RAID Structure

RAID (Redundant Arrays of Independent Disks) 란 드라이브를 병렬적으로 운영하여 데이터 읽기, 쓰기 성능을 높이고 중복(Redundancy) 정보의 저장으로 데이터 저장의 신뢰성을 높이는 기술이다.

중복으로 신뢰성 향상

고장 사이의 평균 시간 (mean time between failures, MTBF)이 10만 시간이고, 디스크가 100개라면 디스크의 고장은 1000 시간마다, 약 41.66일에 한번 씩 일어난다. 이러한 디스크 오류는 데이터 손실을 야기한다. 이를 막고 복원하기 위해 데이터의 복사본을 저장하는 미러링을 수행한다. MTBF가 10만 시간이라면, 미러드 디스크 시스템의 평균 데이터 분실 시간은

100,0002/(2 * 10) = 500 * 106

즉 57,000년이다. 이렇게 데이터 손실을 줄여 신뢰성을 향상시킨다.

병렬성을 이용한 성능 향상

여러 드라이브를 사용할 경우 데이터 스트라이핑(data striping)을 통하여 전송 비율을 향상할 수 있다. 드라이브에 각 바이트의 비트를 나누어 저장하는데, 이것을 비트 레벨 스트라이핑(bit-level striping) 이라 하여 각 드라이브 i에 각 바이트의 비트 i를 사용한다. 8의 배수로 일반화하여 수 배의 데이터를 같은 시간에 읽을 수 있도록 한다. 꼭 비트 단위일 필요는 없이 블록 단위 스트라이핑 또한 가능하다. 일반적으로는 블록 단위 스트라이핑이 사용된다. 부하 균등화를 통해 액세스 처리량을 높이고 규모가 큰 액세스 응답 시간을 줄인다.

RAID 레벨

레이드 레벨을 살펴 보기전에 기법들을 살펴보면,

  • 미러링 (mirroring): 높은 신뢰성, 허나 모든 디스크에 데이터를 복제하기에 비싸다.
  • 디스크 스트라이핑(disk striping): 두개 이상의 디스크에 병렬성을 기반으로 랜덤하게 액세스하여 성능을 향상시키나 신뢰성과 관련은 없다.
  • 패리티 비트 (parity bit) : 데이터 정합성을 확인하기 위한 비트 (1의 개수로 even, odd)로 이것을 확장하여 checksum, CRC를 구성한다.

이들을 결합하여 RAID 레벨로 분류될 수 있다.

  • RAID 0 : 중복 정보가 없이 스트라이핑만 사용한다.
  • RAID 1 : 미러링 구성이다. 데이터 복제로 실용량 50%만 사용 (디스크 수/2) X 디스크 용량
  • RAID 4 : 메모리-스타일 오류 수정 코드(ECC) 구성, 블록-인터리브 패리티(block-interleaved parity)로 디스크 하나를 패리티에 할당한다. 3개 이상 디스크, (디스크 수 - 1) X 디스크 용량
  • RAID 5 : block-interleaved distributed parity, 패리티를 여러 디스크에 분산하여 저장한다. RAID 4에 비해 패리티 드라이브에 대한 과도한 집중을 막을 수 있다. 3개 이상 디스크, (디스크 수 - 1) X 디스크 용량
  • RAID 6 : P + Q redundancy (P+Q 중복 기법) 추가의 중복 정보를 저장한다. 패리티 비트 대신 에러 교정 코드가 Q를 계산하는데 사용된다. 4개 이상 디스크, (디스크 수 - 2) X 디스크 용량
  • Multidimensional RAID 6 : 다차원 RAID로 2개의 논리 패리티 드라이브를 생성한다. 드라이브를 논리적으로 정렬하여 RAID 6을 구현한다.
  • 기타 : RAID 0 + 1, RAID 1 + 0 을 조합하여 사용

조금은 상식적인 단원..! 이리저리 돌아다니는 사람이면 일단 귀에 익혀두면 무식한 것 감추는데 매우 유용하다.

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

가상 메모리 (Virtual Memory)

보안 (Security)