OS - (9) Storage Structure

정선용·2022년 5월 18일
0

Operating System

목록 보기
9/12

Disk Structure

HDD

hard disk drive

HDD는 spindle, platter, arm assembly, read/write head로 구성되어있고,
platter 안이 여러개의 track으로 구성되어있다. track의 최소 단위를 sector라고함.

apindle은 부팅 후 disk의 내용을 읽고쓰기 위해 디스크를 회전시키는 회전축이며(종료시 회전 종료), platter들이 이 돌려지는 disk이다. 여러개의 track으로 이루어져있으며 sector는 disk(track)이 데이터를 담고있는 최소 단위를 지칭함.
이때 arm이라는 것 끝에 read-write head가 존재해 이 디스크들의 데이터를 불러들이고, 읽고쓰기작업을 함.

SSD

solid-state disk drive
SSD는 반도체 칩 형태의 disk drive로, 기계적인 disk 움직임이 필요가 없다.
: HDD보다 비싸고 수명이 짧지만, 안정적이고 더 빠르다.
HDD에서는 각 sector에서 데이터를 읽고 쓰기 위해서는
access time = r-w head가 요청한 track으로 이동한 후, 해당 sector가 r-w head 밑으로 회전, transfer(데이터를 읽고 전송)하는 총 3단계의 시간이 걸린다.(seek time + rotational latency + transfer time)

SSD는 block에 write할 수 있는 횟수가 제한되어있으며, block당 여러개 page가 존재, read,write는 이 page 단위로 한다. 단 erase는 block단위.
SSD에는 write할 수 있는 횟수가 정해져있다했는데, 그 횟수는 해당 cell이 닳을 때 까지이며 따라서 각 block에 균등하게 write해서 닳게하는 정책이 중요하며 이를 wear-leveling이라고 한다.
이 때 SSD에서는 데이터 공간의 확보를 위해 Garbage Collection을 이용해 쓰레기데이터가 너무 많이 쌓이면 한번씩 다 erase해주고 빈 공간으로 바꿔준다.(garbage collection : 블록을 실제로 삭제하지 않고 표기 후 적절한 시점에 일괄 삭제처리하는 기술이다. 이 때 블록의 페이지 상태는 Live, Empty, Dead로 나뉨.)

  • 저장과정
    1) 데이터를 넣을 빈공간을 탐색한다. 이미 저장되어있는 부분은 dead data로 바꿔주면서 빈공간을 찾는다.
    2) 빈 공간을 찾으면, 그곳에 데이터를 저장하고 state를 live로 바꿔준다.
    3) 그렇게 빈공간을 점점 채워나가다 저장공간이 좀 부족하다 싶으면, block 단위로 dead data가 쌓여 있는 부분을 한번 싹 밀어주고 empty state로 바꿔준다.

  • flash translation layer
    특정 데이터가 동일 페이지에 계속 존재하지 않는다. SSD에서는 overwrite(블록)이 안되기 때문에 (erase before write, block단위로 지우며 page단위로 write) OS에서 보는 page 위치가 바뀔 수 있기 때문에 mapping해주는 레이어가(매핑테이블같은것이) 존재한다.

Disk Attachment

  • DAS
    : Direct Attached Storage : I/O bus를 통해서 직접 storage에 접근하는 것. 내장 하드, 외장 하드 존재 시 이 방법으로 접근한다.
  • NAS
    : Network Attached Storage : local Connection이 아니라 NETWORK PROTOCOL을 사용해서 storage에 접근한다.
    어떻게 접근하냐면 Remote Procedure call(RPC)을 이용해서, 다른 컴퓨터에 attach되어있는 storage에 접근할 수 있다.
  • SAN
    : Storage Area Network : 서버에 저장된 storage들을 storage protocol(san)이라는 별도 프로토콜을 이용해 접근한다. NAS는 파일단위 전송이므로 느리지만 SAN,DAS는 블록단위 전송으로 빠르다.
    SAN과 NAS는 NAS에서는 client가 network를통해 server에 접근한 후 서버에 저장된 storage에서는 SAN을 이용해 storage array에 접근하게되는 것 이라고 함.

Disk Scheduling

일반적으로 한 파일의 블록들에 해당하는 섹터는 디스크 상에 물리적으로 순차적이게 저장되지 않는다
시분할 시스템에서 동시에 수행 중인 프로세스들에 의해 발생되는 요청이 수시로 디스크 입출력 요청 큐에 도착하기 때문에, 이를 순서화할 필요가 있다.
리눅스의 경우 이러한 스케줄링이 I/O 서브 시스템의 I/O 스케줄러에 의해 이루어진다

FCFS

먼저 도착한 요청을 우선적으로 서비스. (First Come First Served)

SSTF(Shortest Seek First)

스케줄링은 트랙을 찾아가는 거리가 짧은 요청부터 먼저 서비스하는 기법(HDD)
현재 헤드에서 가까운 것 우선해서 찾아간다. starvation이 발생할수도.

SCAN

헤드 진행 방향(sweep direction) 상의 가장 짧은 거리에 있는 요청을 먼저 서비스
처리량과 평균 응답시간을 개선하면서도 아울러 SSTF에서 발생하는 반응시간의 편차를 개선

LOCK

LOCK의 경우 움직이는 방향으로 더 이상 요청이 없으면 끝까지는 가지 않고 반대 방향으로 헤드를 움직인다

C-SCAN

Circular Elevator Algorithm.
SCAN이 한 쪽 끝까지 가서 그대로 유턴하여 방향을 바꾸는 것과 다르게 항상 한쪽 끝으로 점프하여 다시 시작한다는 것이 차이점
C-SCAN 방식은 양끝과 가운데 부분의 요청밀도에 편차를 줄일 수 있어, 대기시간을 좀 더 균등하게 제공할 수 있다.
SCAN보다 응답시간편차/처리시간이 훨씬 공평해짐.

Disk Management

  • Disk formatting

    • physical formatting (low-level formatting) : disk를 sector 단위로 분할
    • logical formatting (Making a file system) : initial file system을 만들기 위해서는 해당 데이터를 다 지우고 초기화해주어야 한다. file system 없이는 데이터를 읽고 쓸수 없다. (한번 추상화)
  • Boot block
    부팅 시 필요한 정보들이 저장되는 블록.
    boot strap이 ROM에 내장되어있는데, Boot strap loader가 boot block을 메모리에 로딩하고, 제어권을 boot block에게 넘겨주게 된다.

  • Swap space
    swap-out 된 페이지가 저장된 disk 공간

RAID Structure

Redundant Array of Independent Disks = 디스크 배열을 사용하는 대용량 저장장치.
RAID란 여러 디스크를 병렬적으로 구성하여, storage 용량과 throughput을 늘리기 위한 저장장치: I/O 연산이 많이 일어날수록 하나의 disk로만으로는 부족하다. 따라서 여러 디스크를 병렬적으로 연결하여 array of disk를 만들어내게 된다.

목적은 throughput이 향상된다. striping이란 하나의 file을 여러 disk에 분산시켜 저장하는 기법을의미하는데, 이로인해 처리율이 향상된다. 또한 분산 시 fault-tolerance기법으로 데이터의 안정성이 증가한다.

  • striping : striping의 unit size에따라 구분.

    • bit-level strping : 한 번 r-w할 때 모든 디스크 동시 사용.
    • block-level striping : 특정 disk에서만 r-w될 수 있음.
  • fault tolerance : 디스크 하나에비해 여러개 사용하면 신뢰성이 낮아진다.

    • MMTF : mean time to failure : 고장날때걸리는시간.
    • MTTR : mean time to repair : 복구될때까지 걸리는 시간
    • Mirroring방식 : 한 디스크가 고장이 났을 때 다른 디스크에서 해당 디스크 정보를 복제해 저장해두었을 때.
    • Parity방식 : parity block의 XOR연산을 통해 복원한다. 원본이 아닌 디스크에서 원본x디스크와 다른y디스크의 XOR연산의 parity정보를 저장해두고, y에 XOR연산을 해 A를 복구한다.
  • RAID 종류

    • 0 : striping : 복구불가능
    • 1 : mirroring : 모든 disk가 mirrored, storage 2배
    • 2 : 요즘 안씀.
    • 3 : parity + bit striping
    • 4 : parity + block striping
    • 5 : parity(parity block들이 배열 디스크 전체에 분산됨, parity disk 따로 구성 x) + block striping
profile
정선용

0개의 댓글