11-3-1. 자원관리-디스크(Hard Disk)
서버의 하드디스크는 ‘관리’되어야 한다. 당신의 회사가 서버로서 PC급의 시스템을 사용하는 것이 아니라 전용서버제품을 구입하여 사용한다면 보다 좋은 선택이라 할 수 있다. 그만큼 비용의 측면이 감수되어야 하지만 보통의 경우 투자한만큼 만족할 만한 성능과 안정성을 보장하기 때문이다. PC급의 시스템을 사용할 때도 적은 투자비용으로 최대의 안정성을 확보하기 위해서 디스크를 효율적으로 관리하는 방법을 찾아보자. 또, 이러한 기술은 윈도우 서버에서 제공되는 소프트웨어적인 기능이기는 하지만 전용서버에서 하드웨어적으로 지원되는 것과 기술적인 측면은 별 차이가 없는 만큼, 이론적으로도 알아둘 만한 내용이다.
디스크를 사용하기 위해 먼저 파티셔닝을 하게 되고, 논리적인 몇 개의 영역으로 나눠서 디스크를 사용하게 되는데, DOS시절에는 어차피 디스크 크기가 커 봐야 1기가도 되지 않았기에 디스크 하나에 파티션 하나만 사용해도 충분했다. 점점 하드디스크의 크기가 커지면서 2개 이상의 파티션을 사용하게 되었고 파티션은 주(Primary) 파티션과 확장(Extended) 파티션이라는 2가지로 구분이 되었다. 첫번째 잡히는 파티션이 주 파티션이 되고 하나의 디스크에는 하나의 주 파티션만 있을수 있다. 주 파티션에 시스템이 부팅하는데 필요한 영역을 담을 수가 있다. 일반적으로 C: 로 사용되는 것이 그것이다. 확장 파티션에는 논리 드라이브라는 이름으로 원하는 만큼 드라이브를 추가하는 것이 가능하다. 그래서 정확히 표현한다면 디스크의 파티션은 ‘주 파티션’과 ‘확장 파티션 내의 논리파티션’이라고 나눌 수가 있겠다. NT부터는 이러한 주 파티션이 하나라는 제한이 아닌 최대 4개까지 생성하는 것이 가능해졌다. 하나의 디스크당 최대 4개의 주파티션을 생성할 수 있다. 혹은 3개의 주파티션과 1개의 확장파티션을 가지는 것도 가능하다. 하나의 디스크에서 5개 이상의 파티션을 필요로 한다면 반드시 후자를 따라야 한다. 하나의 확장파티션을 만든 다음에 그 안에서 논리드라이브를 만드는 방법을 이용해야 한다는 것이다.
Windows 2000부터는 기본디스크로서 시스템의 디스크를 관리하는 것뿐만 아니라 동적디스크로 디스크를 업그레이드하여 ‘볼륨(Volume)’단위로 디스크를 관리할 수 있게 해 준다. 기본디스크로 사용하는 것에 비하여 동적디스크는 디스크확장의 효율성, RAID1, RAID5등으로 디스크 오류제어의 효율성 등을 제공한다.
DOS나 Windows9x에서 디스크를 관리하기 위해서 Fdisk 를 사용해 본 경험이 있을것이다. Windows NT계열의 OS에서는 디스크관리를 위한 특별한 도구가 제공된다. ‘컴퓨터관리’ 관리콘솔을 통해서 접근할 수도 있다<그림11-7>. 그러나 그것보다는 ‘시작à실행’창에서 diskmgmt.msc 라고 입력해 보자. 그러면 ‘디스크 관리’ 도구가 뜨는 것을 확인할 수 있을 것이다<그림11-9>
<그림11-9. 디스크 관리 도구>
이 디스크 관리도구를 통해서 여러가지 정보를 살펴보고 추가작업을 할 수도 있다.
현재 이 시스템에는 하드디스크가 하나있고(디스크0), CD Rom 드라이브 2개가 있다.(CDRom0, CDRom1) 디스크0 는 현재 기본디스크로 설정이 되어 있으며 파티션이 3개가 있는데 C:는 주파티션이고, 일부 영역은 확장파티션으로 구성이 되어 있다. 확장파티션에는 D:라는 하나의 논리 드라이브가 잡혀 있고, 마지막에 7M의 공간은 파티션이 나누어져 있지만 C: D:와 같은 문자열이 할당되지는 않았다. 폴더의 형태로 마운트되어 있는 것이다. 마지막에 있는 ‘새 볼륨’에 마우스 오른쪽 클릭해 보니 몇가지 메뉴가 눈에 띈다. ‘파티션 활성화’를 통하여 Active Partition으로 지정할 수도 있다. 이것은 주 파티션으로 나뉘어 있을때만 가능한 작업이다. 위에서 주 파티션만 시스템 파티션이 될 수 있다고 한 것을 기억하라. D:와 같은 드라이브 문자를 변경할 수도 있으며, 새롭게 포맷을 한다거나, 파티션을 삭제하는 작업들도 가능하다. 구체적인 설명은 하지 않겠다. 인터페이스가 간결하여 쉽게 알 수 있을 것이다.
중요한 내용 하나를 정리하고 가자. 하나의 디스크에 생기는 여러 개의 파티션이 있는데 시스템은 이 파티션마다 번호를 붙여서 각 파티션을 구별하게 된다. 디스크, CPU, 메모리, 확장슬롯 등이 0번부터 번호가 시작되는 것과는 달리 파티션 번호는 1번부터 시작된다. 파티션1, 파티션2… 와 같은 형식을 말한다. 파티션 번호를 붙이는 방법은 디스크마다 별도로 주파티션을 1,2,..등의 순서대로 할당한 다음에 논리드라이브 3,4,.. 의 순서로 정의된다. 순서가 뭐가 중요할까 싶기도 하지만 이것 하나 때문에 시스템이 부팅이 되지 않는 상황까지 생기기도 한다. 잘 정리하자. <그림11-10>을 예로 들어보자.
<그림11-10. 디스크의 파티션 번호 예제>
<그림11-10>의 디스크0을 보면 파티션이 3개로 나뉘어 있는 것을 알 수 있다. 주파티션인 C:와 확장파티션내의 논리드라이브인 D: 그리고 폴더에 마운트된 주 파티션으로 나뉜 볼륨 하나가 있다. 파티션 번호를 붙여보면 첫번째 파티션인 C:는 1번, D:는 3번, 맨뒤의 7M 영역이 2번이 된다. D:가 먼저여서 2번인것처럼 보이지만 뒤의 영역이 주파티션으로 만들어져 있으므로 그것이 2번이 되고, 논리드라이브인 D:는 3번이 할당되는 것이다.
디스크1번을 보면 E:와 F:가 있다. 이들은 각각 디스크1번에 있어 파티션 1번과 파티션 2번을 차지하고 있다. F:는 NT가 설치되어 있는 부트파티션이다. 그 뒤로 2개의 영역이 더 보이는데 이것은 아직 파티션이 구성되어 있지 않기 때문에 파티션 번호가 할당되지 않는다. 이들 2개의 영역을 살펴보면 서로 다르다는 것을 알게 되는데, 그림에서 세번째 영역으로 보이는 1.56GB의 공간은 확장파티션 안에 있는 빈 영역이고, 마지막의 2.93GB의 공간은 아예 할당되지 않은 공간이라고 되어 있다.
위의 상황에서 당신이 만일 확장파티션의 빈공간인 세번째 영역에 G:를 생성했다고 한다면 그 G:의 파티션 번호는 3번이 된다. 기존의 E:와 F:의 파티션 번호에는 영향을 미치지 않는다<그림11-11>
<그림11-11. 논리드라이브 생성시 파티션 번호 변화>
하지만 할당되지 않은 빈공간인 네번째 영역에 G:를 생성하면 상황은 달라진다. 파티션 번호가 할당되는 것이 논리드라이브보다는 주 파티션이 우선하기 때문에 G:가 2번이 되고 기존의 F:는 2번 대신에 새로운 파티션 번호인 3번이 할당되게 되는 것이다<그림11-12>
<그림11-12. 주파티션 생성시 파티션 번호 변화>
이 결과로 시스템은 부팅할 때 기존의 파티션2번을 찾아서 부팅을 시도하지만 새로운 드라이브가 생기면서 WINNT 폴더를 담고 있는 파티션이 3번으로 변경되었기 때문에 부팅프로그램은 부팅에 실패하게 된다. 이 경우 부팅시 이러한 위치를 지정해 주는 파일인 boot.ini 에 올바른 파티션 번호를 수정해 주어야 한다. 시스템파티션의 루트에 있는(일반적으로 C:) boot.ini 파일을 살펴보면 파티션 번호를 확인할 수 있다. (boot.ini는 숨김, 시스템 속성을 가지고 있는 파일이므로 기본적으로 보이지 않는다. 폴더옵션을 변경하거나 실행창에서 “notepad c:\boot.ini”를 입력하여 파일을 열어본다.) 그러한 파일의 변경을 자동으로 수행하지 않기 때문에 이러한 파일의 사용법등에 대해서는 뒤에서 다시 설명하도록 한다.
보다 효율적인 디스크관리를 위해서는 동적디스크를 사용한다고 했다. 단일 하드디스크를 가진 시스템에서는 특별한 필요성을 찾지 못하지만, PC를 회사의 서버로 사용하고 있는 경우라면 가급적이면 2개 이상의 하드디스크를 장착하고 동적디스크로 업그레이드를 하면 전용서버 부럽지 않은 하드디스크 관리를 할 수 있다.
|
디스크 관리도구에서 디스크의 정보를 나타내는 부분을 마우스 오른쪽 클릭하고 ‘동적디스크로 업그레이드’를 선택한다. |
|
동적디스크로 업그레이드 할 디스크를 선택한다. |
|
업그레이드할 디스크의 목록을 재 확인하고, [업그레이드]버튼을 클릭한다. |
|
이전버전의 OS로는 부팅할 수 없다는 경고메시지이다. 그냥 해 보는 소리가 아니다. 주의해야 할 것이다. |
|
동적디스크는 기본디스크와 디스크 관리방법이 달라진다. 기존의 파일시스템은 볼륨이라는 새로운 단위로 변경되게 된다. 파일시스템을 분리시킨다는 메시지가 나온다. [예]를 누른다. |
|
과정은 모두 마쳤다. 시스템을 재시작하면 업그레이드가 완료된다. |
가장 기본적인 볼륨이다. 아무런 추가설정이 필요없는 단일볼륨을 일컫는다. 기본디스크의 파티션과 차이가 없이 D: E: 등의 문자열을 할당하거나, 폴더에 볼륨을 마운트시키는 것이 가능하다. 이 단순볼륨은 스팬볼륨을 이용하여 공간을 확장하거나, 미러볼륨을 구성할 수 있는 기본적인 하나의 볼륨이 된다.
동적디스크를 사용하면 몇가지 새로운 기능을 구현할 수 있다. 첫번째로 스팬볼륨에 대해서 살펴보자. 스팬볼륨은 이전 버전에서 ‘볼륨셋’이라고 불리웠던 기능이다. 한마디로 설명하면 디스크 공간을 효율적으로 써 보자는 것이다. 기존에 파티션을 잡아서 사용하고 있었는데 공간이 부족할 때 스팬볼륨을 사용해서 파티션을 확장할 수 있다. 또한 2개의 디스크가 있었는데 하나는 200MB, 하나는 300MB가 남았다고 가정했을 때 2개의 공간을 각각 D: E: 형태로 사용하지 않고 500MB 전체를 하나의 D:로 잡아서 사용하는 것이 가능하다.
하지만 공간을 효율적으로 쓰는 것은 가능하지만 스팬볼륨의 멤버로 되어 있는 디스크중 하나만 손상이 되어도 해당 파티션은 쓸 수가 없다는 단점이 있어서 현실적으로 서버에는 권장하지 않는 방법이다. 추가로, 스팬볼륨은 시스템파티션이나 부트파티션에는 구현될 수 없다.
예제를 통해서 스팬볼륨의 구현과정을 알아보자.
|
예제에서는 디스크0번과 1번, 2개의 디스크를 가진 시스템을 보여준다. 디스크0번의 할당되지 않은 4.31GB의 영역을 마우스 오른쪽 클릭하고 ‘볼륨 만들기’를 선택했다. |
|
볼륨종류를 살펴보면 단순볼륨, 스팬볼륨, 미러볼륨, 스트라이프 볼륨이 활성화되어있고, RAID-5 볼륨은 비활성화되어 있는 것을 볼 수 있다. 이어서 설명을 하겠지만 RAID-5볼륨은 최소 3개의 물리적인 디스크가 필요하므로 비활성화된 것이다. |
|
‘디스크 선택’화면에서 왼쪽의 ‘사용 가능한 모든 동적 디스크’에서 스팬볼륨을 구성할 디스크를 선택하고, 크기를 선택하여 [추가>>]버튼을 눌러서 오른쪽으로 선택되도록 한다. 예제에서는 디스크0번에 200MB, 디스크1번에 200MB로 총 400MB의 볼륨을 구성하였다. 두개의 디스크의 사이즈는 같지 않아도 무방하다. |
|
다음부터는 파티션을 생성하는 과정과 차이가 없다. 드라이브 문자를 할당하거나, 하나의 폴더에 볼륨을 마운트시킬 수 있다. |
|
원하는 파일시스템으로 볼륨을 포맷한다. |
|
작업이 완료되었다. |
스트라이프 볼륨은 디스크 I/O(Input/Output) 성능개선을 위해서 제공된다. 자료에 따르면 단순볼륨에 비해 스트라이프 볼륨은 30% 정도의 입출력 성능 개선효과가 있다고 한다. 디스크에 데이터를 기록하는 방식 자체가 다르다. 현실적으로 일반PC에서 사용하는 IDE나 EIDE등의 컨트롤러 타입의 경우는 큰 성능의 증가를 보기는 어렵지만 대부분의 서버제품군에서 사용되는 SCSI 컨트롤러 타입의 경우에는 제대로된 성능향상을 제공한다. 그런 이유로 서버제품에서는 SCSI를 주로 사용하고 있는 것이다.
스트라이프 볼륨을 구성하면 디스크순서대로 데이터를 기록하는 것이 아니라, 64KB단위씩 평행하게 데이터를 병렬로 써 나가게 된다. 예를 들어 두개의 디스크로 스트라이프 볼륨을 구성했다면 첫번째 디스크에 64KB만큼 데이터를 기록하고, 다음엔 두번째 디스크에 64KB단위로 데이터를 기록한다. 다시 첫번째 디스크에 데이터를 기록하기 시작한다. 이렇듯 반복해서 2개의 디스크를 번갈아가면서 기록하기 때문에 입/출력 성능을 높여줄 수 있게 되는 것이다. 에서는 최소 2개에서 최대 32까지의 디스크를 스트라이프 볼륨으로 구성하는 것이 가능하다. 시스템파티션이나 부트파티션에는 구현될 수 없는 방법이다.
이러한 스트라이프 볼륨은 디스크 입/출력 성능을 높여줄 수 있다는 큰 장점이 있지만 역시 하드디스크의 물리적인 오류에 대해서는 아주 민감하다. 스트라이프의 멤버로 된 디스크중 하나만 손상이 되어도 전체 스트라이프 영역의 데이터를 읽을 수가 없게 되기 때문에 소프트웨어적인. 즉 서버 자체적으로 제공되는 스트라이프 볼륨은 현실적으로 사용을 권하지 않는다. 이론적으로만 이해하자. 그렇다면 서버에는 어떠한 기술들을 사용해야 할까? 기본적으로 서버에 요구되는 사항은 디스크중 하나의 디스크가 손상이 되었을 경우에도 오류를 극복(Fault-Tolerance)할 수 있는 방법이 필요한 것이다. 이러한 요구를 위해서 마이크로소프트는 RAID (Redundant Array Independent Disk) 기술을 지원하고 있다. 다음에 소개되는 미러볼륨과 RAID-5볼륨이 바로 그것이다.
하드디스크의 물리적인 결함을 극복할 수 있는 방법은 어떠한 것이 있을까? 어떤일이 있어도 하드디스크가 결함이 생기지 않도록 한다? 좋은 방법이지만 현재로서는 그런 기술은 없다. 그렇다면 다음으로 생각할 수 있는 것은 하드디스크를 ‘하나 더’ 가지는 방법이 있다. 바로 하드디스크를 중복해서 사용함으로써 데이터를 2중으로 가져 가겠다는 것을 뜻한다. 그러한 방법이 바로 ‘미러 볼륨’으로 구현된다.
미러볼륨의 주된 사용용도는 시스템파티션과 부트파티션이다. 시스템파티션은 보통 C:를 일컬으며 부트파티션은 OS가 설치된 폴더가 있는 파티션을 가리킨다. 하나의 디스크에 OS를 설치했을 때 당신은 시스템의 건강을 위해서 지속적으로 서비스팩을 패치하고, 알려진 바이러스를 탐지할 수 있는 도구도 설치했으며 마이크로소프트 웹사이트로부터 지속적으로 핫픽스를 통해서 버그를 패치하고 있다. 하지만, 그런 노력에도 불구하고 하드디스크가 망가지는, 어찌보면 어이가 없을수도 있는 일이 발생한다면 그런 노력은 허사가 되고 만다. 물론 백업된 데이터가 있고, 시스템을 재설치하면 될 일이겠지만 그렇게 하기에는 많은 시간과 수많은 사용자들의 원성을 살 수 밖에 없을것인데 미러볼륨은 간단히 문제를 해결해 줄 수 있다. 동일한 설정, 동일한 데이터를 가진 또 다른 디스크 하나에 복제를 떠 놓겠다는 것이다. 말 그대로 “디스크 미러(거울)”이다.
그렇게 하면 안심이다. 하나의 디스크가 망가졌어도 동일한 내용을 담은 디스크가 하나 더 있으므로 즉시 관리자는 미러된 디스크로 시스템을 재 시작시키면 시스템이 부팅되는 정도의 시간만 있으면 정상적인 서비스를 계속하도록 유지할 수가 있다. 잘 돌아가는 시스템이라고만 생각하면 디스크는 분명히 낭비가 될 수도 있지만, 디스크 하나 더 장착하는 비용으로 믿을만한 서버가 된다면 훌륭하지 않은가? 그것도 수천, 수억원 대의 전용서버가 아니라 고작 1,2백만원 정도의 PC로써 말이다.
미러 볼륨은 2개의 디스크를 필요로 한다. 지금 당신의 서버가 단일디스크를 가진 시스템이라면 당장 디스크를 하나 더 장착하자. 아주 간단히 구현할 수가 있다. 예제를 통하여 캡처한 그림을 참고한다.
<그림11-26. 미러 볼륨 구성 과정 1>
<그림11-26>을 보면 디스크0번부터 디스크2번까지 3개의 디스크를 가진 시스템이라는 것을 알 수 있다. 디스크0번의 C:는 시스템 파티션인 동시에 부트파티션이다. C:에는 Windows Server 2003이 설치되어 있다. 먼저 미러볼륨을 구성하기 위해서 디스크 3개를 모두 ‘동적 디스크’로 업그레이드를 해 두었다. 업그레이드 방법은 “
<그림11-27. 미러 볼륨 구성 과정 2>
미러볼륨을 구성하기 위해서 먼저 미러를 구성할 원본이 되는 볼륨을 마우스 오른쪽 클릭하여 ‘미러 추가’를 선택한다<그림11-27>.
미러볼륨이 될 복제대상 볼륨을 지정해 준다. 예제에서는 디스크1번에 만들겠다고 설정했다. [미러추가]버튼을 클릭한다.
<그림11-29. 미러 볼륨 구성 과정 4>
볼륨을 미러했다는 메시지가 나온다. 아직 끝난 것은 아니다. 중요한 것은 ‘미러 디스크에서 부팅할 수 있게 하려면 boot.ini 파일에 적절한 항목을 추가하라’는 메시지이다. Boot.ini 파일이 시스템이 부팅할 때 필요로 하는 “OS가 설치된 폴더”의 위치를 알려준다. 이 파일에 만일 원본볼륨을 담고 있는 디스크가 물리적으로 손상이 되었을 때 동일한 내용을 복제해 둔 미러볼륨을 통해서 부팅을 할 수 있도록 boot.ini 파일에 그러한 경로를 추가하라는 것을 의미한다.
<그림11-30. 편집된 boot.ini 파일 >
<그림11-30>은 <그림11-29>의 메시지에서 보여주는 것처럼 boot.ini파일을 편집한 그림이다. Boot.ini 파일은 텍스트 파일이다. 메모장으로 열어 볼 수 있는데, 맨 아래의 한줄이 편집된 내용이다. 하이라이트된 부분을 바로 위의 줄과 비교해 보면 rdisk(0)이 rdisk(1)로 바뀌었고, Microsoft Windows 2000 Advanced Server 뒤에 “(Mirror)”이라는 문구가 추가된 것을 알 수 있다. 이제 이 시스템에서 부팅을 하게 되면 당신은 부팅시 이 두가지중 하나를 선택하도록 요구받게 될 것이다. 리스트중 두번째를 선택하면 첫번째 디스크의 원본볼륨을 통해서 부팅하는 것이 아니라, 두번째 디스크의 미러볼륨을 통해서 부팅을 하게 된다.
<참고> Boot.ini 파일의 ARC Path 이해 <그림11-30>의 파일의 내용중 일부를 아래에 옮겨 보았다. multi(0)disk(0)rdisk(0)partition(1)\WINNT=" Microsoft Windows 2000 Advanced Server" /fastdetect multi(0)disk(0)rdisk(1)partition(1)\WINNT="Microsoft Windows 2000 Advanced Server (Mirror)" /fastdetect 이중에서 “multi(0)disk(0)rdisk(0)partition(1)\WINNT” 부분을 가리켜서 ARC (Advanced RISC Computing) Path라고 부른다. NT계열의 OS에서 부팅프로그램인 ntldr은 부팅시 시스템 파티션의 루트에서 boot.ini 파일을 통해서 NT가 설치된 폴더가 어느 파티션에 존재하는지를 결정하게 된다. ARC Path가 실제로 NT가 설치된 파티션을 제대로 지정해 주어야 한다는 것은 당연한 일이다. Multi(0) : 디스크 컨트롤러의 타입과 번호를 나타낸다. 대부분의 시스템이 multi 로 시작된다. IDE, EIDE, SCSI(BIOS가 Enable된 대부분의 SCSI컨트롤러) 컨트롤러를 가진 시스템의 경우는 Boot.ini에서 “Multi” 로 시작되는 ARC Path를 발견할 수 있다. 숫자는 컨트롤러의 번호를 나타낸다. 0부터 시작한다. 또 다른 ARC Path로써 Scsi(0)가 사용되는 경우가 있는데 이것은 BIOS가 disable된 SCSI 컨트롤러일 경우에만 필요하다. ARC Path에 SCSI로 시작될 경우에는 ntldr 부팅프로그램은 시스템 파티션의 루트에서 NTBOOTDD.SYS (NT의 SCSI 드라이버)를 로딩시키게 된다. 요즈음 SCSI로 시작되는 ARC Path를 발견하기는 쉽지 않다. 사실 필자도 아직 Multi가 아닌 SCSI로 시작되는 ARC Path를 한번도 보지 못했다. Disk(0) : 첫번째 문구에 SCSI로 시작되는 경우에만 요구된다. Multi로 시작될 때는 disk(0)으로 그대로 두면 된다. Rdisk(1) : 디스크 컨트롤러에 연결된 몇번째 하드디스크인지를 나타낸다. 0부터 시작된다. Rdisk(1)은 두번째 디스크임을 의미한다. Partition(1) : 각 디스크마다 할당되는 파티션 번호를 나타낸다. 1부터 시작된다. 파티션 번호는 주파티션이 먼저 붙여지고, 논리드라이브가 나중에 번호가 붙여지게 된다. \winnt : NT가 설치된 폴더가 루트밑의 winnt 임을 나타낸다. 위와 같이 ARC Path가 구성되어 있고, 어느 하나만 잘못 되어 있어도 시스템은 부팅을 할 수가 없다. 부팅프로그램은 엉뚱한 위치에서 NT의 시스템폴더를 찾으려고 시도할 것이기 때문이다. (例) multi(1)disk(0)rdisk(1)partition(2)\winnt : 1번 디스크 컨트롤러에 연결된 2번째 하드디스크의 2번째 파티션에 있는 winnt 폴더 ARC Path에 대한 내용은 마이크로소프트 KB Q102873을 참고한다. ( http://support.microsoft.com/default.aspx?scid=kb;EN-US;q102873) |
위의 사항들을 잘 이해했다면 한가지 의문이 생길 것이다. Boot.ini 파일이 위치해 있는 곳이 C: 였는데, 디스크0번이 손상된 상태에서 이 파일에 접근을 못하는 것이 아닌가? 맞다. 그렇게 된다. 그래서 미러볼륨으로부터 시스템을 부팅시키기 위해서 ‘부팅 디스켓’을 생성해야 한다. 부팅 디스켓 생성에 대해서는 이번장의 후반부에서 소개되는 “부팅 디스켓 만들기”를 참고한다.
<그림11-31. 미러 볼륨 구성 과정 5>
<그림11-31>은 작업을 마치고, 시스템이 미러볼륨을 구성하는 과정을 캡처한 화면이다. 64%라고 진도를 보여주는데, 이 과정에서 원본볼륨이 완전하게 미러볼륨으로 복제가 일어난다.
<그림11-32. 미러 볼륨 구성 과정 6>
미러볼륨이 완성되었다. 디스크 1에도 5GB크기의 C:가 생겼다. 윈도우탐색기를 통해서 들여다 보면 단지 C: 로만 보일 뿐이다. 하지만 C:에 새로운 데이터를 저장하면 그때는 실제로는 두 개의 디스크에 동시에 데이터가 쓰여지게 된다. 디스크0번이 망가지더라도 걱정이 없다. 완전한 복제본인 디스크1이 있으니까.
더 이상 미러볼륨을 원하지 않는다면 미러볼륨을 해제하는 작업으로서 간단히 관계를 끊을 수 있다.
<그림11-33. 미러 제거>
이것은 데이터 손실이 발생하지 않는 작업이다. 다만 미러가 제거되었으므로 더 이상 복제가 일어나지 않을 뿐이다. 독립적인 2개의 볼륨이 되는 것이다.
RAID-5볼륨은 스트라이프 볼륨의 연장선이라고 할 수 있다. 앞에서 스트라이프 볼륨의 장점은 디스크 입/출력 성능의 향상을 가져온다고 했는데, 하드 디스크의 물리적인 오류에 민감하다는 제약이 따른다고 했다. 그것을 해결하기 위해서 패리티(Parity)라고 부르는 특별한 비트를 디스크에 저장하게 되었다. 스트라이프 볼륨의 장점을 살리면서 디스크의 오류까지도 해결하겠다는 것이다. <그림11-34>을 보면서 설명한다.
<그림11-34>의 예제에서는 3개의 디스크로 구성된 RAID-5 볼륨을 보여준다. 디스크 3개를 평행하게 배열하고 이들은 각각 64KB 단위씩 스트라이핑이 구성된다. 스트라이프1부터 시작해서 데이터를 기록해 나가는데, 3개의 디스크에 모두 데이터가 기록되는 것이 아니라 2개의 디스크에만 데이터가 기록되고 나머지 하나의 디스크 공간에는 2개의 디스크의 데이터를 계산한 값이 기록된다. 이 값을 가리켜서 Parity라고 부른다. 이때 계산방식으로는 Xor연산[1]이 사용된다. 계산방법이 중요한 것이 아니라 이것을 이해하는 것이 중요하다.
위의 예제에서 RAID-5 볼륨을 구성하고 처음 데이터를 기록한다고 가정을 해 보자. 그때 데이터는 디스크1의 처음 스트라이프1에 기록되고, 다음에 디스크2의 스트라이프2에 기록된다. 디스크0에는 디스크1과 디스크2의 데이터를 Xor연산을 통하여 계산된 값. Parity 비트를 기록하는 것이다. 두번째 스트라이프에서는 디스크0과 디스크2에 데이터를 기록하고 디스크1에는 패리티, 세번째는 디스크0과 디스크1에 데이터를 기록하고 디스크2에 패리티, 이런 방식으로 디스크를 기록해 나간다.
그렇다면 어떻게 되는가? 디스크가 3개이지만 실제로 1/3에 해당하는 하나의 디스크 공간만큼은 데이터가 기록되지 않기 때문에 디스크 낭비라는 생각이 들 수도 있을 것이다. 하지만 하드디스크의 물리적인 오류가 생겼을 때 이 문제를 RAID-5 볼륨은 해결할 수 있다. 3개의 디스크중 하나에 결함이 발생하더라도 다시 원본데이터를 계산해 내는 것이 가능하기 때문이다. 어떻게? 위의 예제에서 디스크1번이 손상되었다고 가정했을 때 관리자가 할 일은 새 하드디스크를 넣고 “RAID-5 볼륨 재구성”이라는 메뉴만 관리도구에서 돌려주면 시스템은 원본 데이터를 복구해 내게 된다. 이때의 방법은 처음 데이터를 기록할 때와 차이가 없다. 순수한 데이터만이 아닌 데이터를 기준으로 특별한 원칙하에 패리티 비트가 기록되어 있기 때문에 가능한 것이다.
스트라이프 볼륨이 3개의 디스크에 전체를 데이터만 기록했던 것과 비교해서 디스크 낭비, 상대적인 쓰기 성능의 저하 등을 가져올 수는 있지만 서버에서는 무엇보다 데이터를 보호하기 위한 방법으로서 RAID-5가 사용될 수 있다. 디스크 입/출력의 성능을 요구하는 DB서버, 파일서버 등의 서버를 구축할 때 최상의 솔루션을 제공할 수 있을 것이다.
필자가 캡처한 예제를 통하여 구현과정을 살펴보자.
예제에서는 디스크3개를 가진 시스템을 보여준다. 이미 C:는 미러볼륨으로 구성되어 있고, 디스크0,1,2 에는 각각 916MB, 32GB, 18GB의 남은 공간이 있다. 이 디스크들로써 RAID-5 볼륨을 구현할 때 만들수 있는 최대크기는 얼마나 될까? 스트라이프의 동작원리를 이해하면 정답이 나온다. 스트라이프 볼륨을 구성할 때는 디스크의 각 볼륨이 동일한 크기로 구성이 되어야 한다. 당연히 위의 상황에서는 가장 작은 크기에 맞춰질 수밖에 없을 것이다. 그래서 916MB*3=2,748MB가 구현할 수 있는 최대사이즈가 된다. 하지만 이것도 전체사이즈가 되지는 않는다. 실제로 데이터가 들어갈 수 있는 공간은 패리티가 차지할 공간을 제외한 2/3이 된다. 즉 916MB*2=1,832MB가 데이터가 된다.
|
할당되지 않은 빈 공간을 마우스 오른쪽 클릭하고 ‘볼륨 만들기’를 선택한다. |
|
|
|
RAID-5 볼륨도 활성화 된 것이 보인다. 물리적인 디스크가 3개 이상이므로 활성화되는 것이다. RAID-5 볼륨을 선택하고 [다음]을 누른다. |
|
‘디스크 선택’화면에서 왼쪽의 ‘사용 가능한 모든 동적 디스크’에서 디스크0,1,2를 선택하여 [추가>>]버튼을 눌러서 선택되도록 하고, 아래쪽에 크기를 결정해 주어야 한다. 3개의 디스크는 동일한 크기로만 구성될 수가 있다. <그림11-38>의 예제에서는 900MB를 선택했다. ‘총 볼륨 크기’가 1800MB만 나타내고 있는 것을 주목한다. 900MB*3=2700MB이지만 1/3인 900MB는 패리티 비트가 차지할 공간이므로 크기에 포함되지 않은 것이다. 최대크기는 916MB임을 보여 주는데, RAID-5 볼륨을 구성하는 디스크중에서 가장 작은 여유공간에 맞춰서 만들수 있음을 보여준다. |
|
나머지 과정은 다른 볼륨 생성과 차이가 없다. 드라이브 문자열을 할당하거나 폴더에 볼륨을 마운트 시킬 수 있다. |
|
기본적으로 NTFS 파일시스템으로 포맷하도록 선택되어 있다. 서버에서 NTFS를 사용한다는 것은 기본적인 일이다. 그대로 [다음]을 클릭한다. |
|
거의 모든 작업을 할 때마다 항상 마지막에서는 당신이 선택했던 작업들을 요약해서 보여주는 화면이 나온다. 한번쯤 들여다 보라. 실수를 막을수 있을 것이다. |
이제 마법사를 마쳤다. <그림11-42>에서는 RAID-5 볼륨으로 구성된 E: 가 생성되고 있는 것을 보여준다. 29%가 진행중이라는 과정을 볼 수 있다.
더 이상 RAID-5 볼륨을 사용하지 않으려면 볼륨을 삭제하면 되는데, 주의할 점은 볼륨을 삭제하면 데이터는 날아간다는 것이다. 전체 데이터를 안전하게 백업을 받은 후 볼륨을 삭제해야 할 것이다. 같은 관리도구를 사용하여 볼륨을 제거할 수 있다<그림11-43>.
<그림11-43. RAID-5 볼륨 제거>
[주]__________________________________________________________________________________________________
[1] Xor 연산 : Exclusive Or 연산이다. 두 값이 같을 경우는 0이 되고, 두 값이 다를 경우는 1이 되는 연산을 뜻한다.