[DB] 저장과 파일구조 - 디스크, 파일, 플래시 저장장치

4 분 소요



저장 장치 계층

분류 기준 : 액세스 속도, 데이터 단위당 비용, 매체 신뢰성

magnetic tapes, optical disk, magnetic disk, flash memory, main memory, cache

신뢰성은 왼쪽으로 갈 수록 높다. 액세소 속도와 비용은 오른쪽으로 갈수록 높다.

  • flash memory, main memory, cache (전자적)[반도체]
  • magnetic tapes, optical disk, magnetic disk (기계적)



캐시

  • 가장 빠름
  • 가장 고가
  • 하드웨어가 관리
  • 캐시보다 더 빠른건 레지스터
  • 버퍼링해서 속도 높임.

메인 메모리

  • 연산에 이용하는 데이터 저장
  • 개인 컴퓨터 : 수Giga (8GB, 16GB)
  • 대용량 서버 : 수백Giga -> 그래도 전체db를 저장하기에는 태부족, 고가
  • 정전, 시스템 오류 -> 내용 손실
  • 버퍼링 + 데이터 저장

플래시 메모리

  • 비휘발성, 주기억장치보다 저렴
  • 자기디스크 드라이브 대체
  • ssd(solid state drive) (read는 확실히 빠르지만, write는 그냥 그렇다…)
  • ssd에 os 설치된 경우 부팅 빠름
  • 적절한 용량일 경우
  • hdd보다 빠름 -> 데이터 캐시 역할

자기 디스크 저장장치

  • 온라인으로 장기간 데이터 저장을 위한 중심 매체
  • 비휘발성
  • 전체 db저장
  • 저장장치 자체 고장에 따른 데이터 손상 발생 가능 -> 시스템 고장보다 훨씬 적음

광 저장장치

  • CD(compact disk)
  • DVD(digital video disk) : 한면당 4.7G or 8.5G저장. 양면 최대 17G 저장. 블루레이:27G, 더블 레이어 디스크:54G. 광학적으로 저장, 레이저로 읽음. 비디오 저장 뿐만 아니라 임의의 디지털 데이터 저장 가능.
  • CD-ROM, DVD-ROM : 기록 불가
  • CD-R, DVD-R : WORK(write once read many)
  • CD-RW, DVD-RW : write many read many
  • 광학 디스크 주크박스

테이프 저장장치

  • 데이터 백업, 보관용
  • 저렴
  • 순차접근 장치
  • 고용량
  • 테이프 Library, 테이프 Jukebox : 매우 큰 규모 데이터 저장, 인공위성 수집 데이터
  • 여전히 많이 사용되고 있음



분류

1차 저장장치 : 캐시, 메인 메모리

2차 저장장치 혹은 온라인 저장장치 : 디스크 + SSD

3차 저장장치 혹은 오프라인 저장장치 : 자기테이프, 광디스크 주크박스



휘발성 vs 비휘발성



디스크

  • 일정 속도로 회전

  • 크기 대부분 3.5인치, 휴대용 장비는 더 작음

  • 구성 디스크당 판수 1~5 디스크 표면 -> 트랙 -> 섹터 디스크 면당 트랙 수 : 50000~100000 트랙 당 섹터 수 : 내부는 500~1000, 외부는 1000~2000 섹터 : 디스크로부터 읽고 쓸 수 있는 가장 작은 단위. 보통 512바이트 블락(block)은 여러개의 섹터로 구성 섹터의 크기는 기계적으로 정해져있지만, block은 섹터 크기의 배수 형태로. 섹터는 기계적 물리적이고, 블락은 논리적, 추상적이다. Database -> file -> block
  • 판독-기록 헤드 자기적으로 섹터위에 데이터를 기록 각 면당 헤드를 가짐 판 표면 위를 움직이며 다른 트랙을 접근 디스크 암이라는 하나의 조립대에 연결됨 모든 디스크판 위의 헤드는 함께 움직임 : 모든 디스크의 i번째 트랙의 집합은 i번째 실린더 디스크 표면을 micron 거리만큼 떠 있음 : 충돌 시 데이터가 파괴됨.



디스크 컨트롤러

  • software

  • 컴퓨터시스템과 디스크 드라이버의 하드웨어를 연결

  • 디스크 드라이브 내에 구현

  • 섹터 읽고, 쓰기 위한 고수준 명령어를 받아서 디스크 암을 정확하게 해당 트랙에 이동해 실제 데이터를 읽고 쓰도록함.

  • 각 섹터에 checksum 점검 : 오류 발생 시 읽기를 몇 차례 시도한 후 오류 여부를 판단

  • 컴퓨터시스템과 연결을 위한 공용 인터페이스 PATA(Parallel ATA), IDE  확장기기, 전송속도 한계, 40,80개 가닥, 46cm​ SATA(Serial ATA)(1.5Gb/s), SATA 2(3Gb/s), SATA 3(6Gb/s): 7가닥, Hot swap​ SCSI(Small Computer System Interconnect)(640Mb/s): 서버용 ​ SAS(Serial Attached SCSI)(3Gb/s), SAS2(6Gb/s): SATA와 SCSI의 장점 모음​ Fiber Channel Interface​
  • SAN(Storage Area Network): 많은 디스크들이 고속 네트워크에 의해 서버들과 연결​ 여러 서버들에 의한 디스크 공유​ 디스크 구성: RAID(Redundant Arrays of Independent Disks)​ 통신: SCSI, Fiber Channel Interface​



하드 디스크 성능 측정

엑세스 시간과 데이터 전송속도가 중요.

  • 액세스 시간(Access Time)​ 읽기/쓰기 요구부터 데이터 전송시작까지 시간​ 탐색시간 + 지연시간 (탐색시간이 중요한 요소)​. 8msec ~ 20msec​ 탐색시간(Seek Time)​ : 디스크 암을 원하는 실린더에 위치시키는 시간​. 2msec ~ 30msec​ 평균탐색시간​ : 최악 탐색시간의 1/3 정도​. 4msec~10msec​ 회전지연시간(Rotational Latency Time)​ : 헤드가 원하는 트랙에 도달한 후 원하는 섹터가 헤드 아래에 오는데 걸리는 시간​. 4msec ~ 11msec​ 평균회전지연시간: 회전지연시간의 ½​ 회전 지연 시간은 어떻게 할 수 없지만, 탐색 시간은 컨트롤 할 수 있음. 디스크 컨트롤러를 통해 seek time 줄여줄 수 있음.


  • 데이터 전송속도(Data Transfer Rate)​ 첫 섹터가 접근된 후 데이터가 디스크로부터 R/W 되는 속도​ 초당 25Mb ~ 100 Mb(안쪽이 바깥쪽보다 낮음)​


  • MTTF(Mean Time To Failure)​ 평균적으로 디스크가 아무 실패 없이 계속 동작할 수 있는 시간​ 일반적으로 5년 정도



block

파일 입출력 단위로 고정된 수의 (물리적으로) 연속적인 섹터들 크기는 섹터크기의 배수로 512Bytes ~ 수K Bytes로 일반적으로 4~16K Bytes block이 모여서 file이 됨.

블록에 대한 요청​은 순차적 접근과 임의적 접근이 있음. 순차적 접근은 seek time이 한번만 발생해 더 빠름.

  • 순차적 접근​ 일련의 요청이 같은 트랙 혹은 인접한 트랙에 있는 연속적인 블록들을 접근​ 첫 요청에만 탐색시간이 발생함​ 가까운 블록을 접근하므로 단위시간당 전송률이 높음​

  • 임의적 접근​ 일련의 요청이 디스크상의 임의 위치들을 접근하도록 함​ 각 요청마다 탐색시간이 요구됨​ 단위시간당 전송률이 낮음

디스크 블록 액세스 최적화

디스크 암 스케줄링(Disk Arm Scheduling) 블록에 대한 요구를 헤드가 지나가는 순서대로 요구함​ 디스크 컨트롤러가 블록 요구 순서를 재구성​ 디스크 컨트롤러는 디스크 블록 구성, 디스크 판의 회전 위치, 디스크 암 위치 등을 상세하게 알고 있으므로 가능함​ 원하는 블록이 다른 실린더에 있을 경우 디스크 암의 움직임을 최소화​ 승강기 알고리즘(Elevator Algorithm)​

버퍼링(Buffering)​ 디스크로부터 읽어 온 블록을 나중을 대비하여 메모리 버퍼에 임시로 저장​

미리 읽기(Read Ahead)​ 블록에 대한 요청이 없더라도 동일 트랙 내 연속적인 블록을 일단 읽어 들임​ 순차적 접근에 유리



파일구성

파일은 논리적, 블록도 논리적.

  • 블록 액세스 시간을 줄이기 위하여 예상되는 데이터 액세스 형태에 부합하게 디스크에 블록을 배치​ 한 파일이 연속적으로 액세스 될 것으로 예상될 경우 그 파일의 모든 블록을 인접한 실린더에 연속적으로 배치​

디스크컨트롤러가 어디가 비어있는지 알고있다. 그래서 빈 곳에 저장해 순차탐색이 가능하게 한다.

  • 현재 대부분의 OS들은 다중의 연속적인 블록을 한번에 파일에 할당함​ 하지만, 시간이 지나면 삽입, 삭제를 통해 단편화(Fragmentation) 발생해 연속적인 액세스는 디스크 암의 이동 경로를 길게 한다.

  • 조각모음(Defragmetation)​ 디스크에 있는 데이터 백업 본을 구성해 디스크 전체에 다시 저장​ 이때, 각 파일의 블록을 연속적으로 다시 기록​ -> 성능향상

플래시 저장장치

NOR 플래시, NAND 플래시가 있다.

NAND 플래시가 NOR 플래시 보다 저렴하고 많은 용량 제공 -> NAND 플래시 사용

NAND 플래시

  • 자기디스크 보다 더 빠른 임의접근 제공​ : 데이터 페이지를 1~2 us 이내 검색​ (플래시에서의 페이지는 디스크에서의 섹터와 유사한 개념​) 전송속도: 100 ~ 200MB/s -> 디스크 전송속도에 근접​

  • 쓰기작업​ : 다소 복잡: 수 ms 소요​ 한 곳에 쓰기가 이루어지면 그 곳에 덮어쓰기를 할 수가 없고 지우고 다시 쓰기를 해야 함​ 동일 페이지당 지우기 횟수에 제한이 있음: 100,000 ~ 1,000,000회​로 초과 시 오류 발생 가능성 높아짐​