본문 바로가기
👨‍💻Computer Science/운영체제[OS]

[운영체제] 12장 Secondary-Storage Architecture

by 코푸는 개발자 2021. 6. 29.
728x90

 

Disks

하드디스크는 오류나 검색누락 다양한 문제가 발생할 수 있는 물리적 기계장치임

>Low-level(사람이 알아보기 힘든 형태) device drivers (initiate a disk read, etc)

>Higher-level(사람이 알아보기 쉬운 형태) abstractions (files, databases, etc.)

운영체제는 서로 다른 클라이언트에 다양한 레벨에 접근 영역을 제공해줌

-> Physical disk block, Disk logical block, Logical file -> 3가지 영역에 접근에 대한 기능들을 제공해줌

 

하드디스크 구조

Platter(원판처럼 생긴 것) - 데이터가 써지는 곳

head, arm platter에 데이터를 쓰거나 읽는 역할을 해줌.

Track(안쪽 데이터를 저장하는 부분)

Sector(track의 일부 조각, 하드디스크에서 가장 작은 단위) 512byte로 구성됨 -> 실제로는 4KB단위의 디스크블록 단위로 관리함

Cylinder 섹터들을 이동하며 데이터를 읽어오는 방법이 비효율적이기 때문에 세로로 구성되어 있어야 데이터를 효율적으로 불러올 수 있음, 이러한 세로구조를 의미함(arm, head의 물리적 움직임을 최소화하기 위해 만들어짐)

 

디스크에서 단위를 읽으려면 최소단위가 sector, 몇 번째 track, 몇 번째 platter에 있는 앞면인지 뒷면인지 지정이 필요함

그러나 일일이 다 지정해 주는 것은 옛날 방식임 -> 디스크 컨트롤러를 통해 디스크블록이 어디에 있는지 확인함

>>읽고 넘어갈 것

 

디스크 읽는 방식(3가지) - 디스크를 읽기 위해서는 arm이 원하는 데이터가 있는 트랙 위치로 이동해야함

  • Seek(increasing very slowly) - arm이 원하는 트랙으로 이동하는 과정, 가장 오래 걸림 -> 이것을 줄이는 것이 중요
  • Rotation(increasing, but slowly) - 데이터를 찾기 위해 도는 것 (회전, 기다리는 것)
  • Transfer(increasing, and very quickly) - 섹터에 있는 데이터를 head가 읽는 것

 

Disk Attachment 하드디스크가 컴퓨터에 어떻게 붙는지(2가지)

1. Host attached via an I/O port -> 일반적으로 사용하는 컴퓨터

2. Network attached via a network connection

 

Network-Attached Storage(IP기반)

NAS 스토리지  대용량 저장 용도로 사용됨

>>중소기업이나 연구실에서 데이터를 공유할 때 사용됨.

 

 

SAN 스토리지 고성능, 대용량을 파일 access가 빨리 일어나야하는 부분에서 사용됨

-> IP기반 스토리지 접근x

>>유튜브, 네이버 데이터센터에서 사용

 

Storage Architecture

IP기반인지 아닌지로 구분이 됨.

또한 블록단위로 관리를 하는지 파일단위로 관리를 하는지에 따라 구분됨.

SAN Fibre 채널이라고 하는 스토리지에 최적화된 네트워크로 연결되어있음(IP기반x)

NAS TCP/IP로 구분이 되고 파일단위로 구분이 됨.

 

 

Disk Scheduling

-> 계속해서 들어오는 데이터를 어떤 순서로 읽을 것인가?

-> sick time 최소화가 중요함

숫자들 의미 트랙순번 -> 어떤 식으로 조합을 해서 스케줄링하는지가 중요함

 

FCFS 가장 먼저 들어온 것을 먼저 처리함 -> 가장 공평함

-> 이동거리 계산 가능

>>효율적이지 못함

 

SSTF(SJF와 유사) - 가장 가까운 곳으로 이동함

-> 윈도우에서 사용됨.

-> 지속적으로 많은 양의 정보가 들어오면 비효율적 이어짐.(일반적으로 가장 효율적임)

 

SCAN 한쪽 방향으로 쭉 갔다가 다시 반대편 끝으로 이동하는 것

ex) 엘리베이터 예시

 

-> 특수한 경우 데이터읽기나 쓰기 요청이 많은 컴퓨팅 환경에서는 한쪽으로 쭉 이동을 하고 0번 트랙까지 찍고 나서 그다음 반대방향으로 올라감

 

C-SCAN -> 스캔과 동일하지만 한쪽방향으로만 이동함

 

LOOK(보다, 끝 지점까지 이동하지 않음) - SCAN에서 양끝을 판단

 

C-LOOK 끝점에서 끝점을 보고 이동함 ->C-SCAN 방식 개량 최대치와 최소치를 봄

 

 

Selecting a Disk-Scheduling Algorithm -> 디스크 스캔 방법이 어떤 곳에서 사용되는지

SSTF 일반적인 컴퓨터에서 사용

SCAN 요청이 많은 대규모 데이터센터에서 사용

 

 

Disk Management

예전에는 하드디스크에 bad sector가 많이 나타났음

bad sector 발생하면 어떻게 해결?

sector sparing - bad sector가 발생할 것 같은 곳(예측)spare sector를 만들어 놓음

 

 

Disk Controllers bad sector 관리 이외에도 똑똑해져서 성능을 높이고 있음.

핵심 기술

>Read-ahead(간 김에 주변 것들도 읽어오는 것)

>Caching(최근 사용한 것을 저장해서 빨리 사용하는 것)

>Request reordering(SSTF기법으로 스케줄링해서 디스크에 내려 보냈는데 잘 못 스케줄링 되었다면 다시 스케일링해서 보내주는 것)

>Request retry on hardware failure

>Bad block identification(bad block 색출 방법)

>Bad block remapping: onto spare blocks and/or tracks

-> 위에 3가지는 있다고만 알것

 

 

Swap-Space Management(그렇게 중요x)

VM management에서 사용 메인 메모리에 두 배정도만 나누어서 스왑스페이스로 사용함

 

 

RAID(Redundant Array of Inexpensive Disks) 

값싼 디스크를 여러 개 묶어서 신뢰도와 성능을 높이는 방법(하드디스크 시중에서 18TB가 가장 비쌈)

bad sector가 자주 발생하게 되면 디스크를 버려야 할 수도 있음 -> 따라서 값싼 디스크들을 여러 개 두어서 bad sector가 발생하더라도 나머지디스크에 저장되어 있는 정보들을 기반으로 복구를 가능하게 해주는 것

-> Mirroring(shadowing) - 4개의 하드디스크 저장 장치가 있다면 2개씩 같은 내용을 둠, 그러나 이 방법을 사용하면 저장용, 백업용 두 개의 디스크가 필요함(하드디스크 2배 필요)

-> Parity or error-correcting codes(백업용 디스크를 하나만 둠) 위에 방법이 디스크를 많이 사용하여 디스크 정보에 대한 비트 정보를 만들어 두어서 백업 기능을 가능하게 하는 것

>>but 여러 개가 고장 나게 되면 문제가 커짐

>Improving performance via parallelism(여러 디스크를 나누어서 읽어 올 때 병렬적으로 배열해서 성능을 높이는 것, 2가지 방법)Data striping(연속된 데이터를 여러 개의 디스크에 RR형식으로 저장하는 것)

-bit-level(블록하나를 4개의 비트로 쪼게어 다른 디스크에 저장하는 것)

-block-level(블록 단위로 다른 디스크에 RR형식으로 골고루 저장하는 것)

 

RAID Levels

RAID 0(번호가 디스크수임)

>striping만 함

>신뢰도를 고려하지 않고 성능만 좋아지게 하는 것(Redundant한 기능x)

>각 디스크마다 RR방식으로 골고루 저장이 되어있음.

>따로 백업이 안 되어 있어 불량이 발생하면 정보가 모두 날아감(불량이 나면 복원 불가)

>사용분야 : 동영상 저장 스토리지에서 사용(신뢰도에 크게 영향을 주지 않는 분야에서 사용됨) ex -> 위에 숫자가 디스크 넘버, 각각의 칸은 블록단위로 저장이 됨(RR형식)

 

 

RAID 1

>0단계와 반대로 Mirroring 기술만 두어 신뢰성만 확보함(데이터 복구능력 향상)

>RR기법을 사용하지 않아 striping을 적용하지 않고 한쪽에 몰아두는 것(하나의 디스크를 읽는 것과 별반 다른 성능 향상이 없음)

>성능보단 절대적으로 데이터 신뢰도를 필요로 하는 곳에서 사용됨.(한 디스크에 같은 종류 파일이 저장됨.)

 

 

RAID 2

>성능과 신뢰도를 모두 확보하려고 함

>bit-striping기법을 사용하여 한 블록을 4개로 쪼게어 저장해 놓음.

ECC(error-correcting codes) - 에러가 발생했는지 확인하는 비트

>하나가 날아간다 하더라도 나머지 비트로 복구를 가능하게 해줌.(그림 예시는 3개까지 가능)

>RAID1에서 사용한 Mirroring기법보다 복구 성능은 떨어짐

>계산과정이 복잡하여 오버헤드가 큼 -> 때문에 최근에는 많이 사용x

 

 

RAID 3

>RAID2에서 배운 bit-striping기법과 패리티 기법을 사용한 것

>경험적 측면으로 두 개 이상 디스크 고장이 잘 발생하지 않음

>파일을 안전하게 보존하기 위해 사용(백업용 오류 확인 패리티 비트 하나만 두는 것)

>한 디스크에 오류가 발생한다며 고장난 비트와 나머지 비트와 비교를 해서 오류를 찾아낼 수 있음 -> but 두 개 이상 오류가 발생한다면 복원이 어려움

 

 

RAID 4

>RAID 3에서는 정보가 바뀐다면 패리티비트도 지속적으로 갱신시켜주어야 함 -> 따라서 여가서는 bit단위로 데이터를 가져오는 것이 아니라 block striping기법을 통해서 데이터를 저장하고 읽어오는 방식

>RAID 3를 개선함 -> 그러나 여전히 패리티비트 오버헤드가 크게 발생함

 

 

RAID 5

>패리티비트를 분산적으로 저장해 둠(디스크마다 저장)

>모든 디스크에 패리티 비트를 분산 시켜놓음 -> 한쪽 디스크에 무리가가는 문제를 해결할 수 있음

>이렇게 구현을 하려면 최소한의 하드디스크 개수가 필요함

>최소 3개의 하드디스크가 필요하고 보통 그림과 같이 구성하기 위해서는 5개가 필요함

 

 

RAID 6

>RAID 5와 유사한 기법 패리티비트정보에 2차 패리티 정보를 추가로 넣어서 두 개의 하드웨어에 문제가 생기더라도 복구가 가능하게 하는 것

>성능 상으로는 RAID0과 차이가 없지만 신뢰도가 우수해짐

 

 

RAID 0+1

>RAID 0 의 블록 striping방식과 RAID1의 미러링 방식을 혼합함

>하드디스크 그룹 구성은 RAID1으로 구성함

>RAID 0에서 사용하는 블록 striping방식으로 저장이 됨.

>0, 1을 혼합한 방식

 

 

RAID 10 (or RAID 1+0)

>앞선 방법은 디스크를 RAID 0+1 -> 차이점 디스크를 어떻게 묶는지

>여기서는 데이터는 블록 striping으로 저장을 하고 디스크 구성은 RAID1방식으로 저장함(하나가 2개의 디스크를 관리함 )

>4개의 데이터 그룹이 생김

>장점 : 한 디스크가 완전히 나가는 경우가 생기더라도 나머지 디스크로 대체하는 식으로 사용이 가능함 -> 앞선 방식보다 안전성이 높음(디스크 재구성하는 방식이 다름)

 

 

Tertiary Storage Devices 3차 저장장치

하드디스크 이외에 외부저장장치 CD-ROM, 플로피 디스크, USB, 외장하드웨어 등등

 

 

Removable Disks 뺐다 꽂았다 하는 것

->Floppy disk(이미 사라짐)

 

 

WORM DISK - Write Once, Read Many Times의미 -> 한번 쓰고 여러번 읽음

 

 

가격은 현재로 올수록 점점 저렴해지고 있음

 

728x90

댓글