디바이스의 메이저/마이너 번호(Major/Minor Number)
디바이스 드라이버(device driver)는 운영체제와 애플리케이션 미 하드웨어 간의 연결(이를 인터페이스(interface)라 한다)을 담당하는 프로글맴을 말한다. 하드웨어가 해당 운영체제 아래에서 제대로 작동하는데에 꼭 필요한 프로그램이다. 이를 보통 드라이버(driver)라고 줄여 표현한다.
일반적으로는 컴퓨터에 접속하는 주변장치를 제어하기 위한 운영체제(OS)의 일부를 이루는 프로그램이라고 하며, 특정 비출력을 제어하기 위한 프로그램의 루틴을 포함한다.
외부 장치에 대한 일반적인 연결은 다음과 같다.
애플리케이션 <----> 디바이스 드라이버 <----> 하드웨어
보통 디바이스 드라이버를 설명할 때 기본적으로 사용하는 연결 구조도 이다. 하드웽가 있고 그 안에 애플리케이션이 실행되는데, 애플리케이션에서 직접 하드웨어를 제어하는 것이 아니라, 디바이스 드라이버를 통해 하드웨어를 제어한다.
그러나 디바이스에 따라 디바이스 드라이버도 달라진다(만든 회사가 다를 수 있기 때문이다). 장치를 쉽게 다룰 수 있도록 디바이스 드라이버까지 만들어서 제공해 준 까지는 좋지만, 사용하는 방법이 디바이스 드라이버 마다 매우 다르다면 애플리케이션에게는 부담이 매우 클 것이다.
VERITAS의 경우 다음과 같은 연결 경로를 갖는다.
애플리케이션 <--> VxFS 또는 로우 디바이스 <--> VxVM <--> 하드웨어(LUN, Storage)
실제 데이터가 저장되는 스토리지에 접근하기 위해 파일시스템과 로우 디바이스 형태는 일바적인 디바이스 드라이버와 같은 메커니즘으로 동작한다. VxVM에서는 하드웨어 저장 장치들에 대해 VERITAS에서 제공하는 저장장치를 위한 디바이스 드라이버를 제공한다.
특히, 이의 디바이스 드라이버는 데이터 볼륨 디바이스를 구분하고, 생성된 볼륨들을 구분한다. 이때 데이터 볼륨 디바이스를 다른 디바이스와 구분하기 위한 방법으로 메이저 번호(major number)이며, 각 새성된 볼륨을 구분하기 위해 마이너 번호(minor number)를 사용한다.
예를 들어, 다음은 Linux 플랫폼에서 /dev 디렉터리에 있는 시리얼 포트(serial port)으 내용이다.
(1)의 접근 권한을 보면 crwxrwxrwxㄹ로서 c로 시작한다. c는 character device를 가리키며, 문자 장치임을 가리킨다. b로 시작하는 디바이스는 block device로서 블록 장치를 가리킨다.
(5) 필드의 '4'는 디바이스 종류를 구분하는 메이저 번호(major number)이며,, (6) 필드의 '64, 65, 66, 67'은 마이너 번호(minor number)이다. 즉, 시리얼 디바이스 4에는 현재 4개의 시리열 연결 디바이스를 구현할 수 있음을 의히한다.
디바이스 접근이 이루어 질 때, 커널은 메이저 번호를 다지고 어떤 디바이스 드라이버를 사용할지를 결정한다. 디바이스 드라이버는 커널로부터 받은 정조 중 마니터 장치 번호를 갖는 자기에게 할당된 장치 중 어떤 장치를 제어할 지를 결정하게 된다.
다음은 VxVM의 볼륨 디바이스들의 경우이다.


앞의 /dev/vx/rdsk/oradata에 있는 볼륨 디바이스 내역은 문자 장치(character device)이고, 밑에 있는 것은 /dev/vx/dsk/oradata로서 블록 장치(block device)를 의미한다.
이들은 디스크 그룹 oradata에서 구성된 볼륨들이며, 메이저 번호는 41이다. 그리고, 각 볼륨들은 마이너 번호 11000이 data00으로 시작하고 있다. 즉, 이러한 마이너 번호를 통해 볼륨 디바이스를 구분하는 것이다.
또한 볼륨 마이너 번호를 볼륨의 생성 순서를 확인할 수 있다.
일부 내용은 "http://ssmsig.tistory.com/109"에서 참조하였습니다.