데이터베이스와 밀접한 관련이 있는 데이터 저장매체 인 디스크구조 및 동작방식에 대해

알아보자.

 

디스크는 자기 디스크 플래터로 구성돼있으며 데이터를 트랙에 자기적으로 저장한다.

디스크 안팎으로 움직이는 전기자에 끝에 부착된 헤드가 회전하는 디스크를 읽고 쓰는데

플래터당 하나의 헤드가 존재해 플래터 집합인 디스크는 여러 헤드(전기자에 부착된)

가질 수 있다. 또한 헤드와 전기자는 모두 연결돼있어 모든 헤드는 데이터를 동시에 트랙에

읽고 쓴다.

디스크 헤드가 섹터의 데이터를 읽기 위해서는 섹터가 헤드 바로 아래에 있어야 하는데,

디스크는 항상 회전하므로 섹터가 그 위치에 올 때까지 기다려야 한다. 이때 디스크가

데이터를 읽을 수 있는 위치로 회전하는데 걸리는 시간이 회전 대기 시간(Rotation latency)이다.

보통 15000rpm 디스크의 평균 회전 대기 시간은 약 2ms 정도이다.

위 회전 대기 시간외에 헤드가 데이터가 존재하는 곳 즉 디스크 전기자가 요청된 데이터를

가지는 실린더로 이동하는 시간을 탐색시간(seek time)이라 한다.

(실린더는 디스크 플래터들의 동일한 트랙 집합이다.)
disk_1.jpgdisk_2.jpg

디스크 동작을 완료하는데 걸리는 시간은 다음의 총합이며

-데이터를 가지는 트랙으로 이동하는데 걸리는 탐색시간(Seek Time)

-데이터를 헤드 아래로 회전시키기 위해 필요한 회전 대기시간(Rotational latency)

-디스크 드라이브에서 디스크 컨트롤러로 데이터를 전자적으로 전송하기 위해 필요한 시간

 

I/O 완료는 여기에 시스템 오버헤드(매우 포괄적인)를 더한 시간이다.

디스크I/O완료에 걸리는 시간은 요청된 I/O가 순차 방식인지 임의 방식인지에 따라 영향을

받으며 순차적 I/O성능은 트랙간 탐색 시간에, 임의I/O성능은 평균 탐색시간에 의해 좌우된다.

 

순차적 I/O(Sequential I/O)

디스크의 인접한 데이터의 액세스로 임의 I/O보다 트랙간 탐색 시간이 빨라 더 많은 양을

보다 빨리 처리할 수 있다.

 

임의 I/O(Random I/O)

디스크의 서로 다른 부분으로부터 액세스될 때 발생하며, 임의의 헤드이동이 발생해 성능을

감소시킨다.

 

엘리베이터 정렬(Elevator Sorting)

임의 I/O동적이 발생하면 헤드가 디스크 사이를 임의로 이동하여 대기시간이 증가하는데

RAID컨트롤러는 임의 탐색을 보다 효과적으로 처리하기 위해 엘리베이터 정렬을 지원한다.

엘리베이터정렬은 다중I/O가 컨트롤러에 큐잉될 때 이동을 최소화하기 위해 정렬 된다.
disk_3.jpg

위 그림처럼 현재 위치에서 정렬된 순서로 경로를 찾아 전체적인 디스크탐색시간을 줄여준다.

 

컨트롤러 캐시

I/O성능 향상을 위해 디스크컨트롤러에 존재하는 메모리로 디스크에 저장된 데이터의 일부를

저장하는 버퍼이다. 요청한 데이터 흐름은 아래와도 같을 것이다.


disk_4.jpg

컨트롤러는 데이터를 캐시로 기록하고 운영체제에게 I/O 완료를 알리고 비동기적으로 디스크에

기록된다 이로 인해 쓰기속도를 향상시킨다.

컨트롤러 캐시는 미리읽기(Read-ahead)를 지원하는데 대량의 데이터 요청 시 요청된 데이터

외에 다음 데이터도 곧바로 읽힐 것이다라고 예상하고 다음데이터의 일부도 같이 가져가는 작업

을 한다.



이 게시물을..