이곳은 백업 블로그 입니다. 현재 캐플이 활동 중인 블로그는 CAppleBlog.co.kr 입니다. 최신 정보들은 새로운 블로그에서 확인해 보세요. ^^

- 이곳은 기존 블로그들의 글을 한군데로 모아 놓은 백업 블로그입니다.

- 현재 링크는 대부분 올바르지 않으며 이러한 링크들은 모두 cappleblog.co.kr 로 이동합니다. (※ 링크 주의)

- 블로그와 커뮤니티는 서로 다른 공간입니다.(로그인을 따로 해야합니다.)

- 저는 윈티티(WinTT)이자 신비(ShinB)이며 캐플(CApple)입니다. 편한대로 불러주세요.

DiskPart 시작하기

윈도우 XP 에 기본으로 내장된 DiskPart 를 통해 파티션을 관리하는 것에 대해서 알아 보도록 하겠습니다. 먼저 DiskPart 를 시작하는 방법입니다.

시작 -> 실행으로 들어간 후 다음의 명령을 내려줍니다.

diskpart


[Win KEY] + [R] 을 누르면 바로 실행이 시작됩니다.
DiskPart 가 실행됩니다.
 
명령 프롬프트 상태에서 다음 명령을 내려줍니다.

diskpart









포커스 지정하기

DiskPart 는 파티션 생성 및 삭제 등 모든 작업을 하기에 앞서 반드시 포커스 지정이라는 작업이 필요합니다. 포커스 지정이란 어떠한 작업을 진행할 대상을 지정하는 것을 의미하는 것으로 내가 지금 하려는 작업이 어떤 디스크 또는 어떤 파티션에(또는 볼륨에) 해당하는 작업이라는 것을 뜻합니다.

포커스는 디스크, 파티션 또는 볼륨에 지정할 수 있으며 자신이 하려는 작업에 맞게 알맞게 지정해주면 됩니다. 이러한 포커스를 지정하는 명령어는 Select 입니다. 포커스를 지정하게 되면 목록을 표시해주는 List 명령에서 포커스가 지정되어진 대상은 * 로 표시가 됩니다. 이를 통해 어떠한 디스크, 파티션 또는 볼륨이 포커스가 지정되어 있는지 알 수 있습니다.

한 가지 파티션은 디스크의 하위 항목이기 때문에 파티션에 포커스를 지정하기 위해선 반드시 먼저 해당 파티션을 포함하고 있는 디스크를 먼저 지정해 주어야 합니다. 볼륨은 개별 항목이기 때문에 디스크 지정없이 바로 포커스를 지정할 수 있습니다.

다음은 포커스를 지정한 예입니다.

   
   
디스크에 포커스 지정     파티션에 포커스 지정     볼륨에 포커스 지정




드라이브 문자를 할당하기 위해 포커스를 지정할 때 ODD 장치에도 포커스를 지정해야만 하는데 ODD 장치는 디스크나 파티션의 개념이 아니기 때문에 오직 볼륨을 통해서만 포커스를 지정해줄 수 있습니다.

또한 파티션을 생성하는 작업을 한 경우 생성된 파티션은 자동으로 포커스가 지정이 되게 됩니다.








정보 확인하기

DiskPart 에서 디스크, 파티션 또는 볼륨의 목록을 출력하는 명령어는 List 입니다. 디스크와 볼륨은 포커스없이 출력 가능하며 파티션은 디스크의 하위 항목이기 때문에 먼저 파티션 목록을 표시할 디스크에 포커스를 지정해주어야 합니다. 디스크, 파티션, 볼륨 모두 현재 포커스가 지정되어 있는 항목은 * 로 표시가 됩니다. 다음은 List 명령을 사용한 예제입니다.

   
   
디스크 목록     파티션 목록     볼륨 목록




DiskPart 에서 디스크, 파티션 또는 볼륨의 개체 정보를 출력하는 명령어는 Detail 입니다. 개체의 정보를 출력하기 위해선 반드시 정보를 확인하고자 하는 개체에 포커스가 지정이 되어 있어야합니다. 볼륨의 경우 볼륨을 포함하고 있는 디스크의 정보가 출력됩니다. 다음은 Detail 명령을 사용한 예제입니다.

   
   
디스크 정보     파티션 정보     볼륨 정보









파티션 생성하기

기본 디스크에서 하나의 디스크에 최대로 생성할 수 있는 파티션의 개수는 4 개 입니다. 또한 하나의 디스크에 생성할 수 있는 확장 파티션의 개수는 1 개 입니다. 즉, 하나의 디스크에 최대로 생성할 수 있는 파티션은 주 파티션 4 개 또는 주 파티션 3 개 + 확장 파티션 1 개가 됩니다. 하나의 디스크에 5 개 이상의 파티션을 생성하고자 하는 경우 확장 파티션 안에 논리 드라이브로 생성해 줍니다. 확장 파티션 안에 생성할 수 있는 논리 드라이브의 개수에는 제한이 없습니다.

한 가지 반드시 알아두고 넘어가야 할 사항이 있는데 Windows XP 의 DiskPart 에는 Format 기능이 없습니다. 즉, 파티션을 생성하고 드라이브 문자를 할당하는 것 까지는 DiskPart 를 통해서 할 수 있지만 포맷은 XP 에 내장된 Format 기능을 사용해야 한다는 겁니다. 그래서 현재 글에서는 포맷과 관련된 내용은 다루지 않습니다.

이점들을 유의하며 파티션의 생성에 대해 계속 알아보도록 하겠습니다. DiskPart 에서 파티션을 생성하는 명령어는 Create Partition 입니다. 글에서는 디스크에 포커스를 지정하고 파티션을 생성하며 드라이브 문자까지 자동으로 지정하는 것을 예시 명령으로 보여드립니다.

글에서 모든 DiskPart 작업을 진행할 시스템의 디스크 상황은 아래와 같으며 이 중 두 번째 디스크를 작업의 매체로써 사용합니다. 또한 앞으로의 모든 진행 상황 및 결과는 오직 DiskPart 를 통해서만 보여드립니다.

글에서 사용될 시스템






주 파티션 생성하기

주 파티션을 생성하는 명령어는 Create Partition Primary 입니다. 작업은 다음과 같습니다.

DiskPart 를 실행한 후 다음의 명령을 내려줍니다.

select disk=1
create partition primary size=40960
assign

※ Disk 번호는 0 번 부터 시작됩니다. 즉, 두 번째 디스크는 1 번이 됩니다. Size 는 생성할 파티션의 크기입니다. MB 단위로 입력해 줍니다. Assign 은 드라이브 문자를 자동으로 할당 합니다.

※ List Partition 은 현재 포커스가 지정되어 있는 디스크의 파티션 목록을 보여줍니다.

※ List Volume 은 모든 볼륨의 목록을 보여줍니다.



List Partition 명령과 List Volume 명령을 통해 40GB 주 파티션이 정상적으로 생성되고 드라이브 문자 또한 정상적으로 할당된 것을 확인하실 수 있습니다. 이렇듯 파티션 생성 또는 삭제 작업의 결과를 확인하고자 할 때는 List 명령을 활용하시면 됩니다.





확장 파티션 생성하기

확장 파티션을 생성하는 명령어는 Create Partition Extended 입니다. 작업은 다음과 같습니다.

DiskPart 를 실행한 후 다음의 명령을 내려줍니다.

select disk=1
create partition extended

※ Create Partition 명령에 Size 매개 변수를 생략하게되면 남은 공간 전체를 할당하게 됩니다.



확장 파티션은 오직 논리 드라이브를 할당하기 위한 공간이기 때문에 드라이브 문자의 할당 같은 작업은 할 수 없으며 볼륨 목록에도 표시되지 않습니다.





논리 드라이브 생성하기

논리 드라이브를 생성하는 명령어는 Create Partition Logical 입니다. 작업은 다음과 같습니다.

DiskPart 를 실행한 후 다음의 명령을 내려줍니다.

select disk=1
create partition logical

※ Create Partition 명령에 Size 매개 변수를 생략하게되면 남은 공간 전체를 할당하게 됩니다.



List Partition 명령과 List Volume 명령을 통해 120GB 논리 드라이브가 정상적으로 생성되고 드라이브 문자 또한 정상적으로 할당된 것을 확인하실 수 있습니다.





오프셋을 사용하여 파티션 생성하기

Create Partition 에는 offset 이라는 매개 변수가 사용됩니다. offset 이 무엇인지 설명하기 위해 다음과 같은 질문을 여러분께 해 보도록 하겠습니다.

"Create Partition 명령을 통해 파티션을 생성할 때 offset 매개 변수를 지정하지 않는 경우 파티션의 시작 위치는 어디인가요?"

이 물음에서 offset 에 대해서 모르더라도 파티션을 생성할 때 파티션이 시작하는 위치는 어디가 되는지는 조금의 지식이라도 있으신(또는 파티션을 생성해본) 분들이라면 모두 알고 계실겁니다. 어떠한 파티션 생성 툴이더라도 특별한 옵션없이 파티션을 생성하게 되면 해당 파티션은 사용 가능한 첫 번째 공간의 맨 앞에서 시작 됩니다. 여기서 사용 가능한 공간이라는 것은 아직 파티션이 할당되지 않은 영역을 의미하며 그 영역의 맨 앞에서부터 파티션이 시작된다는 것 입니다. 여기서 사용 가능한 첫 번째 공간이라고 지칭한 이유는 할당되지 않은 공간이 여러 개로 나누어져 있을 수도 있기 때문이죠.

자 그럼 이제 제가 여러분께 했던 질문이 대충 무엇인지 아실 수 있으실 겁니다. offset 이란 바로 파티션이 시작될 위치를 지정해 주는 옵션입니다. 이 오프셋은 디스크를 기준으로 하며 위치 값은 MBR 디스크의 경우 실린더를 기준으로 합니다. 실린더가 무엇인지 설명드리진 않겠습니다. 하드 디스크에 대해 설명한 글들을 한 번 찾아보시기 바랍니다. 사실 이딴 내용이 실제 사용하는데에 중요한 것은 아니니까요. 파티션이 시작될 위치 그리고 디스크 기준 이것만 아시면 됩니다. (괜히 파티션 생성하러 왔다가 하드 디스크의 구조에 대해서 보고 있으면 사실 쒯소리 나잖아요?)

다음은 offset 매개 변수를 사용하여 파티션을 생성하는 모습입니다. 디스크는 아무런 파티션도 생성되지 않은 깨끗한 상태입니다. 생성될 파티션은 10GB 의 주 파티션으로 하고 offset 은 40GB 를 주도록 하겠습니다.

DiskPart 를 실행한 후 다음의 명령을 내려줍니다.

select disk=1
create partition primary size=10240 offset=40960


※ Offset 은 파티션이 시작될 위치입니다. XP DiskPart 는 MB 단위로 입력해 줍니다.
디스크 관리를 통해 결과를 살펴 본 모습입니다. 어떻습니까? 굳이 많은 설명을 해 드리지 않아도 되겠죠?






파티션 생성 명령의 예제

다음은 예제로 보여드리는 파티션 생성 명령입니다. 파티션의 모습과 명령은 다음과 같습니다. 오프셋 매개 변수는 사용하지 않는 예제입니다. (두 개의 스크린 샷은 동일한 내용으로 디스크 관리와 DiskPart 를 통해 각각 살펴본 모습입니다.)

디스크 관리로 살펴본 예제
(두 번째 디스크)
DiskPart 로 살펴본 예제

Select Disk=1
Create Partition Primary Size=10240
Assign
Create Partition Extended Size=81920
Create Partition Logical Size=20480
Assign
Create Partition Logical
Assign
Create Partition Primary
Assign









파티션 삭제하기

DiskPart 에서 파티션을 삭제하는 명령어는 Delete 입니다. DiskPart 에서는 두 가지 방법으로 파티션을 삭제할 수 있는데 그 차이는 포커스를 어디에 두느냐입니다. 포커스를 파티션에 두는 경우와 볼륨에 두는 경우, 이렇게 두 가지 방법으로 파티션을 삭제할 수 있습니다.

하지만 확장 파티션의 경우 볼륨이 아니기 때문에 포커스를 파티션으로 두는 방법으로만 삭제할 수 있습니다. 다음은 동일한 파티션을 파티션과 볼륨으로 각기 다르게 포커스를 주어 삭제하는 예제입니다.

포커스를 파티션에 주고 삭제하는 방법입니다. DiskPart 를 실행한 후 다음의 명령을 내려줍니다.

select disk=1
list partition
select partition=1

delete partition


※ 중간의 List Partition 은 삭제할 파티션의 번호를 확인하기 위함입니다.
 
포커스를 볼륨에 주고 삭제하는 방법입니다. DiskPart 를 실행한 후 다음의 명령을 내려줍니다.

list volume
select volume=4

delete volume


※ 중간의 List volume 은 삭제할 볼륨의 번호를 확인하기 위함입니다.



위에서 삭제한 파티션은 모두 동일한 예제입니다. 이렇듯 포커스를 어디에 주느냐에 따라서 Delete PartitionDelete Volume 명령을 적절히 선택해서 사용하시면 됩니다. 확장 파티션은 Delete Partition 을 통해서 삭제할 수 있으며 확장 파티션내에 모든 논리 드라이브가 미리 삭제가 되어야 합니다.








디스크 정리

DiskPart 에서 디스크에 존재하는 모든 파티션과 포맷을 제거하는 명령어는 Clean 입니다. 이 때는 MBR 과 GPT 정보 또한 초기화 됩니다. 즉, Clean 명령은 현재 디스크의 상태를 깨끗하게 청소한다고 할 수 있습니다. 디스크에 존재하는 모든 파티션 정보가 날아가니 반드시 모든 파티션을 삭제하고자하는 디스크에서만 사용하시기 바랍니다.

Clean 명령은 모든 파티션 뿐만 아니라 디스크에 기록된 모든 데이터도 함께 삭제할 수 있는데 이 때는 All 이라는 매개 변수가 사용됩니다. 디스크의 모든 공간을 0 으로 재기록하는 과정을 거치게 되니 작업을 완료하는데에 그만큼 시간이 걸리게 됩니다.

포커스를 파티션에 주고 삭제하는 방법입니다. DiskPart 를 실행한 후 다음의 명령을 내려줍니다.

select disk=1
clean



※ List Partition 은 파티션이 삭제된 모습을 보여드리기 위해 추가한 것 입니다.









파티션의 활성화, 비활성화

활성 파티션은(Active Partition) 주 파티션에만 설정 가능하며 활성 파티션이 있어야지만 부팅할 수 있습니다. 보통 우리가 비활성 주 파티션 또는 논리 드라이브에 윈도우를 설치하더라도 부팅이 가능한 이유는 윈도우의 부팅 파일들이 자동으로 활성 파티션에 저장이 되기 때문입니다. 만약 시스템에 활성 파티션이 하나도 없다면 시스템은 부팅할 수 없습니다. 그렇기 때문에 기본적으로 따로 활성 파티션을 설정하지 않더라도 첫 번째 디스크의 첫 번째 주 파티션이 활성 파티션으로써 설정됩니다.

DiskPart 에서 파티션을 활성화하는 명령어는 Active 입니다. 반대로 비활성화하는 명령어는 Inactive 입니다. 하나의 디스크에 활성화할 수 있는 파티션은 오직 하나이며 만약 다른 파티션을 활성화하면 자동으로 기존의 활성 파티션은 비활성화 됩니다. (특정 프로그램의 경우 활성 파티션을 강제로 다수 설정할 수 있습니다. 하지만 권장하는 것은 아닙니다.)

파티션을 활성화하는 예제입니다. DiskPart 를 실행한 후 다음의 명령을 내려줍니다.

select disk=0
select partition=2
active



※ 중간의 Detail Partition 은 파티션의 활성화 여부의 변경 사항을 확인하기 위함입니다.
 
파티션을 비활성화하는 예제입니다. DiskPart 를 실행한 후 다음의 명령을 내려줍니다.

select disk=0
select partition=2
inactive



※ 중간의 Detail Partition 은 파티션의 활성화 여부의 변경 사항을 확인하기 위함입니다.









드라이브 문자 할당하기

DiskPart 에서 드라이브 문자를 할당하는 명령어는 Assign 입니다. 드라이브 문자를 할당하기 위해선 해당 파티션의 드라이브 문자가 비어있어야 합니다.

Assign 을 사용하기 이전에 반드시 드라이브 문자를 할당할 개체에 포커스를 지정해 주어야 하는데 이 때 파티션 또는 볼륨에 포커스를 지정해 줄 수 있습니다.

Assign 에서 드라이브 문자를 할당하는 매개 변수는 Letter 입니다. 만약 Assign 명령을 내릴 때 아무런 매개 변수도 지정하지 않으면 DiskPart 는 자동으로 비어있는 드라이브 문자 중 가장 첫 번째 문자를 할당합니다. 다음은 동일한 개체를 파티션과 볼륨으로 포커스를 지정하여 드라이브 문자를 할당하는 예제입니다.

포커스를 파티션에 주는 예제입니다. DiskPart 를 실행한 후 다음의 명령을 내려줍니다.

select disk=1
select partition=1
assign letter=l
 
포커스를 볼륨에 주는 예제입니다. DiskPart 를 실행한 후 다음의 명령을 내려줍니다.

select volume=4
assign letter=l










드라이브 경로 할당하기

윈도우에서는 기본적으로 드라이브 경로라는(마운트) 것을 지정할 수 있습니다. 드라이브 경로란 말 그대로 어떠한 드라이브를 문자가 아닌 다른 드라이브의 폴더로써 접근하는 기능으로 드라이브를 마치 폴더와 같이 사용할 수 있습니다. 잘만 활용하면 꽤나 유용한 기능으로 이와 같이 드라이브 경로를 할당하는 작업을 보통 마운트라 부릅니다.

DiskPart 에서 드라이브 경로를 할당하는 명령어는 Assign 입니다. 그리고 경로를 할당하는 매개 변수는 Mount 입니다.

DiskPart 에서 드라이브 경로를 할당하기 위해선 반드시 해당 파티션을(또는 볼륨) 탑재 할 빈 폴더가 미리 준비가 되어 있어야 합니다. 또한 해당 폴더를 포함하고 있는 파티션은 NTFS 파일 시스템으로 포맷이 되어있어야합니다. FAT32 방식으로 포맷된 파티션에 존재하는 폴더에는 드라이브를 마운트할 수 없습니다.

하나의 파티션은 하나의 드라이브 문자만을 가질 수 있는 것에 반해 경로는 여러 개를 설정할 수 있습니다. 또한 드라이브 문자와 경로 두 가지를 모두 동시에 가질 수도 있으며 드라이브 문자 없이 경로만으로 설정하여 사용할 수도 있습니다. 정리하자면 다음과 같습니다.

  • 파티션이 탑재될 폴더가 존재하는 파티션은 반드시 NTFS 파일 시스템이어야 합니다. 탑재되는 파티션의 파일 시스템은 상관이 없습니다.

  • 해당 폴더는 미리 생성이 되어 있어야 하며 반드시 비어있어야 합니다.

  • 하나의 파티션은 여러 개의 드라이브 경로를 가질 수 있습니다. 하지만 하나의 폴더에 여러 개의 파티션을 경로로 할당할 순 없습니다.

드라이브 경로 또한 문자와 마찬가지로 포커스를 파티션과 볼륨에 주는 방법이 있습니다. 다음은 동일한 작업을 각각 파티션과 볼륨에 포커스를 설정하여 드라이브 경로를 할당하는 예제입니다. (파티션이 탑재될 폴더는 미리 생성해 놓았습니다.)

포커스를 파티션에 주는 예제입니다. DiskPart 를 실행한 후 다음의 명령을 내려줍니다.

select disk=1
select partition=1
assign mount=d:\wintt



※ D:\WINTT 폴더는 미리 생성이 되어 있어야 합니다.
 
포커스를 볼륨에 예제입니다. DiskPart 를 실행한 후 다음의 명령을 내려줍니다.

select volume=4
assign mount=d:\wintt











드라이브 문자/경로 제거하기

DiskPart 에서 드라이브 문자 및 경로를 제거하는 명령어는 Remove 입니다. 문자를 제거하는 매개 변수는 Letter 이고 경로를 제거하는 매개 변수는 Mount 입니다. All 매개 변수를 지정할 경우 해당 파티션에(또는 볼륨) 지정된 드라이브 문자와 경로를 모두 제거합니다.

드라이브 문자와 경로를 지정할 때와 마찬가지로 포커스를 파티션에 두거나 또는 볼륨에 두고 작업을 할 수 있습니다. 다음은 드라이브 문자와 경로를 제거하는 예제입니다. 예제에서는 포커스를 파티션에 두고 작업하는 것을 기준으로 하겠습니다.

드라이브 문자를 제거하는 예제입니다. DiskPart 를 실행한 후 다음의 명령을 내려줍니다.

select disk=1
select partition=1
remove letter=l



※ Detail Partition 은 작업의 결과를 확인하기 위함입니다.
 
드라이브 경로를 제거하는 예제입니다. DiskPart 를 실행한 후 다음의 명령을 내려줍니다.

select disk=1
select partition=1
remove letter=d:\wintt

 
드라이브 문자와 경로를 모두 제거하는 예제입니다. DiskPart 를 실행한 후 다음의 명령을 내려줍니다.

select disk=1
select partition=1
remove all










스크립팅

DiskPart 는 스크립팅된 작업을 지원합니다.DiskPart 스크립트 명령을 시작하려면 Diskpart /s script.txt 명령을 사용하면 됩니다. 다음은 Script.txt 파일의 예제입니다.

rem DiskPart 스크립팅 예제
Select Disk=1
Create Partition Primary Size=10240
Assign
Create Partition Extended Size=81920
Create Partition Logical Size=20480
Assign
Create Partition Logical
Assign
Create Partition Primary
Assign


Rem 은 주석을 의미합니다. 명령어는 줄 단위로 구분되며 DiskPart 인터프리터에서와 동일하게 작성하시면 됩니다.

기본적으로 DiskPart 는 스크립트에 문제가 있을 경우 스크립트가 종료되고 오류 코드를 반환하게 됩니다. 스크립트에 문제가 있더라도 스크립트를 종료하지 않고 계속 진행하고자 한다면 명령에 Noerr 매개 변수를 포함시키면 됩니다. 하지만 모든 명령이 Noerr 매개 변수를 지원하는 것은 아닙니다.

Diskpart의 오류 코드 목록은 다음과 같습니다.
  • 0 - No error occurred. The entire script ran without failure.
  • 1 - A fatal exception occurred. There may be a serious problem.
  • 2 - The arguments specified on a Diskpart command line were incorrect.
  • 3 - Diskpart was unable to open the specified script or output file.
  • 4 - One of the services Diskpart uses returned a failure.
  • 5 - A command syntax error occurred. The script failed because an object was improperly selected or was invalid for use with that command.


: