디스크와 파티션

[DiskPart] 파티션의 크기 축소하기 - Shrink

CApple 2012. 4. 27. 07:40
파티션(볼륨)의 크기를 축소하는 Shrink 명령

1. 파티션 축소하기의 기초

이것도 지난 디스크 관리 글에서 모두 설명을 드렸었죠. 파티션 축소이지만 확장 때와 마찬가지로 실제론 볼륨 축소의 개념에 더 가깝다는 것 잊지 마시구요. 아무튼 또 요약하겠습니다.

기본 디스크에서의 파티션 축소

파티션의 축소는 파티션의 마지막 섹터에서 파티션의 시작 방향으로 축소가 이루어지며 축소 가능한 최대 크기는 파티션의 마지막 섹터에서 이동할 수 없는 파일이 위치하는 섹터를 만날 때 까지의 용량입니다. 축소 대상은 볼륨(주 파티션과 논리 드라이브)입니다.

- NTFS 로 포맷되었거나 아직 포맷되지 않은(RAW) 주 파티션과 논리 드라이브

축소는 해당 파티션에서 이동할 수 없는 파일을 만난 지점까지만 가능함.



이러한 파티션 축소는 부트 매니저가 설치된 시스템 파티션은 물론 윈도우가 설치된 부팅 파티션 또한 윈도우가 실행 중인 상태에서도 바로 축소할 수 있습니다. 꼭 윈도우 PE 나 컴퓨터 복구로 부팅하지 않아도 된다는 점 기억하시구요. NTFS 나 아예 포맷되지 않은 파티션만 가능하기 때문에 FAT32 나 exFAT 으로 포맷된 파티션은 축소할 수 없다는 사실도 기억하시길 바랍니다.



2. Shrink 명령의 이해

이제 DiskPart 에서 파티션을 축소하는 명령을 알아보도록 하겠습니다. DsikPart 에서 파티션을 축소하는 명령은 Shrink 입니다. 파티션을 축소하는 방법은 간단하게 축소를 원하는 볼륨(파티션)을 선택한 후 Shrink 명령을 내리면 되죠.


파티션(볼륨)의 축소

Select Volume=C [Select Disk=0, Select Partition=1]
Shrink Desired=10240


Desired=[축소할 크기(MB)]


여기서 Desired 매개 변수는 Extend 의 Size 매개 변수 때와 마찬 가지로 해당 파티션에서 뺄(축소할, 줄일) 크기를 의미하는 겁니다. 최종적으로 원하는 파티션의 크기가 아니라요. 그러니까 또 계산해보면 이런 거죠.

① 원래 크기 -> 40960MB
② 원하는 크기 -> 30720MB
Desired(① - ②) -> 10240MB



간단하죠? 단위는 역시나 MB(메가 바이트) 입니다. 설치류 말고요. 220 Byte 란 의미죠. 이제 Desired 매개 변수를 생략하면 다음과 같은 의미입니다.

Shrink : 이동할 수 없는 파일을 만날 때까지 축소 [가능한 최대로 축소]


그러니까 무조건 최대로 축소 가능한 용량까지 축소해라. 그 의미란 거죠. 간단하죠?



3. 축소 가능한 용량의 질의

그런데 이러한 Shrink 명령은 실제 볼륨의 축소 외에 다른 기능도 가지고 있습니다. 우선 그것을 이야기하기 전에 먼저 생각을 해보자고요. 파티션 확장 때는 디스크 관리를 통해 딱 보면 최대로 얼마까지 확장 할 수 있는지 그 용량을 알 수 있었죠? 뒤에 남아있는 할당되지 않은 영역(사용 가능한 공간 포함)의 크기만 확인을 하면 되니까요. 그러니까 이건 누가봐도 딱 보면 그냥 견적이 나오는 거에요.

얼마까지 확장 가능한지 딱 보면 견적 나오지?



하지만 축소는 다르죠. 파티션만 보고는 어디까지 축소할 수 있는지 알 수가 없어요. 알 수 있을거 같아요? 그럼 아래 스크린 샷만 보고 해당 파티션이 얼마까지 축소가 가능한 지 말해봐요.
 

그럼 이건 얼마까지 축소될 것 같냐? 넌 알 수 있냐? 모르겠지? 나도 모르겠다.



모르겠죠? 왜? 우리는 해당 파티션에 이동할 수 없는 파일이 어느 위치에 있는지 모르니까요. 그건 나도 몰라 너도 몰라 DiskPart 도 아직은 몰라요. 너나 나나 딱 봐선 견적이 안 나와요. 그래서 이동할 수 없는 파일이 어디쯤에 쳐박혀 있고 그로 인해 해당 파티션을 최대 얼마 만큼 축소할 수 있는지 알아야 겠죠? 그래야 견적을 짜죠.

그 때 사용하는게 QueryMax 란 매개 변수 입니다. 현재 볼륨에서 최대로 축소할 수 있는(Max) 용량을 볼륨님에게 여쭈어 보거라.(Query) 간단하죠? 먼저 물어봐! 질의를 날려! 그럼 돼! 간단하잖아요?

사용자 : 음하하하~ 파티션의 크기를 10GB 만 축소해야지~ 가랏! Shrink Desired=10240

DiskPart : 오빠... 그 10GB 안에 이동할 수 없는 파일이 있어요. 오빠... 내가 오빠 미워하는 건 아닌데... 이건 안 돼... 안 되는 건 안 되는 거에요... 미안해요... 어흑~

사용자 : 축소가 안 된다고? 웃기지마. 얼마야? 얼마면 돼? 얼마면 널 축소할 수 있는 건데?

DiskPart : 그건 QueryMax 로 물어보면 알려 줄 거에요. 그 용량 안에서 축소하면 돼요. 알아보고 오세요. 기다릴께요...

얼마면 널 축소할 수 있는 거니? 난 이런 걸 왜 만든 거니? 재용이 아빠 거니? 응?



최대로 축소 가능한 용량의 쿼리

Shrink QueryMax

해당 볼륨에서 최대로 축소할 수 있는 용량은 desired=115537 입니다 고객님~ 그 안에서 축소하세요~






파티션(볼륨) 축소하기

파티션(볼륨) 축소 과정의 요약

볼륨(파티션) 선택(Select) -> 축소 가능 용량 확인(Shrink) -> 파티션 축소(Shrink)

자~ 대충 파티션의 축소 과정은 위와 같이 나타낼 수 있습니다. 근데 이 과정 중에서 녹색으로 표시한 QueryMax 를 통해 해당 볼륨에서 축소 가능한 용량을 확인하는 과정은 꼭 필요한 건 아니라고 할 수 있죠. 그냥 바로 축소해도 되요. 하지만 이렇게 축소 가능한 용량을 확인하지 않고 무작정 바로 축소를 진행할 경우 위에서 말한 것과 같은 이유로 축소가 실패할 수도 있습니다.

뭘 이렇게 복잡하게 말해? 그냥 축소 안 됨! 그럼 끝나는거 아냐?


그러니까 우리는 무조건 최대 크기로 축소하려는 경우가 아니라면 QueryMax 를 통해 먼저 축소 가능한 용량을 확인한 후 실제로 축소하는 작업을 진행하는 것을 기본으로 삼도록 하죠. 아무튼 그럼 실제 예제를 보도록 하죠.


예제 1

현재 128GB 의 크기를 가지고 있는 C: 드라이브 파티션에서 68GB(69632MB) 를 축소하여 최종적으로 60GB 의 크기로 만드는 예제입니다. 과정 중간 질의를 통해 68GB 의 축소가 가능한지 확인합니다.

[작업 전]



[DiskPart 작업]
diskpart
select volume=c
shrink querymax
shrink desired=69632


[작업 후]




예제 2

현재 128GB 의 크기를 가지고 있는 C: 드라이브 파티션을 가능한 최대 크기로 축소합니다. 최대 크기로 축소할 것이기 때문에 따로 QueryMax 확인 절차는 필요가 없습니다. [QueryMax 와 동일한 값으로 축소됨. 정확한 값은 파티션과 저장된 파일의 위치에 따라 모두 다름. 그렇기에 아래의 결과는 어디까지나 예제 파티션에 국한된 결과임.]

[작업 전]



[DiskPart 작업]
diskpart
select volume=c
shrink


[작업 후]






기타 이야기

파티션의 확장 때 모두 이야기를 드렸던 이유와 동일한 이유로 확장 파티션은 축소할 수 없습니다.




참고로 이동할 수 없는 파일은 주로 시스템 파일이나 현재 사용 중인 파일, MFT 등이니 파티션의 축소 크기를 조금이라도 더 늘리고 싶다면 해당 볼륨이 분리된 상태에서(예를 들어 윈도우로 부팅하지 않은 상태 즉, PE 로 부팅한 상태 등) 공간 위주의 디스크 조각 모음을 시도해보는 것도 좋습니다. [단! 반드시 축소 가능한 최대 용량이 늘어난다는 보장은 없음.]

조각 모음 프로그램 중엔 재부팅 후 윈도우로 진입 전 시스템 파일의 조각 모음까지 진행해주는 기능이 포함된 경우도 있으니 그러한 조각 모음을 진행한 후 이후 볼륨 축소를 진행해 보세요.

Piriform Defrahhler - 작고 가벼운 무료 디스크 조각 모음


파티션 축소하기는 여기까지...

Desired? 얼마만큼 축소하길 바란다고? 왜 Extend 는 얼마의 크기로 확장해라 Size 면서 Shrink 는 Desired 인데? 왜? 뭐 때문에? Minimum 때문에?