[운영체제] 11. Mass-Storage Systems

jungizz_·2025년 5월 8일

Operating Systems

목록 보기
11/15
post-thumbnail

ch 11. Mass-Storage Systems

대용량 저장 장치

💡11장 목표

  • 구조
    • HDD, NVM
  • Storage Device Management
  • Scheduling
  • RAID

🔹Structure

대용량 저장 장치는 HDD와 NVM(SSD)로 구성되어있다. HDD가 가장 낮고, 그 위에 SSD, 그 위에 메모리의 계층 구조를 가진다.

(Magnetic tape → HDD → SSD → RAM(주기억장치))

1. HDD

하드 디스크 드라이브

  • 디스크 형태, 초당 60-250회 회전
  • 디스크 암이 가리키는 곳으로 데이터를 접근한다.
  • 데이터를 전송하는 속도 Transfer rate를 가진다. 이는 드라이브와 컴퓨터 간의 데이타 흐름 속도를 나타낸다.
  • Positioning Time 즉, 위치를 지정하는 시간은 아래 두 시간을 합친 것이다.
    • seek time: 디스크 암이 움직이며(디스크 안/바깥 수평 이동) 원하는 sector가 위치한 track을 찾는 것
    • Rotational latency: 디스크 자체가 회전하며 (트랙 회전) 원하는 sector를 찾는 것 ****
      • latency = 1/(RPM/60) = 60/RPM
      • 평균 latency = 1/2latency (운이 좋으면 바로 찾고, 운이 안좋으면 한바퀴 돌아서)

Positioning Time은 데이터 접근 속도에 큰 영향, HDD 성능 평가 지표

Average I/O time

= average accress time + (amout to transfer/transfer rate) + controller overhead

  • 첫째 항: 물리적인 지연 시간, average seek time + average latency
  • 둘째 항: 데이터 이동 시간 (전송 데이터 크기/전송 속도)
  • 셋째 항: CPU(controller) 계산 시간

example: 4KB블록을 7200RPM 디스크에서 전송하는 경우

  • 전송 데이터 크기: 4KB블록
  • 7200RPM
  • average seek time: 5ms
  • transfer rate: 1GB/s
  • controller overhead = 0.1ms

가 주어졌을 때,

  • average latency: 4.17ms = (60s/7200)/2
  • transfer time = 0.031ms

를 계산할 수 있다. 결론적으로
Average I/O time = 9.17ms + 0.031ms + 0.1ms = 9.031ms


2. NVM

비휘발성 메모리(Nonvolatile Memory), SSD(solid-stae disks)

  • 전윈이 꺼져도 내용 유지
  • HDD보다 용량이 적고, 전력이 덜 들고, 속도가 빠름, 단지 더 비쌈
    • HDD의 캐시 용도로 자주 사용
  • 읽기/쓰기 시간이 다르다.
    • 쓰기 시 기존 데이터를 덮어 쓸 수 없으므로 지운 뒤 써야하기 때문
    • 그리고 지우는 횟수가 제한되어 있음, 만약 하루에 5번 write해서 1년 쓸 수 있다면 5DWPD라고 함 (드라이브 수명)

NAND Flash controller algorithms

  • 비휘발성 메모리 장치는 블록들로 관리를 하는데, 각 블록들은 여러 페이지로 구성되어있다.
  • 각 페이지는 유효한지/유효하지 않은 데이터를 가지고 있다.
    • 유효한 데이터 → 사용 중
    • 뮤효한 데이터 → 사용 완료, 이 공간을 쓰려면 기존 데이터 지워야 함
  • 근데 지우려면 페이지 단위로 지울 수 없고, 블록 단위로 지워야한다.
  • 그래서 유효한 데이터를 다른 블록으로 copy해서 몰아버린다음에 지운다. 이것이 Garbage Collection
    • Garbage collection을 위한 공간을 제공하기 위해 overprovisioning(실제 제공 용량보다 큰 용량 예약)을 할당

Volatile Memory

휘발성 메모리, 주기억장치

  • RAM을 사용하여 가상의 디스크 드라이브 생성
  • 속도가 아주 빠른 임시 저장 공간으로 사용

Disk

Attachment

  • CPU에 연결된 메인 버스가 아닌 디스크 전용 I/O 버스를 통해 디스크에 접근

Address Mapping

  • 디스크 드라이브는 큰 1차원 배열의 논리블록으로 주소 지정, 연속적인 공간으로 보임
  • 실제 물리주소는 동그란 disk에 존재 (몇번 트랙의 몇번 섹터인지)

🔹Scheduling

1. HDD Scheduling

OS는 여러 프로세스가 하드디스크에 접근을 요청했을 때, 어떤 프로세스를 먼저 받아줄지 정해야한다. 이 때 주안점은 seek time 줄이기⭐

스케줄링을 통해 디스크 암이 움직이는 경로?를 조정하게 되는 것이라 이걸 효율적으로 움직이게 하는게 중요

프로세스가 하드디스크로의 I/O요청을 보내고, I/O 디바이스 드라이브가 해당 요청 트랙이 디스크의 어디에 있는지를 알아낸다.

1. FCFS

  • 요청이 도착한 순서대로 처리
  • 비효율적인 디스크암 이동, 이동 거리 길어짐

2. SCAN

  • 디스크암이 디스크의 한쪽 끝에서 다른 쪽 끝으로 이동하며 있는 요청 처리
    • 안쪽→바깥쪽→안쪽→…
  • 엘레베이터 알고리즘이라고도 함
  • FCFS보다 이동 거리가 짧다. 하지만 요청이 불균형하거나, 엘베 놓친 것처럼 암이 금방 지나간 곳에 요청이 뒤늦게 발생하면 대기 시간 너무 길어짐 → C-SCAN

C-SCAN

  • 한 방향으로만 스캔, 한쪽 끝에 도달하면 요청을 처리하지 않고 즉시 반대편으로 돌아감

3. SSTF

  • Shortest Seek Time first, 가장 가까운 요청 먼저
  • 일반적으로 사용되는 알고리즘

+) Deadline
하지만 여전히 어떤 알고리즘을 쓰더라도 starvation 문제 발생 (너무 오래 기다림)
-> 그래서 각 요청의 deadline을 지정해서 설정한 시간 안에는 처리되도록 하는 방법을 추가하기도 함


2. NVM Scheduling

물리적 이동 시간(디스크 암, 회전 대기 시간)을 고려할 필요가 없어서 그냥 FCFS로 스케줄링

그래도 최적화를 할 수 있는 여지 존재

  • garbage collection
  • 근처 요청 한꺼번에 처리

🔹Error detection and Correction

메모리, 디스크 등의 오류 감지

  • 패리티 비트
  • 해시 함수

오류 수정

  • 추가적인 오류 수정 코드(ECC)
  • 하지만 ECC가 더 크면 좀 그렇겟지

🔹Storage Device Management

스토리지가 데이터 저장을 효율적으로 하기 위한 프로세스

  • Formatting: 트랙과 섹터를 다시 설정하는 것
    • 디스크를 섹터로 나눠 각각 채우는 것은 low-level(physical) formating
    • 물리적 디스크를 쪼개서 한 파티션을 logical disk처럼 사용하는 것은 logical formating
      • 각 파티션은 한 파일 시스템일 수 있고, 별도의 장치 처럼 취급할 수 있고, ..
  • Root Partition: OS를 포함하는 파티션, 부팅할 때 가장 먼저 마운트
    • OS 로딩을 위한 부트스트랩 로더 프로그램이 부트블록 파티션에 저장이 되어있는 것이다. 즉, 부팅 관련도 하드디스크에 저장되어있다.
    • 마운트 할 때 파일 시스템 초기화

물리적 디스크는 아래와 같이 파티셔닝되고, MBR에는 boot code와 파티션 정보를 담은 partition table이 있다.

🔹Swap-Space Management

메인 메모리가 모든 프로세스를 수용할 수 없을 때, 더 많은 공간을 필요로 하는 경우 swap

  • swap 공간도 쪼개서 사용
  • swap map은 해당 슬롯을 사용 중인 프로세스 개수를 나타냄

🔹Storage Attachment

CPU가 저장 장치에 연결하는 방법

  1. Direct Attached Storage, DAS
    • Host-attached(호스트 연결), 로컬 연결
    • 메인 버스를 통해 디스크 컨트롤러에 직접 접근
    • Fibre channel과 같은 고속 아키텍처로 빠르게 전달 가능
  2. Network-Attached Storage, NAS
    • 네트워크를 통해 저장소 접근 (네트워크를 통해 저장소 제공)
  3. Cloud storage
    • 클라우드를 통해 저장소 접근 (클라우드가 저장소 제공)
    • NAS는 파일 시스템으로 제공되는 반면, 클라우드 저장소는 API를 사용하여 접근
    • Dropbox, Amazon, Onedrive, iCloud …

Storage Array (RAID)

  • 디스크 여러개를 연결하여 배열로 이어 붙임
  • 여러개의 디스크를 동시에 사용 가능, I/O병럴처리를 통한 속도 향상
  • 중요 데이터를 여러 디스크에 복제 저장 가능 → 한 디스크가 고정나더라도 다른 디스크에서 데이터 계속 사용 가능
  • 중복 제거 기능으로 저장 공간 효율적 사용
  • 에러 처리 및 복구

Storage Area Network(SAN)

  • 하나 이상의 storage array로 구성된 고속 데이터 전송을 위한 스토리지 전용 네트워크
  • 다수의 호스트가 여러 storage array에 연결
  • 클라이언트는 SAN을 통해 위 storage array와 연결
    • 이때, 클라이언트는 서버 API 또는 데이터 프로세싱을 통해 SAN에 연결 (오류 발생 방지)
  • 그래서 SAN에는 고성능 네트워크가 필요
    • Fiber channel switches 또는 InfiniBand등과 같은 고성능 네트워크로 연결

🔹RAID Structure

여러 개의 하드디스크 배열을 사용 (Redundant Array of Inexpensive(independent) Array)

  1. 중복성(동시성)을 이용한 신뢰도 향상
    • 중요 데이터를 복제하여 한 디스크가 고정나더라도 데이터 손실 방지
  2. 성능 향상
    • 여러 디스크의 병렬처리로 속도 향상
    • NVRAM과 결합하여 더 빠르게 가능
  3. 에러 처리

RAID 레벨

6개의 레벨로 구성되어 있으며, 각 레벨은 데이터의 저장 방식에 따라 다름

RAID 0Striping• 줄무늬처럼 데이터를 여러 디스크에 분산하여 저장 (한 디스크 꽉채우고 다음 디스크가 아니라, 디스크별로 하나씩 넣기)
• 이는 여러 디스크의 데이터를 동시에 읽을 수 있도록 해줌
RAID 1Mirroring/Shadowing각 디스크의 데이터를 완전 복사
RAID 1+0 / 0+1Mirrored stripe / Striped mirror복사하고 스트라이핑 = 복사해서 스트라이핑
RAID 4Block-interleaved distributed parity• 패리티 비트를 가진 디스크 하나 추가
• 병목 현상 발생 가능
RAID 5Block-interleaved distributed parity• 패리티를 각 디스크마다 분산해서 가지도록
• 병목 현상 보완
RAID 6P+Q redundancy패리티 뿐만 아니라, 에러 복구 코드도 추가
Multidimensional RAID 6양방향, 2차원으로 RAID를 만들어 더욱 효율적으로

추가 기능

  • 스냅샷: 특정 시점의 파일 시스템 상태를 저장, 복구 가능하도록 함
  • 복제: 데이터 자동 복사를 통해 복구 지원
  • ZFS: 파일 시스템 레벨 에러 처리
    • RAID는 스토리지 레벨에서만 디스크 에러에 대한 처리 → 파일 시스템 레벨 에러 처리는 안함.
    아래 그림에서 기존 파일 시스템은 각 볼륨을 가지고, 볼륨은 파티셔닝 된 디스크들을 가진다. (볼륨은 논리적, 디스크는 물리적 개념) 그래서 공유 파일 시스템 간 경계가 뚜렷하고 저장소를 공유하지 않는다. 그리고 각 파일 시스템에 저장소의 불균형이 발생할 수 있다.
    하지만 ZFS를 사용하면 storage pool로 저장소를 공유하고 필요한 만큼 저장소를 제공해준다.
      

Object storage

용량이 큰 데이터를 스토리지에 1:1로 매핑해서 저장하는 것이 아닌, 오브젝트를 사용해서 저장 (오브젝트 단위로 저장)

  • 오브젝트는 논리적인 저장 공간으로, 여러 노드에 걸쳐있으며, 복사 기능을 가진다.
    • N개의 시스템에 N개의 복사본 저장
  • 오브젝트 저장소 관리 소프트웨어: Hadoop file system(HDFS), Ceph
profile
( •̀ .̫ •́ )✧

0개의 댓글