MBR - 파티션 테이블 엔트리 순서 문제
이번 글에서 이야기할 내용은 MBR 의 파티션 테이블에 그 중 파티션 엔트리의 순서에 대한 내용입니다. MBR 의 파티션 테이블에는 총 네 개의 파티션 정보를 담을 수 있습니다. 그래서 MBR 디스크에서 생성 가능한 주 파티션의 개수는 총 네 개가 되는 것입니다. [이제 이러한 한계를 해결하기 위해 하나의 파티션 엔트리를 확장 파티션으로 두고 이 안에 다시 논리 드라이브를 생성하는 방식을 사용하고 있죠.]
네 개의 파티션 엔트리
아무튼 이러한 파티션 엔트리의 순서는 디스크에서의 파티션의 순서와 동일한 것이 보통입니다.
근데 아래와 같이 디스크에서의 파티션 순서와 파티션 엔트리의 순서가 서로 다른 경우가 발생할 수 있습니다. [파티션 엔트리에서 활성 파티션을 의미하는 첫 바이트의 80 을 주의해서 보세요.]
이러한 현상은 대체로 파티션의 시작 위치를 자유롭게 지정할 수 있는 써드 파티의 디스크 & 파티션 관리 프로그램을 통해 파티션의 생성을 순서대로 하지 않았을 때 발생하게 됩니다. 실제로 위의 예제는 GDisk 를 통해 F: 파티션을 먼저 생성한 후 나중에 G: 파티션을 생성한 것입니다. 그 외에 다른 파티션 관리 유틸에서도 파티션을 차례대로 생성하지 않으면 이러한 현상이 발생할 가능성이 있습니다. [DiskPart 의 Offset 과 같은 개념]
보통 이렇게 파티션 엔트리의 파티션 순서와 실제 디스크에서의 파티션 순서가 다르더라도 사용할 때는 아무런 문제가 없습니다. 겉으로 드러나는 게 아니기 때문에 이렇게 파티션 엔트리의 순서가 다른 걸 아예 모를 수도 있죠.
그런데 이게 디스크 관리 프로그램이나 MBR 관리 프로그램, 또는 이러한 정보를 활용하는 프로그램들에서는 문제가 될 수 있습니다. 우리가 보는 것과 순서가 다르니 자칫 엉뚱한 파티션에 작업을 하게 될 수도 있고, 특정 프로그램에는 아예 이것이 문제를 일으킬 수도 있습니다.
아래는 파티션의 순서가 틀어진 것을 각각 DiskPart, MBRWiz, GRUB4DOS 에서 살펴 본 모습입니다.
모두 실제 디스크에서의 파티션 순서가 아닌 파티션 테이블에서의 순서대로 파티션의 번호가 지정되어 있죠. 그렇기에 우리가 디스크에서 보던 순서와는 다른 것을 확인할 수 있습니다. 이러한 것을 모르고 그래픽으로 보던 파티션의 순서만 생각하고 파티션 번호를 지정한 후 파티션 삭제 명령이라도 내린다면? 전혀 엉뚱한 결과가 나오게 되는 것이죠.
그리고 항상 그러한 것인지 정확하게 확인된 것은 아니지만 이런 경우 GRUB4DOS 와 같은 부트 매니저에서는 해당 디스크의 파티션을 정상적으로 찾지 못하는 문제가 발생하는 경우도 있었습니다. [BOOTMGR 은 영향을 받지 않습니다. NTLDR 의 ARC 경로는 파티션 번호를 사용하니 영향을 받겠네요.]
어찌되었든 이것이 좋은 상황은 아니란 것은 확실합니다. 그럼 이럴 땐 어떻게 해야 할까요?
MBR - 파티션 테이블 정렬하기
MBR 관리 프로그램이나 디스크 관리 프로그램 중에는 이렇게 순서가 뒤바뀐 파티션 엔트리의 순서를 실제 디스크에서 파티션의 순서대로 재정렬해주는 기능을 제공하기도 합니다. 그런데 그러한 프로그램을 사용하는 방법 말고 윈도우에서 간단하게 해결하는 방법도 있습니다.
바로 윈도우의 기본 파티션 관리 유틸인 디스크 관리나 DiskPart 를 활용하는 방법인데요. 한 가지 먼저 알아두실 점은 DiskPart 의 Offset 매개 변수를 통해 파티션의 생성 순서를 바꿔서 파티션들을 생성하였다고 할 지라도 위와 같은 문제가 발생하지 않는다는 사실입니다. 디스크 관리나 DiskPart 에서 이와 같은 파티션 엔트리 순서 문제가 발생하지 않는 것은 디스크 관리나 DiskPart 는 파티션 작업을 할 때 파티션 테이블을 자동으로 정렬하기 때문에 그렇습니다.
그래서 이걸 이용하면 됩니다. 파티션에 관련된 작업들 중 파티션 자체에 별다른 영향을 주지 않고 가장 간단하게 작업할 수 있는 활성 파티션의 활성/비활성 작업을 이용하는 겁니다. 현재 활성 파티션을 임시로 비활성했다가 다시 활성으로 되돌려주는 것이죠. 또는 간단하게 다른 파티션을 활성했다가 다시 되돌려주거나, 활성 파티션이 없는 디스크라면 반대로 아무 파티션이나 하나 활성하고 비활성하는 식으로 작업하면 됩니다. 대충 무슨 이야기인지 감이 잡히시죠?
디스크 관리도 작업하실 분들은 디스크 관리로 하시고 저는 간단하게 DiskPart 로 작업을 해보도록 하겠습니다. [DiskPart 를 사용할 때는 파티션의 순서가 평상시와 다르기 때문에 작업 전 list partition 으로 정확한 파티션 번호를 확인하세요.]
diskpart
select disk=1
select partition=2
inactive
active
select partition=2
inactive
active
작업을 마치고 나면 겉으로 드러나는 변화는 없습니다. 디스크 관리를 통해 살펴보면 그대로이죠.
하지만 MBR 을 직접 살펴보면 아래와 같이 파티션 엔트리가 디스크에서의 순서에 맞게 재정렬된 것을 확인할 수 있습니다.
마찬가지로 다른 프로그램을 통해 살펴 보면 정상적으로 파티션 엔트리가 정렬된 것을 확인할 수 있습니다. [참고로 DiskPart 는 시스템을 재부팅해야 정렬된 결과가 반영됩니다.]
간단하죠? 뭐 대충 그렇습니다. 그냥 알아두시라고요. ^^; 그럼 다음 글에서 뵙죠.