[OS] 저장 장치 시스템 (Storage Systems)
[OS] 저장 장치 시스템 (Storage Systems)

[OS] 저장 장치 시스템 (Storage Systems)

카테고리
💻 Computer Science
작성자
박용성박용성
작성일
2024년 06월 07일
태그
OS
Slug
os-13
floatFirstTOC: right

🖥️ 시작하며

HDD를 중점으로 Storage Systems에 대해 설명합니다.
 

🔍 Secondary Storage

💡
기억장치라고 불리며, 주 메모리 외부의 모든 저장 장치를 의미
  • CPU와 직접 소통하지 않음! 주 메모리를 거친다.
    • 명령어의 직접 실행을 허용하지 않음
    • 데이터의 직접 읽기/쓰기를 허용하지 않음
특성
설명
크기
대용량 (예: 4TB 이상)
비용
저렴함
지속성
데이터가 전원 손실 시에도 유지됨
속도
느림 (접근 시간: 밀리초 단위)
 

🔍 HDD

notion image
notion image

📌 Segate HDD 구조

항목
스펙
참고
헤드 수
4개
헤드가 위 아래 양면으로 존재
디스크 수
2개
최대 기록 밀도
1413K BPI (bits per inch)
1MB/bits
평균 트랙 밀도
236K TPI (tracks per inch)
평균 면적 밀도
329 Gbits/sq.inch
스핀들 속도
7200rpm (8.3ms/rotation)
진공청소기가 11000rpm
평균 탐색 시간 (읽기)
< 8.5ms
팔이 움직이는 시간
평균 탐색 시간 (쓰기)
< 9.5ms
팔이 움직이는 시간
최대 내부 데이터 전송 속도
1695 Mbits/sec
최대 I/O 데이터 전송 속도
300MB/sec (SATA-2)
요즘 좋은 SSD는 8GB
최대 지속 데이터 전송 속도
125MB/sec
내부 캐시 버퍼
32MB
최대 전원-온 준비 시간
< 10.0 초
notion image
 

📌 디스크 관리

  • 디스크는 기계적인 장치를 포함하기 때문에 여러 문제가 발생할 수 있음
    • 오류 (Errors): 디스크 읽기/쓰기 중 다양한 오류 발생 가능
    • 불량 블록 (Bad blocks): 데이터를 저장할 수 없는 손상된 블록
    • 탐색 실패 (Missed seeks): 디스크 헤드가 원하는 위치를 정확히 찾지 못함
  • 운영체제는 이런 복잡성과 문제를 숨기고 상위 소프트웨어가 디스크의 문제를 직접 다루지 않도록 함
      1. Low-level device drivers
        1. 하드웨어와 상호작용해 디스크 읽기/쓰기 수행
      1. Higher-level Abstractions
        1. 디스크의 복잡성을 추상화 (파일, 데이터베이스 등)

⚙️ 운영체제는 디스크 접근을 하기 위한 여러 수준의 방법을 제공

  1. 논리 파일 접근 (Logical File Access) - by User Library
      • 파일 이름, 블럭 번호, 레코드 번호 혹은 바이트 번호를 통해 파일에 접근
  1. 디스크 논리 블록 접근 (Disk logical block) - by Filesystem
      • 디스크의 논리 블록 번호를 사용해 데이터를 관리하고 저장
  1. 물리 디스크 블록 접근 (Physical disk block) - Block Layer
      • 실제 디스크의 물리적 위치(surface, cylinder, sector)를 사용해 관리
접근 수준
제공자
설명
예시
논리 파일 접근
사용자 라이브러리
파일 이름과 블록 번호, 레코드 번호 또는 바이트 번호를 사용하여 파일에 접근
fopen(), fread(), fwrite(), fseek()
디스크 논리 블록 접근
파일 시스템
논리 블록 번호를 사용하여 파일 시스템이 디스크의 데이터를 관리
파일 시스템 (ext4, NTFS 등), 논리 블록 배치
물리 디스크 블록 접근
블록 레이어
디스크의 물리적 위치(서페이스, 실린더, 섹터)를 사용하여 데이터 관리
디스크 드라이버, 물리적 주소 사용

  • 디스크 요청을 명시(데이터 읽기/쓰기를 위해 디스크의 특정 위치를 지정)하는 것은 많은 정보를 필요:
    • Cylinder #, surface #, track #, sector #, transfer size, etc.
    • 옛날에는 운영체제가 모든 매개변수를 지정해야 했음 → 매개변수를 모두 알아야 했음
  • 현대 디스크의 복잡성
    • 섹터 크기 불균일, 섹터가 재배치, etc.
  • 현대 디스크는 고수준의 추상화 인터페이스를 제공
    • 예시: SCSI (Small Computer System Interface)
    • 디스크는 데이터를 [0..N-1] 범위의 논리적 블록 배열로 내보냄
    • 논리적 블록을 실린더/서페이스/트랙/섹터에 매핑
    • 읽기/쓰기 위해 논리적 블록 번호만 지정
    • 결과: 운영체제는 물리적 매개변수를 숨김
  • 하드웨어가 바뀌면 운영체제 코드도 바뀌어야 함!
 

📌 Disk Performance

1️⃣ 탐색 (Seek)

  • 설명: 디스크 팔을 올바른 실린더로 이동시키는 과정
  • 속도: 디스크 팔의 이동 속도에 따라 달라지며, 매우 느림
  • 영향 요인: 디스크 팔의 물리적 이동 시간

2️⃣ 회전 (Rotation)

  • 설명: 디스크 헤드 아래로 올바른 섹터가 올 때까지 기다리는 과정
  • 속도: 디스크의 회전 속도에 따라 달라지며, 느림
  • 영향 요인: 디스크의 회전율 (예: 7200 RPM)

3️⃣ 전송 (Transfer)

  • 설명: 데이터를 디스크 표면에서 디스크 컨트롤러로 전송하고, 이를 호스트로 보내는 과정
  • 속도: 디스크의 바이트 밀도에 따라 달라지며, 상대적으로 빠름
  • 영향 요인: 디스크의 데이터 밀도와 인터페이스 속도
단계
설명
속도
영향 요인
탐색 (Seek)
디스크 팔을 올바른 실린더로 이동
매우 느림
디스크 암의 물리적 이동 시간
회전 (Rotation)
디스크 헤드 아래로 올바른 섹터가 올 때까지 기다림
느림
디스크의 회전율 (예: 7200 RPM)
전송 (Transfer)
데이터를 디스크에서 컨트롤러로 전송하고 호스트로 보냄
빠름
디스크의 데이터 밀도 및 인터페이스 속도
notion image
 

📌 Disk Scheduling

💡
디스크 탐색(Seek)은 비용이 많이 들기 때문에 디스크 스케줄링이 필요
  • 디스크가 사용중일 때 읽기/쓰기 작업이 요청될 수 있음
    • 대기 중인 모든 작업을 저장하고, 스케줄링을 통해 최적화된 순서로 처리
notion image

📌주요 디스크 스케줄링 알고리즘

스케줄링 알고리즘
설명
장점
단점
FCFS
요청 순서대로 처리
구현이 간단
비효율적인 탐색 시간
SSTF
가장 가까운 트랙의 요청을 먼저 처리
탐색 시간 최소화
특정 요청의 Starvation 가능성 (양 끝)
SCAN
디스크 헤드가 끝에서 끝으로 이동하며 요청 처리
고른 처리와 합리적인 탐색 시간
끝에서 방향 전환 시 대기 시간 발생 (SSTF도 비슷)
C-SCAN
끝에서 끝으로 이동 후 처음으로 돌아가서 요청 처리
일정한 대기 시간과 예측 가능한 성능
구현 복잡성 증가
LOOK
SCAN과 유사하지만, 디스크 암이 요청이 있는 마지막 위치까지만 이동
끝까지 가지 않아 불필요한 이동 최소화
특정 상황에서 비효율적일 수 있음
C-LOOK
C-SCAN과 유사하지만, 디스크 암이 요청이 있는 마지막 위치까지만 이동한 후, 처음으로 돌아감
불필요한 이동 최소화, 일정한 대기 시간
구현 복잡성 증가
notion image
notion image
notion image
notion image
notion image
 

💡 요즘은 Disk가 보통 SSD를 쓰기 때문에 디스크 스케줄링을 쓰지 않음, 자체적으로 수행

  • 디스크 스케줄링 알고리즘을 선택하는 것은 시스템 성능에 큰 영향을 미침
      1. SSTF : 가장 무난한 선택, 다음으로는 LOOK
      1. SCAN , C-SCAN : 디스크에 과부하가 걸리는 시스템에서 좋음
      1. 성능은 디스크 요청의 수와 유형에 따라 달라짐
      1. 디스크 서비스 요청은 파일 할당 방법에 의해 영향을 받음
 

📌 Modern Disks

⚙️ Intelligent controllers

  • 소형 CPU와 여러 킬로바이트의 메모리 포함
  • 컨트롤러 제조업체가 작성한 프로그램 실행

⚙️ Intelligent 기능:

  • Read-ahead: 현재 트랙의 데이터를 미리 읽어 성능 향상
  • Caching: 자주 사용되는 블록을 캐시 메모리에 저장
  • Command Queuing: 여러 명령을 큐에 저장하여 처리
  • Request Reordering: 탐색 및 회전 최적화를 위해 요청 재정렬
  • Request Retry on Hardware Failure: 하드웨어 오류 발생 시 요청 재시도
  • Bad Block/Track Identification: 불량 블록/트랙 식별
  • Bad Block/Track Remapping: 불량 블록/트랙을 여분의 블록/트랙으로 재배치

📌 I/O 스케줄러의 역할

1️⃣ Improve Overall Disk Throughput (전반적인 디스크 처리량 향상)

  • Merging requests: 요청 수를 줄이기 위해 요청을 병합
  • Reordering and sorting requests: 디스크 탐색 시간을 줄이기 위해 요청을 재정렬해서 최적의 탐색 시간 찾음

2️⃣ Prevent Starvation (기아 방지)

  • Submit requests before deadline: 요청이 기한 전에 제출되도록 함

3️⃣ Provide Fairness (공정성 제공)

  • Ensure fairness: 서로 다른 프로세스 간의 공정성을 제공

4️⃣ Guarantee Quality-of-Service (QoS) Requirement (품질 보장)

  • Meet QoS requirements: 품질 보장(QoS) 요구 사항을 충족

댓글

guest