자기 디스크(Magnetic Disks)
는 현대 컴퓨터 시스템에서 secondary storage
의 대부분을 제공한다.자기 디스크의 용량
은 해마다 점차 증가하고 있지만
거대한 응용 프로그램이 요구하는 용량은 더 빠르게 증가하고 있어서 어쩔 때는 디스크의 용량을 앞지를 때도 있다.
최근에 SSD 저장장치
의 용량이 빠르게 증가했고 비용도 감소하고 있다. SSD
가 속도와 용량이 같이 늘어나면서 자기 디스크의 경쟁자
가 되었다.
하지만, SSD의 바이트 당 비용
이 자기 디스크의 바이트당 비용보다 6~8배 비싸다는 사실
때문에 자기 디스크가 여전히 선택받고 있다. 물론 점차적으로 기업용 데이터에서 SSD도 선택받고 있다.
1. Physical Characteristics of Disks
12.2
는 자기 디스크의 전체적인 그림을 보여준다. 12.3
은 실제 자기 디스크의 내부를 보여준다.
- 플래터(platter)
- 각 디스크의
플래터(platter)
는 평평하고 원형 모양 플래터의 두 개의 표면
은 자기 성질로 덮여 있고 정보들은표면에 저장
된다.- 플래터는
rigid metal 또는 glass
로 만들어졌다.
- 각 디스크의
- 드라이브 모터
- 디스크를 사용할 때
드라이브 모터
는 일정하게 고속으로 회전한다. - 보통 1분당 5400 ~ 10000회 회전한다.
- 디스크를 사용할 때
- track & sector
디스크의 표면
은 논리적으로track
으로 나뉘어진다.track
은sector
로 나뉘어진다.sector
란 디스크에서 읽어오거나 작성될 수 있는 정보의 가장 작은 단위sector의 크기
는 보통512바이트
이고 지금 나오는 디스크는 20억 ~ 240억개의 섹터를 갖고 있다.spindle
과 가까이에 있는inner track
은outer track
보다 길이가 더 작고 트랙의 개수도 적다.
- read-writer 헤더
- 플래터의 표면 위에 있다.
- 자기 재료의 자화 방향의 반전시켜서
sector에 대한 정보
를 자기적으로저장
- 플래터를 가로지르면서 움직인다. 왜냐하면, 플래터의 각 면은
다른 트랙에 접근
하고 싶기 때문이다.
- disk arm
- 대부분의 디스크는 여러 개의 플래터를 갖고 있고 모든 트랙의 read-write 헤더는
disk arm
이라고 불리는 단일 어셈블리에 장착되어 함께 이동 spindle에 장착된 플래터
와디스크 암에 장착된 헤드
는head-disk assemblies
라고도 알려져 있습니다.
- 대부분의 디스크는 여러 개의 플래터를 갖고 있고 모든 트랙의 read-write 헤더는
- cylinder
플래터 위에 있는 헤드
가i번째 트랙에 있을 때
다른 플래터 위에 있는 모든 헤드들이 같이 움직이기 때문에 다른 플래터 위에 있는 헤드들도 각각의 플래터의 i번째 트랙에 위치하게 된다. 그래서 모든 플래터의 i번째 트랙은i번째 cylinder
라고 불린다.
read-write 헤더
는 recording density
를 증가시키기 위해서 최대한 표면과 가까이 있도록 유지된다. 헤드
는 일반적으로 디스크 표면으로부터 마이크론(micron) 단위로 떠있거나 날라다닌다. 디스크의 회전
으로 인해 작은 바람이 생성되며, 헤드 어셈블리는 바람이 헤드를 디스크 표면 바로 위로 떠있을 수 있도록 만들었다. 헤드가 표면과 굉장히 가까이 붙어 있기 때문에 플래터
는 굉장히 평평하게 만들어져야 한다.
- head crash
- 만약에 헤드가 디스크 표면에 닿는다면, 헤더가 디스크의 기록 매체를 긁어내면서 거기에 저장되어 있던 데이터를 파괴시킴
- 요즘에는 저장 매체로 얇은 자기 철을 사용해서 디스크를 고장낼 확률이 굉장히 낮아졌다.
- Disk Controller
디스크 컨트롤러
는 컴퓨터 시스템과 디스크 드라이브의 실제 HW 사이의인터페이스 역할
- 현대의 디스크 시스템에서는
디스크 컨트롤러
가 디스크 드라이브 유닛 내부에 구현되어 있음 디스크 컨트롤러
는고수준의 명령들
을 입력받는다.- ex) 섹터를 읽고 쓰거나 액션(ex. 디스크 암을 오른쪽 트랙으로 이동시키기)을 초기화 하는 등의 명령
- 기록된 각 섹터에
체크섬
을 첨부한다.체크섬
은 섹터에 기록된 데이터로부터 계산된다.- 섹터를 다시 읽어들였을 때, 컨트롤러가 불러왔던 데이터로 부터 체크섬을 다시 계산해서 기존 데이터와 바뀐점이 있는지 비교하기 위해서 사용한다.
- 데이터가 바뀌었다면 높은 확률로 새롭게 계산된 체크섬이 저장된 데이터와 맞지 않다는 뜻이다.
- 오류가 발생했다면 계속해서
읽기를 재시도
할 거고 이게 계속되면읽기 실패(read failure)
라는 사인을 전달한다.
디스크 컨트롤러
가나쁜 섹터들을 다시 매핑
하는 역할도 수행- 디스크 컨트롤러가 디스크를 처음으로 포맷하거나 섹터를 기록(write)하려고 할 때
- 섹터가 망가졌다는 걸 발견했다면 논리적으로
해당 섹터
를다른 물리적 위치
와 매핑시킨다. (이를 위해 별도로 할당된 여분의 섹터 풀에서 할당된다) - 디스크에서 다시 매핑하는 건
비휘발성 메모리
이고write
는 새로운 물리적 위치에서 수행된다.
2. Performace Measures of Disks
디스크의 품질을 결정하는 요소는 용량
, 접근 시간
, 데이터 전송 속도
, 신뢰성
이다.
Access time (접근 시간) : 읽기/쓰기 요청이 발생
하고나서 데이터 전송을 시작
할 때 까지 걸린 시간
디스크의 주어진 섹터에 있는 데이터에 접근하기 위해서disk arm
은 올바른 트랙으로 위치하기 위해서먼저 이동
하고 나서 디스크가 회전함에 따라 섹터
가 disk arm 아래로 나타날 때 까지
대기한다.
Seek time : disk arm
이 재위치하는 시간
당연히 움직이는 거리만큼 seek time
은 증가할 것이다.
대부분 seek time
은 움직은 거리에 따라서 2 ~ 20밀리초가 소요된다.
평균 Seek Time
만약, 모든 트랙이 똑같은 개수의 섹터
를 갖고 움직임을 시작하거나 멈추기 위해서 헤드에 필요한 시간을 고려하지 않는다면평균적인 seek time
은 최악의 seek time의 1/3
임을 볼 수 있다.
이를 통해 평균적인 seek time
은 최대 seek time의 절반 가량의 시간
이라고 할 수 있다. 현재는 4 ~ 10 밀리초가 걸린다.
Rotational Latency Time : 헤드가 원하는 트랙에 도착하고 헤드 아래에 접근하고자 한 섹터가 나타날 때 까지 대기한 시간
디스크의 회전 속도는 1분에 5400번 ~ 15000번이다. 평균적으로 원하는 섹터의 시작(beginning)이 헤드 아래에 나타나기 위해 디스크 회전의 절반이 필요하다. 그러므로 평균적인 지연 시간
은 전체 회전 시간의 절반
이 된다.
따라서, 접근 시간 = seek time + latency (평균적으로 5 ~ 20 밀리초가 소요된다)
Data-Transfer Rate(데이터 전송 속도)
접근하고자 한 데이터의 첫번째 섹터가 헤드 아래에 도착했다면 데이터 전송을 시작
한다.
데이터 전송 속도
는 데이터를 디스크에서 검색하거나 디스크에 저장하는 속도를 의미한다. (지금은 초당 50 ~ 200 MB의 속도를 지원)
전송 속도는 디스크의 내부 트랙의 최대 전송 속도보다 훨씬 낮다. 왜냐하면 내부 트랙은 섹터가 적기 때문이다.
ex) 최대 전송 속도가 초당 100 MB
인 디스크는 내부 트랙
에서 지속적인 전송 속도가 약 30MB/초 정도일 수 있다.
Disk Block
디스크의 입출력 요청은 대부분 파일 시스템에 의해서 만들어지지만 데이터베이스 시스템에 의해서도 만들어질 수 있다.
각 요청은 디스크에 있는 참조되어야 할 주소값을 특정한다. 그 주소는 block number
라는 형식을 갖는다.
disk block
은 스토리지 할당과 읽어오기(retreival)
에 대한 논리적 단위
이다. block의 크기
는 대체로 4 ~ 16KB
이다.
데이터는 디스크와 메인 메모리 사이에서 블록 단위
로 전달된다.
비록, 상황에 따라 다른 의미를 가질 수 있지만 page(페이지)
라는 용어를 block
을 부를 때 종종 사용한다.
디스크에서 블록을 요청하는 순서(sequence)를 2가지로 나눌 수 있는데 이에 대해서 살펴보자.
Sequential Access Pattern(순차적 접근 패턴)
이 패턴에서는 연속된 요청
이 연속된 블록 번호에 대한 것
으로, 해당 번호들은 동일한 트랙이나 인접한 트랙
에 위치해 있다.순차적 접근
에서 블록을 읽기 위해서 첫 블록
에 대해서는 disk seek
이 필요하지만, 그 이후의 연속된 요청들은 disk seek
을 할 필요가 없다. 또는 근접한 위치에 있기 때문에 굉장히 빠른 disk seek
을 할 수 있다.
때문에 순차적 접근 패턴
은 데이터 전송 속도
가 가장 빠르다. 왜냐하면, seek time
이 가장 작기 때문이다.
Random Access Pattern (무작위 접근 패턴)
이 패턴에서는 연속된 요청
이 디스크에 무작위로 위치한 블록
에 대한 것이다. 각각의 요청은 disk seek
이 필요하다.
초당 I/O 연산(I/O opertion Per Second; IOPS)
의 횟수 즉, 1초에 디스크에서 이뤄지는 무작위 블록 접근 횟수는 접근 시간
, 블록 사이즈
, 데이터 전송 속도
에 따라 달라진다. 현재 세대의 디스크는 4KB의 블록 사이즈를 갖고 있고 50 ~ 200 IOPS를 지원한다.
한 번의 disk seek 마다 작은 양의 데이터만 읽어올 수 있어서 데이터 전송 속도
는 순차적 접근 패턴보다 느리다.
Mean Time To Failure(MTTF) : 디스크의 신뢰성의 척도
디스크의 MTTF는 평균적으로 우리가 시스템에 failure 없이 동작할 수 있다
고 기대할 수 있는 시간의 총합
이다.
오늘날에는 500,000 ~ 1,200,000시간 즉, 57일 ~ 136년의 범위를 나타낸다.
물론 대부분의 디스크는 5년 정도의 기대수명을 갖고 있다. 그리고 몇 년만 지나도 failure가 발생할 확률이 굉장히 높아진다.
'DB System Concepts 7th' 카테고리의 다른 글
[DB] 12-6. Disk-Block Access (1) | 2023.06.17 |
---|---|
[DB] Chapter 12-4. Flash Memory (0) | 2023.06.14 |
[DB] Chapter 12-2. Storage Interfaces (0) | 2023.06.06 |
[DB] Chapter 12-1. Overview of Physical Storage Media (0) | 2023.06.06 |
[DB] Part 5. Storage Management and Indexing (0) | 2023.06.04 |