보조기억장치
-
대량의 저장공간 제공
-
블록 단위의 접근
-
저속 접근
-
순차적 저장장치
-
무작위 접근 저장장치
보조기억장치 관리 필요성
- 전체 시스템 성능의 병목에 해당
- 보조기억장치 성능 향상이 전체 성능에 크게 기여 가능
- 소프트웨어적 성능향상과 하드웨어적 성능향상
보조기억장치의 구조
- 직접 연결 저장장치(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)
- 시스템 보드에서 하드디스크 컨트롤러로 명령어를 전송하고, 데이터를 주고 받는 역할
- 디스크 컨트롤러
- 하드 디스크에 대한 저수준 연산 제어
- 하드디스크에 내장
- 디스크
디스크 스케줄링
탐색 시간 최적화 스케줄링
선착순(FCFS) 스케줄링
- 먼저 도착한 요청이 우선적으로 서비스 받게 처리
- 장점
- 단점
최단 탐색시간 우선(SSTF) 스케줄링
- 탐색 거리가 가장 짧은 요청이 먼저 서비스
- FCFS보다 높은 처리량, 짧은 응답 시간
- 일괄처리 시스템에 적합
- 공평성 보장하지 않음
- 응답시간의 분산이 큼
SCAN 스케줄링
- 헤드가 이동하는 방향에서 가장 가까이 있는 요청을 먼저 서비스
- 헤드가 끝까지 가면 다시 반대쪽으로 끝까지 가면서 요청 처리
- 진행방향에 새로 도착하는 요청도 처리
- 무기한 대기는 발생하지 않음
C-SCAN(Circular SCAN) 스케줄링
- 헤드는 항상 바깥쪽 실린더에서 안쪽 실런더로 이동하면서 가장 짧은 탐색 시간을 갖는 요청 처리
- SCAN 방식에 비해 대기 시간 균등화
FSCAN(Freeze SCAN) 스케줄링
- 주기적으로 디스크 요청 대기열을 고정하여, 이때 대기열에 있는 요청만 처리
- 도중에 도착하는 요청은 다음 주기에 처리
N-Step SCAN 스케줄링
- 요청 대기열의 처음 N개의 요청 단위로 SCAN 방식으로 처리
- 응답시간 분산을 축소시키는 효과
LOOK 스케줄링
- 일명 엘리베이터 알고리즘
- SCAN과 유사하나, 헤드를 움직일 때 진행방향에 요청이 없으면 마지막 실린더까지 가지 않음
C-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
RAID Level 0+1
RAID Level 10