[운영체제] 10. 대용량 저장장치 구조

임호연·2021년 5월 21일
0

기록

목록 보기
11/20
post-thumbnail

대용량 저장장치 구조

하드디스크 드라이브

구성요소

  • 실린더
  • 섹터
  • 트랙
  • 디스크 암

전송속도

  • 디스크와 컴퓨터까지의 전기적 전송속도

  • 임의엑세스시간

    탐색시간(해당 암이 앞뒤로 수직이동, 실린더로 들어오기)

    회전시간(디스크가 회전하는 시간, 해당 섹터로 들어오기)

비휘발성 메모리 장치(NVM, non volatile memory device)

좋은 점

  • 움직이는 부품이 없기에 안정성이 높고 탐색시간이 빠르다.
  • 전력도 싸다

안 좋은 점

  • 비싸다

  • 페이지 단위로 읽고 쓸 수 있지만 overwrite은 불가능하다.

  • 삭제는 블록단위로 이루어진다.

    시간이 존내걸린다.

  • 삭제 횟수가 넘으면 셀이 죽어버린다.

특이한 기법

  • 가비지 수집

    빈 공간으로 유효한 메모리들을 복사한 뒤, 삭제를 박는다.

  • 이거를 위해서, 한 20% 정도의 공간은 남겨 놓는다.

  • 일부러, 삭제박는 블록을 이리저리 카운팅해가며 평균적으로 비슷하게 해서 마모를 막는다.

    드라이브거 알아서 해 준다.

연결 방법

  • SATA, NVMe

논리주소 매핑 방법

  • 논리 블록주소는 순차적으로 유지되지만, 물리적 섹터 위치는 변경시킨다

    각종 최적화를 위함이겠지

  • 각종 최적화

    • 베드섹터를 숨기기

    • 트랙당 섹터수가 일정하지 않다.

      안쪽은 작고 바깥쪽은 크다

    • 디스크 제조업체가 이러한 논리블록주소와 실제주소를 알아서 매핑하기때문에 알 수 있는 일이 없다.

디스크 스케줄링

  • LBA를 물리적 주소로 매핑하는 책임이 드라이브에 있다. 따라서, 정확하지는 않지만, 그래도 어느정도 가시성을 준다.

피포

SCAN

  • 양쪽 끝에 있는 거는 서비스를 잘 못 받는다.

    대기할 시간이 적다는 맥락이다.

  • 기아가 적긴 하겠다.

C-SCAN

  • 기아가 적긴 하겠다.

SSTF

  • 그냥 현 위치에서 가까운 것으로

CLOOK, LOOK

  • 그냥 갈떄까지만 가고, SCAN처럼 꺾는다.

CFQ

  • 프로세스마다 관리, C-Scan
  • 프로레스들은 라운드로빈으로 실행.

NVM 스케줄링

  • FCFS사용

    읽기는 그냥 하지만

    쓰기같은 경우는 시간이 조금 걸리므로

    인접한 요청 병합하도록 수정

  • 쓰기 연산 시 개지랄을 다하므로 병목이 발생할 수 있다.

초기화 단계

  • 물리적 포맷팅 → 기본적으로, 물리블록주소를 논리블록주소로 바꿔줄 수 있는 최소한의 하드웨어 관리

    섹터 크기 설정 등,,

  • 파티션 → 그룹으로 나누고, 별도의 장치처럼 취급하는 일.

  • 여러 파티션이 합쳐서 볼륨이 될 수도 있겠죠?

  • 논리적 포매팅과 파일시스템 생성이 다음 단계입니다.

    초기 자료구조를 올려놓고요,,

    여기에는 가용공간이나 초기의 빈 디렉터리,,

손상된 블록 관리

전체를 다 훓기

  • 훓어서 이상한 애들을 블락처리

예비섹터 만들기

  • 애초에, 가용 섹터를 몇 개 빼둔다.
  • 만약, 컨트롤러가 ECC를 계산했는데 뭔가 손상의 흔적이 발견되면, 예비섹터로 포워딩을 한다.
  • 논리 블록 주소를 기반으로 한 실린더 최적화 등이 먹히게 하기 위해, 가능한 동일 실린더의 예비섹터를 잡겠다.

섹터 밀어내기

  • 내가 17번이 고장났어
  • 근데 빈 예비섹터가 35번이야
  • 그러면 18~34를 다 한칸 밀어내고,
  • 18번을 비워준다.

11.6 스왑공간 관리

두가지 방법

  • 사용자 공간에다가 그냥 생성

    관리가 매우 편하다.

  • 별도의 RAW 파티션 할당

    속도효율성 최적화된 알고리즘 사용

    관리가 좀 불편한다.

    스왑공간을 늘리려면 새로 만들던가, 아니면 다른 장소에 또 만들어야 한다.

리눅스에서

  • 만약 파일에 대한 페이지라면, 가져오기보다는 그냥 바로 파일시스템에 박는다.
  • 스왑공간은 그냥 스택이나 힙등의 익명메모리를 위함이다.

저장 장치 연결 방법

  • 호스트 저장

    그냥 컴퓨터에 박기

  • 네트워크연결(NAS)

  • 클라우드 저장장치

    NAS와 차이점은, NAS는 실제로 마운트되지만

    클라우드는 API를 통한 통신이다.

    NAS는 LAN에서 사용할 거를 전제로 했기 때문에,

    그냥 지연시간과 오류율이 되게 낮았다.

  • SAN

    그냥, 저장장치 배열을 중간에서 관리하는, 네트워크 프로토콜이 아니라 저장장치 프로토콜을 사용하는 중간매개체가 있다.

    이것들이, 그냥 일반 장치처럼 서로를 연결한다.

레이드

디스크 시스템에서의 병렬성

  • 데이터스트레이핑
  • 부하균등화
  • 규모가 큰 액세스의 응답시간을 줄인다.
  • 만약, 디스크 8개 있다면, 8비트를 한번에 읽을 수 있는 기적

레이드 0(콘켓)

레이드 0(스트라이프)

레이드1

  • 쓰기 두번 발생 귀찮다.

레이드2

  • 해밍코드

레이드3/4

  • 패리티연산에 대한 부담이 물론 있다.
  • 쓰기할 때 마다 패리티연산을 해야되니까.

레이드5

  • 하나만 터져야 복구 가능

레이드6(2차패러티)

  • 2개가 터져도 복구 가능

레이드의 선택

  • 레이드1은 복구는 쉽다.

    하나만 뺴면 되니까

  • 레이드 5는 모든 디스크를 다 뒤져야 하므로 시간이 꽤나 오래 걸린다.

단점

  • 파일포인터같은 소프트웨어적인게 제대로 복구 안 되어 있을 수도 있따.

  • 조금 한정적이다

    만약, 디스크가 5개인데, 디스크 하나가 사실은 parity를 4개 밖에 못 담는 어이없는 상황이랄까..

    • 그래서 ZFS
      그냥 malloc, free같은 간편한 모델

객체저장소

  • 하둡은 키벨류처럼,, 그냥 구조화되지 않은 데이터를 객체로 저장하고 관리한대
  • 몰라시발

부팅 방법

  1. 디스크 내의 MBR을 자동으로 불러오게 한다.
  2. boot code는 블록을 읽을 정도의 최소한의 프로그램이다.
  3. 그리고, partition table을 통해 boot 파티션으로 간다.

profile
해탈하자

0개의 댓글

관련 채용 정보