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의미 -> 한번 쓰고 여러번 읽음
가격은 현재로 올수록 점점 저렴해지고 있음
'👨💻Computer Science > 운영체제[OS]' 카테고리의 다른 글
[운영체제] 13장 I/O Systems (0) | 2021.06.29 |
---|---|
[운영체제] 11장 Implementing File Systems (0) | 2021.06.29 |
[운영체제] 10장 File System (0) | 2021.06.29 |
[운영체제] 9장 Virtual Memory Management (0) | 2021.06.29 |
[운영체제] 8장 Memory Management Strategies (0) | 2021.06.29 |
댓글