파티션 형식과 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 에 직접 수정하는 방식으로 작업을 진행하셔야 합니다.







 

 

신고
캐플 블로그에 공개된 글은 반드시 원본 글의 링크를 포함시키는 조건으로 자유롭게 이용하실 수 있습니다.
하지만 블로그의 발전을 위하여 되도록이면 링크로 글을 소개해주시길 부탁드립니다. ^^

- 상업적인 용도의 사이트는 대상에서 제외됩니다. -
- 글에는 오류가 있을 수 있고, 추후 수정 또는 재발행될 수 있습니다. -
  1. BlogIcon Minty99 2012.07.16 21:34 신고  댓글주소  수정/삭제  댓글쓰기
    중간에 디스크 깨진 상황에서요.
    파티션 ID를 SetID 명령으로 원상복구해주면 돌아오지 않나요?
    꼭 Clean 명령으로 초토화 시켜야 하는건가요? (;;)
    그냥 호기심이 일어서요..ㅎㅎ
    • BlogIcon CApple 2012.07.16 22:24 신고  댓글주소  수정/삭제
      저도 그러길 바랬는데 절대 안 돌아오더군요. ^^;;; MBR 을 직접 수정하는 방법으로 어떻게 하면 되지 않을까 생각은 되는데요. 이전의 MBR 내용을 알아낸다는 게 힘들기도 하거니와 뭐라도 하면 디스크가 알아서 초기화되어 버리더라고요. ^^;;

      뭐 솔직히 해당 내용은 참고하라는 의미로 올린 것이고 사실 데이터 파티션 형식을 확장 파티션 형식으로 바꾸는 작업이란 것 자체가 저처럼 일부러 하지 않는 한 일어나기 힘든 일이기 때문에 더 깊게 생각하지 않기로 했습니다. ^^;;;;;;
    • BlogIcon Minty99 2012.07.17 17:34 신고  댓글주소  수정/삭제
      하긴 뭐 저런걸 할 일이 없기는 하죠.ㅋㅋㅋ
  2. 마칼 2012.07.17 15:34 신고  댓글주소  수정/삭제  댓글쓰기
    캐플님 안녕하세요 ^^

    초보가 이해하기 어려운 내용이지만
    알듯모를듯 해서 너무 재밌습니다.ㅋ

    잘 숙지해서 활용할수 있다면 초보가 아니겠지요
    열심히 공부하고 있습니다 ^^

  3. 2013.06.12 20:51 신고  댓글주소  수정/삭제  댓글쓰기
    파티션 형식을 ntfs 숨김 파티션으로 변경하면 해당 파티션에 접근할 수 있도록 설계된 프로그램 외에는 접근할 수 없다고 하셧는데 이때 접근할 수 있도록 설계되었다는게 정확히 어떤것이고, 또 이런 프로그램이 대표적으로 어떤게 있나요??
    • BlogIcon CApple 2013.06.13 04:55 신고  댓글주소  수정/삭제
      드라이브 문자 체계로 파티션에 접근하는 프로그램들이 있고 (D:\Example.txt), 디스크와 파티션 번호처럼 드라이브 문자가 아닌 다른 방식으로 파티션에 접근하는 프로그램들도 있습니다.(2:1\Backup.gho) 흔히 고스트와 같은 백업/복구 프로그램들이 이러한 방식을 사용합니다.
  4. 아 그리고 2013.06.12 20:53 신고  댓글주소  수정/삭제  댓글쓰기
    논리 파티션이나 확장 파티션도 형식을 변경하는게 가능한가요??
    • BlogIcon CApple 2013.06.13 04:56 신고  댓글주소  수정/삭제
      주 파티션이나 논리 파티션나 동일하고요. 확장 파티션은 절대 건드리시면 안 됩니다. 이건 글에서 설명을 드렸는데요?
    • ! 2013.06.13 17:09 신고  댓글주소  수정/삭제
      0x0f 이외 다른 형식의 파티션을 확장 파티션 형식으로 변경하는것 뿐만 아니라 확장 파티션을 다른 파티션 형식으로 변경해도 안되는 거였군요. 감사합니다.
      그런데 mbr 영역에서 파티션 테이블 엔트리가 총 4개(3개는 주 파티션 형식, 1개는 확장 파티션 형식)으로 알고 있는데 그러면 논리 파티션은 어디에 위치하고, 형식을 변경하려면 어떻게 해야 하나요??
    • BlogIcon CApple 2013.06.13 17:38 신고  댓글주소  수정/삭제
      논리 드라이브에 대한 설명은 [link]http://cappleblog.co.kr/131[/link] 글을 참고하시고요. 형식을 변경하는 작업은 DiskPart 로 동일하게 작업하면 됩니다.
  5. 김현섭 2013.12.22 12:30 신고  댓글주소  수정/삭제  댓글쓰기
    내용 잘 봤습니다.
    문의도 가능한지요? (gmlakd63@gmail.com)
    삼성노트북 (윈도8/ 700G)에 SSD 128G 포팅했는데, 볼륨이 숨겨진 20G복구파티션이 그대로 달려왔습니다. 덕분에 20G를 고스란히 못쓰고 있는상태. 이 영역은 <동적 디스크의 LDM 메타데이터 파티션>이라고 나오는 군여.. 'setid'명령으로는 '숨김'이 풀리지 않네요.. 이 영역을 삭제하고 data영역으로 사용했으면합니다. 고수님의 조언 부탁합니다..
  6. 정눌 2014.06.15 10:56 신고  댓글주소  수정/삭제  댓글쓰기
    흠....제 노트북은 GPT로 되어있어서 종류가 뭔가 굉장히 긴(...)걸로 되있어서 함부로 건드리기 겁나네요ㅠ GPT의 경우에는 어떻게 해야 내용을 볼 수 있을까요??
  7. Moca 2015.08.02 23:34 신고  댓글주소  수정/삭제  댓글쓰기
    삼보컴퓨터를 사용중인데요 윈도우를 새로설치하면서 복구영영으로들어가는 매크로가 사라졌어요! 맥을 멀티부팅중 어쩌다보니 클로버부트로더로 복구영역 접근해서 부팅하는데성공헀지만 복구를 누르면 에러가 0x00000* (대강 이런느낌)이 발생해서요 다른방법을 생각해본게 기본 부트로더에서 복구영역을 멀티부팅하듯 설정하고싶은데 EasyBCD로 바로추가하는 방법을모르겠고 0x27로되어있는파티션을 07로 바꿔준뒤 부트로더에 추가하면 복구영영에 부팅가능할까요? 숨김을 유지하고 멀티부팅처럼 리스트에 추가하는방법이 있으면 좋겠네요
  8. BlogIcon 찬디 2016.03.10 10:56 신고  댓글주소  수정/삭제  댓글쓰기
    안녕하세요 내용잘봤습니다 혹시 gpt 종류가 영어숫자길게되어잇는데 이걸 숨김해제할려면어떻게해야대죠??
  9. dino 2016.06.18 14:33 신고  댓글주소  수정/삭제  댓글쓰기
    lg노트북 ssd128을 사용중인데 용량부족으로 ssd512로 변경하려다 블루스크린의 압박으로 포기했는데

    덕분에 15gb라도 벌었네요^^

    정보 고맙습니다~
  10. Haru 2016.11.05 22:19 신고  댓글주소  수정/삭제  댓글쓰기
    복사하려다가 그만 OEM을 예약 파티션이 되버렸는데 다시 OEM으로 복구 가능할까요ㅠㅠ
  11. ssbsu 2016.12.27 10:42 신고  댓글주소  수정/삭제  댓글쓰기


    안녕하세요 좋은글 잘 보았습니다. 궁금한게 있는데요,,

    ssd 추가하고 hdd 밀어버리고 D드라이브로 쓰려고하는데요,

    현재 500GB HDD에 파티션 나누어 C에 윈7이 깔려있습니다.

    현재 시스템에 볼륨은 위에서 예로 든 LG 와 동일하게 4개로 나뉘어 있습니다.

    말씀하신 것 처럼 제품에 LG스마트 리커버리 기능이 있어서 윈도우 복구기능이 있는데 C를 포멧하고 D와 합치면 복구영역이 날아가나요? 제 생각은 파티션이 나뉘어 있기 때문에 복구영역은 그대로 있을 것 같은데..
    궁금합니다..

댓글을 달아 주세요

- 댓글에선 예의를 지켜주시기 바라며, 블로그지기는 댓글에서 따로 활동하지 않습니다.

* 티스토리 사용자는 여기를 클릭하시면 로그인 됩니다.

BBCode 안내   굵게 밑줄 기울임 취소선   취소선 취소선 취소선 취소선   왼쪽 정렬 가운데 정렬 오른쪽 정렬   코드박스 인용구 이미지   이미지 업로드-Imgur.com