하루살이 개발자

[데이터베이스시스템] 12. 물리적 저장 장치 시스템 본문

Backend/DB

[데이터베이스시스템] 12. 물리적 저장 장치 시스템

하루살이 2022. 3. 8. 14:27

1. 물리적 저장 장체 매개 

 

1) 캐시

- 저장 장치 중 가장 빠르고 비쌈

- 크기가 상대적으로 작다

- 컴퓨터 시스템 하드웨어가 캐시의 사용을 관리한다.

 

2) 메인 메모리

- 연산에 사용할 데이터를 저장하기 위한 저장장치

- 휘발성(정전이나 시스템 충돌이 발생하면 데이터 다 날라감)

- 범용의 기계어도 메인 메모리에서 동작한다.

- 개인 PC상에 수 기가바이트의 저장할 수 있으면, 큰 서버 시스템에서 수백에서 수천 기가바이트 데이터를 메모리에 저장할 수 있다.

 

3) 플래시 메모리

- 비휘발성

- 메인 메모리에 비해 바이트당 비용이 낮지만 자기 디스크보다는 비쌈

- USB 메모리(플래시 드라이브)에 많이 사용함

- SSD(solid-state drive)는 내부적으로 플래시 메모리를 사용하여 데이터를 저장하지만, 자기 디스크와 유사한 인터페이스를 제공하여 데이터를 블록 단위로 저장하거나 검색할 수 있다.

 

4) 자기 디스크 저장 장치

- 하드디스크(HDD)

- 온라인으로 장기간 데이터를 저장하기 위한 주된 매체임

- 비휘발성

 

- 자기 디스크에 저장된 데이터에 접근하려면, 먼저 시스템은 데이터에 접근할 수 있는 디스크에서 메인 메모리로 데이터를 이동시켜야 한다.

- 이후 시스템이 지정한 작업을 수행한 후 수정된 데이터를 디스크에 기록해야 한다.

 

- HDD는 SSD보다 훨씬 저렴하지만, 초당 지원 가능한 데이터 접근 연산 수 측면에서 더 낮은 성능을 가진다.

- 비싸더라도 SSD 사자!

 

5) 광학 저장 장치

- DVD(digital video disk): 레이저 광원을 사용하여 데이터를 쓰고 다시 읽는 광학 저장매체

- 비디오 데이터 저장, DB 콘텐츠 백업을 포함하여 모든 유형의 디지털 데이터 저장 가능

- DVD는 특정 데이터에 접근하는 데 자기 디스크에 비해 오래 걸린다 -> 활성 중인 DB 데이터를 저장하는데 비효율적

 

6) 테이프 저장 장치

- 주로 데이터 백업 보관

- 자기 테이프는 디스크보다 저렴하고 수년 동안 데이터를 안전하게 저장할 수 있음

- 하지만, 테이프 시작부터 순차적으로 접근해야해서 데이터 접근이 매우 느림(그래서 순차 접근 저장장치라 불린다)

 

2. 저장 장치 계층

고려사항

1) speed with which data can be accessed 데이터 접근 속도

2) cost per unit of data 단위 데이터 당 비용

3) reliability 신뢰성

 

저장 장치 계층

- 높은 계층일 수록 비트당 비용은 증가하고, 접근시간은 빨라짐

- 낮은 계층일 수록 비트당 비용은 감소하고, 접근시간은 느려짐

 

- 느린 디바이스: 용량 큼

- 빠른 디바이스: 용량 작음 

 

저장 장치 계층 분류(높은 계층 부터 1차)

1) Primary Storage 1차 저장 장치

- cache 캐쉬

- main memory 메인 메모리

 

2) Secondary Storage 2차 저장 장치/ online storage온라인 저장 장치: 대부분 DB

- flash memory 플래시 메모리

- magentic disk 자기 디스크

 

3) Tertiary Storage 3차 저장 장치/ offline storage 오프라인 저장 장치: 백업용!

- optical disk 광디스크

- magnetic tapes 자기 테이프, 주크박스

 

- archival storage 아카이브 스토리지로도 사용됨

 

* 위의 계층에서 메인 메모리를 기준으로

위쪽(캐쉬): 휘발성

아래쪽: 비휘발성

 

3. 저장 장치 인터페이스

 

넘어감

 

4. 자기 디스크(하드디스크)

단단한 원형 디스크(65~95mm 직경)로 구성된 자기적 저장 장치 

3. 디스크의 물리적 특성

- 디스크 판(platter, 플래터)은 납작한 원형임

- 디스크의 양쪽 표면은 자기적인 물질로 덮여있고 정보는 이 표면에 기록됨

- 디스크 판은 단단한 금속이나 유리로 만들어짐

 

- 디스크가 사용 중일 때 드라이브 모터는 일정한 고속으로 디스크를 회전시킴

 

- 디스크 표면은 track(트랙)으로 나뉘고, 각각의 트랙은 다시 일정 크기의 sector(섹터)로 나뉜다.

- sector: 디스크로부터 읽고 쓸 수 있는 정보의 가장 작은 단위

- (내부 트랙 길이,섹터 수) < (외부 트랙 길이, 섹터 수)

 

* sector가 기본적으로 read-write head 밑을 지나갈 때, 회전축에 의해 platter가 회전한다.

   -> sector들이 head 밑에 회전하며 지나간다. 이때, data가 읽히거나 disk로 write된다.

 

- 판독 기록 헤드(read-write head): 자기 물질의 자화와 반대 방향으로 회전하면서 자기적으로 섹터 위에 정보를 저장한다.

 

- 디스크 판(platter)의 각 면은 판독-기록 헤드를 가지고 있는데, 헤드는 판 표면을 움직이며 다른 트랙으로 접근할 수 있도록 한다.

- 디스크는 일반적으로 많은 판을 포함하고, 모든 트랙의 판독-기록 헤드는 disk arm 이라는 하나의 어셈블리 위에 올려져 있으며 다 같이 움직인다.

- 스핀들 위에 놓여 있는 디스크 판과 디스크 암 위에 놓여있는 헤드를 합쳐 헤드-디스크 어셈블리(head-disk assembly)라 한다.

- 모든 디스크 판 위에 있는 head는 다 같이 움직이기 때문에 하나의 판 위의 헤드가 i 번째 트랙에 있을 때 모든 다른 판 위에 있는 헤드도 i 번째 트래 위에 있다.

- 따라서 모든 디스크 판의 i 번째 트랙을 i 번째 cylinder(실린더)라 부른다.

 

4. 디스트 성능 측정

 

디스크 성능 측정은 용량, 접근 시간, 데이터 전송 속도와 신뢰성에 대해 이루어짐

 

1) 접근 시간(access time)

- 읽기/쓰기 요구를 받았을 때부터 ~ 데이터가 전송되기 시작할 때까지의 시간

 

2) 탐색 시간(seek time)

- 디스크의 특정 섹터에 있는 데이터에 접근(읽기/쓰기)하기 위해서는 먼저 암을 정확한 트랙 위로 움직여야 함

- 이후에 디스크가 회전하면서 섹터가 이 암 아래에 나타날 때 까지 기다린다. (seek time 탐색시간)

- 탐색 시간은 암이 움직여야 하는 거리에 비례하여 증가함

- 작은 디스크일 수 록 헤드가 적은 거리를 이동하기 때문에 적은 탐색 시간이 걸림

 

3) 평균 탐색 시간(average seek time)

- 균등하게 분산된 임의의 요구를 측정한 탐색 시간의 평균 값

- 모든 트랙이 같은 수의 섹터를 가지고 있고 헤드가 움직이기 시작해서 멈출 때 까지 요구되는 시간을 무시하면 평균 탐색시간은 최악(worst case)의 탐색 시간의 1/3이 된다.

- 평균 탐색시간은 최대 탐색 시간의 1/2이 된다.

 

4) 회전 지연 시간(rotational latency time)

- 헤드가 원하는 트랙에 도달한 뒤 섹터가 헤드 아래에 와서 접근할 수 있을 때까지 기다리는 시간

 

5) 평균 지연 시간(average latency time)

-  평균적으로, 원하는 섹터가 헤드 아래에 나타나기 위해 디스크의 반 바퀴 회전이 요구되므로 평균 지연시간은 디스크 전체 회전 시간의 1/2이다.

 

* 접근 시간 = 탐색 시간 + 지연 시간

 

6) 데이터 전송 속도(data-transfer rate)

- 데이터를 디스크로부터 검색하거나 디스크에 저장될 수 있는 비율

- 바깥쪽 트랙이 안쪽 트랙보다 더 많은 수의 섹터를 포함함 -> 실제 전송 속도는 디스크의 안쪽 트랙에 대한 최대 전송 속도보다 낮음

안쪽 섹터 수 < 바깥쪽 섹터 수

안쪽 전송 속도 > 바깥쪽 전송 속도

 

* seek time, 회전 지연시간(rotation delay, rotation latency) <- I/O 시간이 오래 걸리는 이유

 

5. Performance Measures

- 일반적으로 파일 시스템에서 디스크 I/O를 요청하지만, DB 시스템에서 직접 생성할 수도 있다.

- 각 요청은 참조할 디스크의 주소를 지정함(해당 주소는 블록 번호 형식)

- disk block 디스크 블록은 저장 장치 할당 및 검색의 논리적 단위이며(data 단위) 블록 크기는 4~16킬로바이트 *

 

- smaller blocks: 작은 blocks -> more transgers(I/O 입출력 횟수)

- larger blocks: more space wasted due to partially filled blocks

* blocks의 크기는 크다고 좋은게 아니라 각각 장단점 있음

 

- 디스크와 메인 메모리로 간에 블록 단위로 데이터를 전송함

- 블록(의 집합) = 페이지 page(여기선 같게 봄)

 

 

디스크 블록에 대한 일련의 접근 요청 방법 2가지

1) 순차적 접근 유형(sequential access pattern)

- 연속적인 접근 같은 트랙, 인접트랙에 있는 연속적인 블록 번호에 대한 것

- 블록을 읽으려면 첫 번째 블록에 대한 디스크 탐색(disk seek)이 필요하지만 연속적인 요청에는 탐색이 필요 없거나 멀리 있는 트랙 탐색보다 더 빠른 인접 트랙 탐색이 필요할 수도 있다.

-> 한 번 실행되고 나면 같은 반경의 track에 대한 접근은 추가 시간 없이 접근 가능하다.

 

- 데이터 전송률이 가장 높다(탐색시간이 최소이기 때문)

 

2) 임의 접근 유형(random access pattern)

- 연속적인 요청의 디스크 상에 있는 임의의 블록에 대한 것이다. 

 

- 이러한 각 요청에는 탐색이 필요하다. 초당 I/O 연산 수, 즉 디스크에서 초당 가능한 임의의 블록에 대한 것이다.

- 초동 I/O 연산 수(IOPS), 즉 디스크에서 초당 가능한 임의 블록 접근 수는 접근 시간, 블록 크기 및 디스크의 데이터 전송 속도에 따라 다름

- 4킬로바이트 블록 크기의 현세대 디스크는 모델에 따라 50~200의 IOPS를 지원함 -> 탐색 당 소량(1블록)의 데이터만 읽히기 때문에 데이터 전송 속도는 순차적 접근 유형보다 임의 접근에서 훨씬 효율적임

 

- 랜덤 -> 각 block을 접근할 때마다 seek 발생 -> transfer rates are low since a lot of time is wasted in seeks

 

* I/O : disk에 있는 block을 beffer로 data를 왔다갔다 -> 수정된 data를 update 함

 

 

정리