보조기억장치

이정민·2022년 6월 10일
0

운영체제

목록 보기
9/12

보조기억장치

  • 대량의 저장공간 제공

  • 블록 단위의 접근

  • 저속 접근

  • 순차적 저장장치

    • 자기 테이프
  • 무작위 접근 저장장치

    • 자기 디스크
    • 플래시 메모리

보조기억장치 관리 필요성

  • 전체 시스템 성능의 병목에 해당
  • 보조기억장치 성능 향상이 전체 성능에 크게 기여 가능
  • 소프트웨어적 성능향상과 하드웨어적 성능향상

보조기억장치의 구조

  • 직접 연결 저장장치(direct-attached storage, DAS)
    • I/O 버스에 연결된 I/O 포트에 장착된 저장장치
  • 네트워크 연결 저장장치(Network-attached storage, NAS)
    • 네트워크를 통해 연결된 저장장치
    • NFS(network file system)와 같은 client-server 방식으로 접근제어
    • 파일시스템 구조 및 통신 부담 때문에 확정성 및 접근 속도 제약
    • 파일 단위로 관리
  • 광저장장치 영역 네트워크(Storage Area Network, SAN)
    • 광채널 등 고성능 네트워크를 통해 원격 컴퓨터의 보조 기억장치를 대규모로 공유하도록 하는 구조
    • 전체 저장장치가 하나의 파일시스템으로 간주
    • 블록 단위로 접근
    • NAS보다 일반화

자기 디스크

  • 물리적으로 구동되는 원반과 암 포함
  • 자기 디스크를 트랙과 섹터로 구분

접근 시간(access time)

  • 탐색 시간(seek time)
    • 헤드를 움직여 적절한 트랙 위로 이동하는데 걸리는 시간
  • 회전 지연시간(rotational latency)
    • 헤드를 대상 섹터 위로 이동하는데 걸리는 시간
  • 전송 시간(transfer time)
    • 데이터를 주고받는데 걸리는 시간

디스크 입출력 시스템

디스크 입출력 시스템 구성

  • 호스트 버스 어댑터(HBA)
    • 시스템 보드에서 하드디스크 컨트롤러로 명령어를 전송하고, 데이터를 주고 받는 역할
  • 디스크 컨트롤러
    • 하드 디스크에 대한 저수준 연산 제어
    • 하드디스크에 내장
  • 디스크
    • 인터페이스 프로토콜
      • IDE/ATA, SCSI
      • SATA, SAS

디스크 스케줄링

  • 디스크 드라이브에 대한 접근시간을 줄일 수 있도록 디스크에 대한 서비스 요청을 효과적으로 관리하는 것

  • 성능 척도

    • 처리량
      • 단위 시간당 처리되는 요청의 개수
    • 평균 응답시간
      • 요청이 처리될 때까지 대기한 평균시간
    • 응답시간의 분산
      • 응답시간의 예측성 측정
  • 스케줄링 목적

    • 처리량 최대화
    • 응답시간 및 응답시간의 분산 최소화

탐색 시간 최적화 스케줄링

선착순(FCFS) 스케줄링

  • 먼저 도착한 요청이 우선적으로 서비스 받게 처리
  • 장점
    • 공평
    • 무기한 대기 방지
    • 낮은 구현 비용
  • 단점
    • 낮은 처리량 가능
      • 무작위 탐색 패턴

최단 탐색시간 우선(SSTF) 스케줄링

  • 탐색 거리가 가장 짧은 요청이 먼저 서비스
  • FCFS보다 높은 처리량, 짧은 응답 시간
  • 일괄처리 시스템에 적합
  • 공평성 보장하지 않음
    • 무기한 대기 가능성
  • 응답시간의 분산이 큼
    • 대화형 시스템 부적합

SCAN 스케줄링

  • 헤드가 이동하는 방향에서 가장 가까이 있는 요청을 먼저 서비스
  • 헤드가 끝까지 가면 다시 반대쪽으로 끝까지 가면서 요청 처리
  • 진행방향에 새로 도착하는 요청도 처리
  • 무기한 대기는 발생하지 않음

C-SCAN(Circular SCAN) 스케줄링

  • 헤드는 항상 바깥쪽 실린더에서 안쪽 실런더로 이동하면서 가장 짧은 탐색 시간을 갖는 요청 처리
  • SCAN 방식에 비해 대기 시간 균등화

FSCAN(Freeze SCAN) 스케줄링

  • 주기적으로 디스크 요청 대기열을 고정하여, 이때 대기열에 있는 요청만 처리
  • 도중에 도착하는 요청은 다음 주기에 처리

N-Step SCAN 스케줄링

  • 요청 대기열의 처음 N개의 요청 단위로 SCAN 방식으로 처리
  • 응답시간 분산을 축소시키는 효과

LOOK 스케줄링

  • 일명 엘리베이터 알고리즘
  • SCAN과 유사하나, 헤드를 움직일 때 진행방향에 요청이 없으면 마지막 실린더까지 가지 않음

C-LOOK 스케줄링

  • C-SCAN을 LOOK과 같이 처리

회전 지연시간 최적화

회전 최적화(rotational optimization)

  • 과거에는 탐색 시간만 주된 최적화 요소
  • 기술 발전에 따라 회전 지연시간도 동일한 단위의 시간 요구

최단 지연시간 우선(SLTF) 스케줄링

  • 현재 실린더에서 회전 지연이 가장 적은 것 먼저 처리

최단 위치이동 시간 우선(SPTF) 스케줄링

  • 위치이동 시간(positioning time) = 탐색 시간 + 회전지연
  • 위치이동 시간이 가장 짧은 요청부터 처리
  • 무기한 대기 요청 가능성

최단 접근시간 우선(SATF) 스케줄링

  • 접근시간(access time) = 위치이동시간 + 전송시간
  • 접근시간이 가장 짧은 요청부터 처리
  • 무기한 대기 요청 가능성

LINUX 입출력 스케줄러

  • LINUX I/O Scheduler

    • 파일 시스템으로부터 블록 입출력 요청을 받아서, 블록 입출력 동작 요청을 입출력 요청 대기열에 전살
    • LINUX에서는 Elevator라고도 부름
  • I/O Scheduler의 종류

    • NOOP 스케줄러
    • 마감시간 스케줄러
    • CFQ(Complete Fair Queueing) 스케줄러
    • ...
  • NOOP 스케줄러

    • No Operation 스케줄러 (아무것도 하지 않음)
    • 커널에서 아무것도 하지 앟아서 부하 축소
    • 성능이 좋은 디스크 사용의 경우 선택 가능
  • 마감시간 디스크 스케줄링

    • 무기한 대기 상황을 피하기 위해서 디스크 요청에 대해 마감시간을 부여하고 마감시간 이내에 요청 처리
      • 읽기 마감시간 기본값: 500ms
      • 쓰기 마감시간 기본값: 5 seconds
    • 마감시간 대기열
      • 읽기 요청 및 쓰기 요청 각각을 관리하는 FIFO 대기열
    • 정렬된 대기열
      • 읽기 요청 및 쓰기 요청을 섹터 번호의 증가 순으로 관리하는 대기열
    • 각 요청은 마감시간 대기열과 정렬된 대기열에 각각 삽입
    • 읽기 요청을 쓰기 요청보다 우선 처리
    • 마감시간 대기열의 첫번째 요청 확인 => 마감시간 초과 요청을 먼저 처리
    • 정렬된 대기열에서 여러 요청을 순차적으로 처리
    • 리눅스에서 제공하는 기본 디스크 스케줄링 방법

CFQ 디스크 스케줄링

  • 프로세스마다 I/O 대기열을 가지고 최대한 균등하게 예약
  • 많은 프로세스들이 세세한 I/O를 많이 발생시킬 때 적합
  • Fedora Core 커널 패키지의 기본 제공

디스크 스케줄링의 특성

  • 디스크 스케줄링의 효과가 미미한 경우도 발생
    • CPU를 많이 사용하는 프로세스 위주의 환경에서는 디스크 스케줄링의 영향이 미약
    • 디스크 요청이 디스크 상에서 무작위 위치로 발생할 때 효과적
    • 파일 시스템의 구조에 따른 영향도 발생 가능

디스크 캐시

  • 디스크 데이터의 사본을 더 빠른 메모리에 저장

  • 주 메모리, 보드상의 캐시, 또는 딧스크 컨트롤러에 위치

  • 디스크보다 빠른 접근 지원

  • 디스크가 여유로워질 때까지 디스크에 기록할 데이터를 잠시 보관하는 기능

    • 시스템 장애나 전원 단절시 데이터 손실 발생 가능
  • write-throungh caching

    • 수정시 바로 디스크에도 함께 기록하는 캐싱
  • write-back caching

    • 일단 수정내용을 디스크 캐시에 저장했다가 주기적으로 디스크에 기록하는 캐싱

RAID

  • Redundant Array of Inexpensive Disk
  • Redundant Array of Independent Disk
  • 여러 개의 하드 디스크에 일부 중복된 데이터를 나눠서 저장하는 기술
  • 디스크 용량 및 성능 또는 신뢰도 개선 목적

RAID Level 0

  • 스트리핑
    • 파일을 여러 개의 조각으로 나누어 디스크들에 분산 저장
    • 스트립별로 읽기/쓰기 가능
      • 처리속도 개선

RAID Level 1

  • 미러링
    • 복사본 유지

RAID Level 2

  • Bit-lebel Hamming ECC Parity 사용
  • Bit 수준에서 스트리핑: 하나의 word가 여러 디스크에 나누어저 저장
  • 별도의 패리티 비트를 저장하는 디스크 사용
  • ECC 계산 시간 부담 발생

RAID Level 3

  • 비트 수준의 XOR 패리티 사용
  • 1개 디스크만 사용
  • 쓰기할 때 패리티 계산 및 패리티 디스크 P에 저장
  • 읽기할 때 패리티 값 확인
  • 특정 디스크 장애 시 해당 디스크 복구 가능

RAID Level 4

  • 블록 수준의 XOR 패리티 저장
  • RAID Level 3와 유사
    • 비트 수준이 아닌 블록 수준에서 스트라이핑
  • 쓰기 할 때마다 패리티 블록 수정 필요: 동일 위치의 패리티 블록
  • 여러 블록의 동시 쓰기(저장) 불가
  • 여러 블록의 동시 읽기 가능
  • 단일 디스크 장애 복구 가능
  • 패리티 디스크의 집중 사용 => 병목

RAID Level 5

  • 블록 수준의 패리티 블록 분산 저장
  • RAID Level 4와 유사
    • 패리티 정보가 디스크에 분산 저장

RAID Level 별 비교

  • 0: 읽기, 쓰기 병렬 수행 가능, 중복성 없음, 블록 수준 스트라이핑
  • 1: 읽기 병렬 수행 가능, 미러링, 스트라이핑 x
  • 2: 해밍 오류수정 코드, 비트 수준 스트라이핑
  • 3: XOR 패리티, 비트 수준 스트라이핑
  • 4: 읽기 병렬 수행 가능, XOR 패리티, 블록 수준 스트라이핑
  • 5: 읽기, 쓰기 병렬 수행 가능, 분산 XOR 패리티, 블록 수준 스트라이핑

RAID Level 6

  • Level 5에 추가적인 패리티 정보 저장

RAID Level 0+1

  • 먼저 스트리핑 후 디스크 미러링

RAID Level 10

  • 먼저 미러링 후 스트리핑
    ...
profile
으악

0개의 댓글