본문 바로가기

디스크와 파티션

[DiskPart] 파티션 형식의 관리와 OEM(EISA) 파티션의 이해 - SetID




파티션 형식과 SetID 명령의 이해

1. 파티션 형식이란?

파티션 정보에는 파티션 형식(Partiton Type, Partition ID)이라는 것이 존재하고 있습니다. 이러한 파티션 형식은 해당 파티션의 파일 시스템, 속성, 용도 등에 따라 일정한 값이 정해져 있고, 이러한 형식은 보통 윈도우나 프로그램에 의해 자동으로 지정됩니다.

자동으로 지정되는 형식 외에 일부 특정한 파티션 형식들은 사용자가 이를 관리할 수 있는 도구를 통해 수동으로 지정하게 되는데, 보통 이러한 파티션 형식들은 특수한 속성을 가지고 있고, 해당 형식으로 지정된 파티션은 그러한 속성을 부여 받게 됩니다. [ex. 숨김 파티션]

아무튼 이러한 파티션 형식은 해당 파티션의 파일 시스템, 속성, 용도에 따라 일정한 값을 가지기 때문에, 파티션 형식을 통해 해당 파티션이 어떠한 용도의 어떠한 속성의 파티션인지를 파악할 수 있게 됩니다. 참고로 이러한 파티션 형식에 대한 정보는 파티션 형식(Partition Type, Partition ID) 정보 글에 정리되어 있으니 참고하시길 바랍니다.

* 참고로 같은 파티션 형식 값을 가지고 있더라도 실제론 다른 종류일 수도 있습니다. 워낙에 다양한 프로그램과 시스템에서 파티션 형식 값을 사용하다 보니 값이 중복되는 경우가 많습니다. 예로 NTFS 데이터 파티션도 0x07 이고, exFAT 데이터 파티션도 0x07 로 같은 값을 사용하는 걸 예로 들 수 있겠네요.

* Partition Type 은 대체로 파티션 종류 또는 파티션 형식으로 많이 부릅니다. DiskPart 의 경우 어디에서는 이를 종류로 어디에서는 이를 형식으로 표현하는 등 섞어서 부르는데요. 글을 쓰고 정리하는 입장에선 좀 난감하네요. 글에서는 파티션 형식으로 통일하여 부르도록 하겠습니다.



2. 파티션 형식의 확인

현재 파티션의 형식에 관한 정보는 예전에 알아보았던 Detail Partition 명령을 통해 확인할 수 있습니다. Detail Partition 명령에선 파티션 형식을 종류로 표시해 줍니다.




3. SetID 명령의 이해와 파티션 형식의 변경

DiskPart 에서 파티션 형식을 변경하는 것은 SetID 라는 명령을 통해 이루어지며, 해당 명령은 아래와 같은 구조로 되어 있습니다.

Select Disk=0
Select Partition=1
SetID ID=07

ID=07 [MBR 디스크]
ID=ebd0a0a2-b9e5-4433-87c0-68b6b72699c7 [GPT 디스크]



명령은 굉장히 간단하죠? 추가로 시스템 파티션이나 현재 사용 중인 파티션의 경우 명령이 거부될 수 있는데 이럴 때는 강제로 작업을 진행하는 override 매개 변수를 추가하시면 됩니다.[ex. SetID ID=07 override] 그 외에 MBR 디스크에 포함된 파티션은 형식의 값이 1 Byte 의 16 진수 형식이고, GPT 디스크에 포함된 파티션은 {} 를 제외한 GUID 형식이라는 점만 기억하시면 될 듯 합니다.


그럼 실제로 파티션의 형식을 변경하는 간단한 예제를 보도록 하겠습니다. 아래와 같이 NTFS 로 포맷된 일반 데이터 파티션인 D: 드라이브가 있습니다.[MBR 디스크, 디스크 0 파티션 3] 현재 해당 NTFS 데이터 파티션은 자동으로 지정된 0x07 형식 값을 가지고 있습니다.




이를 윈도우나 일반적인 프로그램에서는 접근할 수 없는 NTFS 숨김 파티션으로 바꿔보도록 하겠습니다. NTFS 의 숨김 파티션의 형식 값은 0x17 입니다. 즉, 해당 파티션의 형식을 0x07 -> 0x17 로 바꿔주면 NTFS 데이터 파티션이 NTFS 숨김 파티션으로 변경되는 것이죠. 명령은 아래와 같습니다. [값을 입력하는 방식은 프로그램에 따라 조금씩 다른데 대체로 0x17 이나 17 과 같이 입력하게 됩니다. DiskPart 에서는 0x 를 제외한 17 만 입력하면 됩니다.]

diskpart
select disk=0
select partition=3
setid id=17

이 때 파티션은 디스크 - 파티션으로 선택해도 되고, 볼륨으로(Select Volume=D) 선택해도 됩니다.



그러면 아래와 같이 파티션의 형식이 바뀌며, 파티션의 형식에 맞춰 숨김 속성이 적용된 것을 알 수 있습니다.




이제 해당 파티션은 지정된 파티션 형식의 특성상(NTFS 숨김 파티션) 볼륨으로 연결되지 않고(드라이브 문자 할당 불가능), 해당 파티션에 접근할 수 있도록 설계된 프로그램 외에는 윈도우에서는 접근할 수 없는 파티션이 됩니다. 간단하죠? 파티션의 형식의 변경은 이처럼 변경할 파티션 형식 값을 지정해주면 됩니다.


참고로 이와 같은 파티션 형식은 윈도우가 아닌 디스크 자체에(MBR, GPT 헤더) 저장되는 값입니다. 즉, 다른 윈도우로 부팅해도 0x17 로 지정된 해당 파티션의 형식은 여전히 0x17 형식이고, 해당 디스크를 떼어내어 다른 컴퓨터에 장착해도 해당 파티션의 형식은 여전히 동일하게 0x17 형식을 유지하는 것이죠. 이점은 기억을 하시길 바랍니다.

MBR 디스크의 파티션 테이블 구조
오프셋 필드 길이 설명
0x00 1 Byte 파티션 상태 (0x80 = 시동 가능, 0x00 = 부팅불가, 기타 = 비정상)
0x01 3 Byte 파티션의 첫 번째 섹터의 실린더-헤드-섹터 주소
0x04 1 Byte 파티션 종류(파티션 형식, Partition Type, Partition ID)
0x05 3 Byte 파티션의 마지막 섹터의 실린더-헤드-섹터 주소
0x08 4 Byte 파티션의 첫 번째 섹터의 LBA
0x0C 4 Byte 파티션의 크기 (단위: 섹터) [* 전체 섹터의 개수]





4. 파티션 형식 변경시 주의 사항

파티션 형식은 무조건 아무런 형식으로 막 바꾸면 안 됩니다. 위의 예제에서와 같이 0x07 (NTFS 데이터 파티션)을 0x17 (NTFS 숨김 파티션)으로 바꾸듯 대체로 동일한 파일 시스템에 속하는 다른 형식으로 변경하거나 특정한 용도를 가진 형식으로 변경하는 식으로 작업을 진행하게 되죠.

그런데 0x07 (NTFS 데이터 파티션) 형식을 0x0C (FAT32 데이터 파티션) 형식이나 0x1C (FAT32 숨김 파티션) 형식으로 변경하는 것과 같이 파일 시스템이 다른 형식으로 변경하는 작업도 아무런 오류없이 작업이 가능합니다.[그렇다고 파일 시스템이 변환되는 것은 아닙니다.] 하지만 이러한 방향의 형식 변경은 피해야 합니다. 어떠한 영향을 미칠지 모르기 때문이죠. 대체로 다른 파일 시스템에 속하는 형식으로 변경하는 경우에는 별다른 영향이 없는 것이 보통이고, 다시 원상태로 되돌릴 수도 있습니다. 하지만 말했다시피 어떤 문제가 발생할 지 모르니 가급적 그런 변경 작업은 피하는 것이 좋습니다.


이와는 달리 굉장히 주의하셔야 할 게 있는데 데이터 파티션(주, 논리 파티션) 형식을 확장 파티션 형식으로 바꾸는 것은 절대하지 마시길 바랍니다. 만약에 그런 식으로 형식 변경이 이루어졌다면 재앙을 경험하시게 될 겁니다. 간단하게 보여드리죠. 앞서 예제의 동일한 데이터 파티션(주 파티션)을 확장 파티션을 뜻하는 0x0F 형식으로 변경해보도록 하겠습니다.




어떤가요? MBR 디스크인데 주 파티션이 6 개에 디스크의 크기도 다르게 인식이 되어 버렸죠? 이거 지금 디스크 깨진 겁니다. 이건 Clean 명령으로 디스크를 깨끗히 정리하셔야 해결할 수 있습니다. 아무튼 주의하세요.




OEM(EISA) 파티션과 복구 파티션

대기업 PC 나 노트북에는 아래와 같이 OEM(EISA) 파티션이나 복구 파티션이란 것이 존재하고 있는 경우가 대부분입니다. 이러한 파티션은 대기업 PC 나 노트북의 윈도우를 복원하는 용도로 사용되는 파티션으로 백업 도구와(복구 파티션) 백업 이미지가(OEM 파티션) 저장되어 있는 파티션입니다. 즉, 해당 제조사의 윈도우 복구 도구(공장 초기화 도구)에서 사용되는 파티션들이죠.

대기업 PC 나 노트북에 기본 포함되어 있는 복원 도구.




예제로 아래는 제 친구의 LG 사 노트북인데 첫 번째 파티션이 복구 파티션으로 네 번째 파티션이 OEM 파티션으로 설정되어 있죠.




해당 파티션들을 DiskPart 를 통해 그 형식을 확인해보면 아래와 같은 것을 확인할 수 있습니다.[LG 사 노트북 기준이며 다른 브랜드 제품들도 대체로 이와 비슷할 겁니다.]



복구 파티션으로 인식된 첫 번째 파티션은 0x27 형식으로, 이는 Microsoft 에서 윈도우 RE 이미지를 담고 있는 NTFS 파티션을 의미하는 형식입니다. 대체로 노트북과 같은 곳에선 BOOTMGR 부트 매니저 구성과 함께 자사의 복구 도구가 포함된 Custom 된 WinRE.wim 이미지를 담고 있습니다. [브랜드에 따라 따로 복구 파티션 형식으로 구성하지 않고 그냥 일반 데이터 파티션 형식으로 구성하고 시스템 예약 파티션 상태로 두기도 합니다.]

OEM 파티션(EISA 파티션)으로 인식된 네 번째 파티션은 0x12 형식으로, 이는 IBM PC 에서 Rescue 나 Recovery 데이터를 담는 용도로 사용되는 파티션을 의미하는 형식입니다. 즉, 주로 복구 도구에서 백업 이미지 파일을 저장하는 용도로 사용되는 파티션이란 말이죠. 해당 파티션은 대체로 NTFS 로 포맷되어 있습니다.

이러한 두 파티션 형식 모두 윈도우에서의 일반적인 접근은 허용하지 않고, 이에 직접 접근할 수 있는 프로그램에서만(복구 도구 등) 접근할 수 있습니다. 즉, 해당 파티션 안에 든 데이터들을 보호하기 위한 용도로 사용되는 파티션 형식들이란 의미입니다.


아무튼 이러한 파티션들은 일반 데이터 파티션 형식으로 다시 되돌려주면 그 안의 내용을 확인하는 것이 가능합니다. 복구 파티션은 원래 NTFS 이고, OEM 파티션은 대체로 NTFS 이기 때문에 둘 모두 0x07 형식으로 변환해보도록 하겠습니다.


S: 드라이브는 제가 임의로 할당한 것입니다.




그러면 이와 같이 원래 파티션의 본 모습을 확인할 수 있습니다. [LG 노트북 기준]

복구 파티션 -> 데이터 파티션(S: 드라이브)




OEM(EISA) 파티션 -> 데이터 파티션(F: 드라이브)




간단하죠? 뭐 이대로 놓고 사용해도 별 문제는 없지만 함부로 건드리지 말라고 일부러 형식을 지정하여 숨겨 놓은 파티션이니 확인 후 다시 원래대로 되돌려주는 것이 좋겠죠. [복구 파티션이었던 첫 번째 파티션의 경우 일반 데이터 파티션으로 변경되면서 시스템 파티션으로 인식되었기 때문에 SetID 작업을 거부하게 됩니다. 이에 override 매개 변수를 추가한 것입니다.]



이렇게 복구 파티션이나 OEM 파티션을 원래의 일반 데이터 파티션으로 변경하는 것은 노트북의 하드 디스크를 손수 교체하려는데 디스크 전체를 통채로 복제할 수 있는 고스트와 같은 디스크 복제 도구가 없거나, 또는 사용 중인 복제 도구에서 해당 파티션 형식을 지원하지 않는 경우에 사용할 수 있습니다.

즉, 해당 파티션들을 일반 데이터 파티션으로 변경하여 사용 중인 도구에서 인식이 되면 정상적으로 복제 작업을 진행할 수 있겠죠? 그렇게 복제한 후 디스크를 교체하고 다시 원래대로 파티션 형식을 변경하여 노출되지 않게 설정하면 될테니까요.


반대로 해당 형식의 파티션에 직접 접근할 수 있는 프로그램을 사용 중이라면[예로 GSS 고스트는 0x27 형식의 OEM 파티션에 저장된 백업 이미지에 접근하는 게 가능] 다른 사람들이 함부로 백업 이미지 파일에 접근하지 못하도록 이렇게 파티션 형식을 활용하여 숨겨진 백업 파티션을 갖춘 시스템을 꾸미는 것도 가능합니다. 경우에 따라서는 굉장히 유용할 수도 있죠.


아무튼 뭐 그렇습니다. 파티션 형식이 나온 김에 같이 다뤄봤네요. 여기까지 하도록 하죠. 이상입니다. ^^

참고로 SetID 는 비스타 이후의 DiskPart 에서만 지원하는 명령으로 윈도우 XP 에서는 DiskPart 를 통해 이와 같은 SetID 작업을 진행할 수 없습니다. 윈도우 XP 사용자는 파티션 형식을 수정할 수 있는 MBRWiz 와 같은 MBR 관리 도구나, 아니라면 헥스 에디터를 통해 디스크의 MBR 에 직접 수정하는 방식으로 작업을 진행하셔야 합니다.