시작하기 전에
디스크에 새로운 파티션을 생성하는 것에 대한 기초적인 이야기는 지난 글들에서 모두 했습니다.
해당 내용들을 기초로 포스팅을 시작하도록 하겠습니다. 자잘하게 나누지 말고 화끈하게 한 편에 끝내죠.
파티션을 생성하는 Create Partition 명령
1. Create Partition 명령의 이해
일단 DiskPart 에서 파티션을 생성하는 명령은 Create Partition 입니다. 사용법은 간단합니다. 파티션을 생성할 디스크를 선택한 후 해당 명령을 내리면 되죠. 이러한 Create Partition 명령은 아래와 같은 형식으로 이루어져 있습니다.
간단하죠? 자 이제 여기에서 Size 와 Offset 매개 변수는 생략하면 다음과 같은 의미가 됩니다. [* 윈도우 7 DiskPart 기준]
요건 보통 간단하게,
① Size 를 생략하면 파티션의 크기를 남은 공간 전체로 하여 생성,
② Offset 을 생략하면 할당되지 않은 영역의 처음 시작 부분부터 파티션을 시작,
이라고 표현을 많이 하죠. 근데 솔직히 이렇게 외우셔도 되는데 Offset 에서 좀 애매한 상황이 있습니다. 그리고 DiskPart 는 버전에 따라 좀 혈압이 상승하게 대처합니다. 이건 좀 이야기가 필요해서 뒤에서 스크린 샷이랑 함께 좀 더 자세하게 이야기를 드리겠습니다.
새 파티션 생성하기
우리가 디스크에서 파티션을 생성할 때 행하는 실질적인 작업들은 아래와 같습니다.
파티션 생성 과정의 요약
이처럼 실제로 파티션을 생성할 때는 단순히 파티션 생성 작업 뿐만 아니라 포맷과 드라이브 문자 할당까지 연속해서 작업을 하게 되는게 보통이죠. 뭐 포맷이나 드라이브 문자 할당 과정이 필요없다면 생략해도 됩니다. 그건 여러분의 상황에 맞게 잘 조절하면 되는 거죠. 그리고 해당 명령들에 대해서는 나중에 따로 자세히 다룰테니 이번 글에선 그에 대한 내용은 우선 생각하지 마시고 파티션 생성 작업에만 집중하세요.
그럼 예제를 통해서 실제로 파티션을 생성하는 작업에 대해서 알아보도록 하죠.
예제 1
가장 일반적인 크기를 지정하여 파티션을 생성하는 작업에 대한 예제입니다.
예제 2
디스크의 남은 공간 전체를(할당되지 않은, 사용 가능한 공간) 할당하여 파티션을 생성하는 예제입니다. Size 매개 변수를 생략하는 것이 어떠한 의미인지 보세요.
예제 3
100GB 크기를 가진 확장 파티션을 생성하고 해당 확장 파티션에 20GB 크기의 논리 드라이브를 생성하는 예제입니다. 논리 드라이브는 확장 파티션 안에서만 생성이 되고 디스크에 확장 파티션은 하나만 존재할 수 있으니 논리 드라이브를 생성하기 위해 따로 확장 파티션을 지정하지 않아도 됩니다. [사실 확장 파티션을 생성하게 되면 자연스럽게 확장 파티션으로 포커스가 이동하지만 그런 상황이 아니더라도 이와 같은 이유로 확장 파티션이 존재한다면 디스크 선택 후 확장 파티션 선택없이 바로 논리 드라이브를 생성하는 것이 가능합니다.]
어떤가요? 대충 파티션을 생성하는 것에 대해서 아시겠죠? 이제 여기에서 한 발 더 나아가보죠.
시작 위치를 지정하여 파티션 생성하기 - 오프셋 매개 변수
디스크에서 파티션을 생성하면 해당 파티션은 어디에서 시작할까요? 간단합니다. 할당되지 않은(사용 가능한 공간) 영역의 첫 시작 부분에서 자동으로 시작하죠. 보통 이게 기본이에요.
그런데 오프셋 매개 변수는 이러한 파티션의 시작 위치를 사용자가 임의로 지정하는 겁니다. 간단하죠? 그럼 실제로 어떻게 적용되는지 아래의 예제로 보시죠.
예제 4
이것보다 더 화끈한 예제가 있을까요? 좀 더 자세하게 이야기를 하면 오프셋의 단위는 KB 이고, 기준은 디스크의 시작 지점에서 보았을 때 어느 지점(몇 KB 지점)이냐? 라고 생각하시면 됩니다. 주 파티션이고 확장 파티션이고 논리 드라이브고 뭐고 무조건 디스크 시작 지점에서 파티션 시작 지점까지의 공간 크기를 입력하면 되는 것이죠.
혹 헷갈릴 수 있으니 한 가지 예제를 더하죠. 위의 예제 디스크 0 에서 동일하게 오프셋을 100GB 위치로 지정하여 남은 공간 전체를 사용하도록 파티션을 생성하면 아래와 같이 됩니다.
어렵지 않죠? 간단하잖아요? 안 그래요? 여기서 뭔 설명이 더 필요해요? 더 해줘요? 미안 더 설명할게 없어. 나도 더이상은 몰러~ 아~! 참고할 수 있는 이야기가 하나 있는데 크게 중요한 건 아니니까 아래 박스에서~
매우 애매한 상황에 대한 이야기
그러니까 제가 위에서 이렇게 정리를 해드렸단 말이죠.
그냥 보통 Size 를 생략하면 남은 공간 전체이고, Offset 을 생략하면 남은 공간의 처음 시작 지점부터이고, 뭐 이런 식으로만 외우고 보통 그렇게 외워도 크게 문제가 없습니다. 그리고 사실 그러한 상황이 대부분이니까요.
그런데 아래와 같은 경우가 있습니다. 예를 들어 아까와 같이 오프셋을 지정하여 할당되지 않은 영역의 중간쯤에 크기를 지정하여 파티션을 생성한 경우 이런 상황을 맞이할 수도 있죠.
보시는 것과 같이 할당되지 않은 영역이 두 개로 나누어져 있죠? 물론 이럴 땐 디스크 관리를 통해 파티션을 생성하면 뭐 크게 고민할게 없습니다. 그냥 원하는 할당되지 않은 지점을 선택하여 파티션을 생성하면 되니까요. 근데 DiskPart 를 활용할 때는 상당히 애매해집니다. 자 그럼 제가 문제 하나를 내죠.
답은 이미 제가 정리한 내용 속에 모두 나와 있습니다. 그냥 바로 보시죠.
간단하죠? 할당되지 않은 공간이 여러 개 있을 때, Offset 을 생략하게 되면 DiskPart 는 할당되지 않은 공간들 중 가장 큰 영역의 시작 지점을 파티션의 시작 위치로 잡습니다. [7, 비스타]
그리고 Size 매개 변수를 생략하면 해당 할당되지 않은 영역 끝까지의 공간만 사용하여 파티션이 할당되죠. 다른 할당되지 않은 영역까지 넘어가서 모두 잡는게 아니라요. 기본 디스크에서 파티션은 하나의 공간 안에서 연속되어야 하지 나눠질 수는 없는 거에요. 그게 나눠지면 그건 동적 디스크의 볼륨이나 그러는 거죠. 이건 간단하죠? Size 는 간단해요. 문제는 Offset 이지...
제가 짜증나는게 뭔지 아세요? 자~ 지금 우리가 배우고 있는 건 윈도우 7 의 DiskPart 에요. DiskPart 도 윈도우마다 버전이 모두 다른 건 아시죠? 일단 이걸 우선 아시구요. 아래 박스를 보세요.
Size 와 Offset 은 여기까지... ㅡㅡ
기초가 명확하게 정립되지 않은 분들이 겪는 혼란 상황
자 이제 이야기하는 것은 DiskPart 의 문제가 아닙니다. 이건 확실히 하자구요. 이건 MBR 디스크와 GPT 디스크의 특성을 정확하게 이해하지 못한 분들이 겪는 혼란 문제에요. 몇 번째 그리고 몇 년째 이야기하는 것인지 모르겠지만 심지어 계속 제 글을 봐오신 분들도 종종 까먹으시는 분들이 보이시니 우선 정리부터 하죠.
일단 시작 전에 MBR 기본 디스크는 우리가 흔히 사용하는 디스크 형식이고 GPT 기본 디스크는 우리가 흔히 잘 사용 안 하는 디스크 형식입니다. 그러니까 여러분들은 그냥 내가 현재 사용하는 디스크가 MBR 기본 디스크구나 라고 간단하게 생각하시면 됩니다. 그럼 얼추 맞아요. 그래서 MBR 기본 디스크를 위주로 생각하시면 되는거죠. GPT 기본 디스크는 그냥 참고로만 알아두시면 되고요. 아셨죠?
1. MBR 기본 디스크 파티션의 한계
2. GPT 기본 디스크 파티션의 한계
그럼 이제 상황을 보죠. 아래의 디스크는 우리가 흔히 사용하는 MBR 기본 디스크입니다.
이건 이제 더이상 파티션을 나눌 수 없는 상황입니다. 이 상태에서 파티션을 더 만들려고 하면 무조건 실패하게 되는 거죠. 왜냐하면 MBR 기본 디스크의 파티션 개수 한계에 다다랐기 때문이죠. 주 파티션 4 개 잖아요? 그럼 이제 더이상 주 파티션이나 확장 파티션을 생성할 수 없어요. 이건 빌 게이츠를 복귀시키거나 심지어 잡스를 부활시켜도 안 되는 거에요.
확장 파티션을 생성할 수 없으니 논리 드라이브도 추가할 수 없죠. 이 상태에서는 더이상 뭘 할 수 있는 게 없는 거죠. 우선 이건 확실히 알아두세요. 이제 이 상태에서 해당 디스크를 GPT 디스크나 동적 디스크로 변환하지 않고 파티션을 더 생성하려면 한 가지 방법 밖에 없어요.
할당되지 않은 공간과 인접한 파티션 하나를 삭제하고 전체 공간을 확장 파티션으로 생성
이게 MBR 기본 디스크 내에서 해결할 수 있는 유일한 방법입니다. 이거 외엔 GPT 디스크나 동적 디스크로 변환하는 방법 밖에는 없는데 그건 분명 여러분이 원하는 결과가 아닐거라는게 거의 확실합니다. 일단은 그쪽으로의 해결법은 생각하지 마세요. 가장 먼저 부팅이 꼬일 수 있고 멀티 부팅 환경에서 다른 윈도우에서 해당 디스크를 못 읽을 수도 있으니까요.
아무튼 이와 동일한 경우의 문제가 발생한 실제 예제를 하나 소개하자면 그 때는 주 파티션 3 개 + 확장 파티션이었지만 디스크의 남은 공간이 확장 파티션의 사용 가능한 공간이 아닌 디스크의 할당되지 않은 영역으로 남아버린 경우가 있었습니다. [보통 일부러 그렇게 만들라고 시켜도 힘든데...]
잘못 나눠진 파티션의 예제 (1) - 타 커뮤니티 질문
해당 글에서는 디스크 관리를 통해 해결하는 방법을 알려드렸는데 이럴 때 DiskPart 를 통해 문제를 해결한다면 어떻게 해야 될까요?
볼륨을 지우는 것은 동일한데 확장 파티션은 지우기 위해서 또 선택을 해줘야 하죠. 그리고 윈도우 7 포함 DiskPart 에서 확장 파티션은 무조건 0 번 파티션이구요. 이것도 다뤘죠? 그럼 이제 간단하게 위의 명령들이 이해가 되시죠? [근데 XP DiskPart 는 확장 파티션을 List Partition 명령으로 찾아야 합니다. ㅡㅡ; 열받으니까 그냥 우선 이건 생각하지 말죠.]
이 내용은 여기까지 하죠.
MBR 기본 디스크의 한계 - 2TB
예전 설명이 좀 난해해서 지우고 다시 적을께요. 이젠 저까지 헷갈리려고 하거든요. 다른거 다 필요없고 이거 하나만 기억하시면 되요. MBR 은 32 비트 주소 체계를 사용한다고요. 즉, 주소를 232 = 4,294,967,296 개까지 사용할 수 있고, 섹터 하나에 하나의 주소가 지정되니 총 4,294,967,296 개의 섹터까지 인식할 수 있고 관리할 수 있는 거죠. 섹터 하나당 512 Byte 니까.
4,294,967,296 x 512 Byte = 2,199,023,255,552 Byte = 2,147,483,648 KB = 2,097,152 MB = 2,048 GB = 2 TB
해서 2TB(정확하게 표현하면 2TiB) 가 관리할 수 있는 한계가 되는 겁니다.
참고로 MBR 에서는 파티션의 시작 위치와 끝 위치를 기록하고 파티션의 크기도 기록해서 관리합니다. 근데 이게 모두 32 비트 한계에 걸립니다. 고로 2TB 가 넘는 파티션은 만들 수 없고, 파티션을 2TB 이하로 쪼개서 관리하려고 해도 2TB 를 넘어서는 영역은 그 위치를 기록할 수 없으니(파티션의 시작과 끝을 기록해야 하는데) 사용할 수 없는 공간이 되는 것이죠. 고로 2TB 가 넘어서는 영역은 있어도 쓰지 못하는 영역이 되는 것이죠.
디스크 자체는 48 비트 LBA 주소 체계를 사용하기에 2TB 가 넘는 용량도 정상적으로 인식이 가능하지만(최대 144PB 까지) 그 안에서 다시 파티션 등을 관리하는 MBR 이 32 비트라 2TB 한계가 생겨버린 겁니다. [예전 디스크가 28 비트 LBA 주소 체계를 사용하던 시절엔 반대의 이유로 128GB 한계가 있기도 했죠.]
수정 전 잘못 알고 2TB 가 넘어서는 디스크는 파티션을 쪼개서 사용해야 한다고 말했는데 명백하게 잘못 이해한 저의 실수였습니다. 2TB 를 넘어서는 공간은 디스크 자체적으로는 인식이 되지만 그래서 디스크 관리 등을 통해서 보면 해당 용량도 보이지만 위에서 설명드린 MBR 의 한계 때문에 사용을 할 수는 없습니다. [2TB 를 넘어서는 영역은 단순히 할당되지 않은 영역으로 표시됩니다. 해당 공간에는 파티션 생성 등을 할 수 없습니다.]
이걸 극복하기 위해 나온 것이 GPT 디스크 입니다. GPT 는 64 비트 주소 체계를 사용하여 이런 한계를 극복한 것이죠. 아무튼 DiskPart 를 통한 파티션의 생성은 여기까지 하죠. ^^
디스크에 새로운 파티션을 생성하는 것에 대한 기초적인 이야기는 지난 글들에서 모두 했습니다.
해당 내용들을 기초로 포스팅을 시작하도록 하겠습니다. 자잘하게 나누지 말고 화끈하게 한 편에 끝내죠.
파티션을 생성하는 Create Partition 명령
1. Create Partition 명령의 이해
일단 DiskPart 에서 파티션을 생성하는 명령은 Create Partition 입니다. 사용법은 간단합니다. 파티션을 생성할 디스크를 선택한 후 해당 명령을 내리면 되죠. 이러한 Create Partition 명령은 아래와 같은 형식으로 이루어져 있습니다.
Create Partition Primary Size=10240 Offset=1024
Create Partition [파티션 종류] Size=[파티션 크기(MB)] Offset=[파티션 시작 위치(KB)]
Create Partition Primary = 주 파티션 생성
Create Partition Extended = 확장 파티션 생성
Create Partition Logical = 논리 드라이브 생성
Create Partition Extended = 확장 파티션 생성
Create Partition Logical = 논리 드라이브 생성
Size=xxxx : 파티션의 크기 - MB 단위로 지정
Offset=xxxx : 디스크 전체 공간에서 파티션의 시작 위치 - KB 단위로 입력
Offset=xxxx : 디스크 전체 공간에서 파티션의 시작 위치 - KB 단위로 입력
간단하죠? 자 이제 여기에서 Size 와 Offset 매개 변수는 생략하면 다음과 같은 의미가 됩니다. [* 윈도우 7 DiskPart 기준]
Size 생략 : 파티션의 크기로 할당되지 않은 영역의 연속된 전체 공간을 지정.
Offset 생략 : 가장 큰 할당되지 않은 영역의 시작 지점을 파티션의 시작 위치로 지정.
Offset 생략 : 가장 큰 할당되지 않은 영역의 시작 지점을 파티션의 시작 위치로 지정.
요건 보통 간단하게,
① Size 를 생략하면 파티션의 크기를 남은 공간 전체로 하여 생성,
② Offset 을 생략하면 할당되지 않은 영역의 처음 시작 부분부터 파티션을 시작,
이라고 표현을 많이 하죠. 근데 솔직히 이렇게 외우셔도 되는데 Offset 에서 좀 애매한 상황이 있습니다. 그리고 DiskPart 는 버전에 따라 좀 혈압이 상승하게 대처합니다. 이건 좀 이야기가 필요해서 뒤에서 스크린 샷이랑 함께 좀 더 자세하게 이야기를 드리겠습니다.
새 파티션 생성하기
우리가 디스크에서 파티션을 생성할 때 행하는 실질적인 작업들은 아래와 같습니다.
파티션 생성 과정의 요약
디스크 선택(Select) -> 파티션 생성(Create Partition) -> 포맷(Format) -> 드라이브 문자 할당(Assign)
이처럼 실제로 파티션을 생성할 때는 단순히 파티션 생성 작업 뿐만 아니라 포맷과 드라이브 문자 할당까지 연속해서 작업을 하게 되는게 보통이죠. 뭐 포맷이나 드라이브 문자 할당 과정이 필요없다면 생략해도 됩니다. 그건 여러분의 상황에 맞게 잘 조절하면 되는 거죠. 그리고 해당 명령들에 대해서는 나중에 따로 자세히 다룰테니 이번 글에선 그에 대한 내용은 우선 생각하지 마시고 파티션 생성 작업에만 집중하세요.
그럼 예제를 통해서 실제로 파티션을 생성하는 작업에 대해서 알아보도록 하죠.
예제 1
가장 일반적인 크기를 지정하여 파티션을 생성하는 작업에 대한 예제입니다.
[작업 전]
[DiskPart 작업]
diskpart
select disk=1
create partition primary size=40960
format fs=ntfs quick
assign
exit
create partition primary size=40960
format fs=ntfs quick
assign
exit
[작업 후]
예제 2
디스크의 남은 공간 전체를(할당되지 않은, 사용 가능한 공간) 할당하여 파티션을 생성하는 예제입니다. Size 매개 변수를 생략하는 것이 어떠한 의미인지 보세요.
[작업 전]
[DiskPart 작업]
diskpart
select disk=0
create partition primary
format fs=ntfs quick
assign
exit
create partition primary
format fs=ntfs quick
assign
exit
[작업 후]
예제 3
100GB 크기를 가진 확장 파티션을 생성하고 해당 확장 파티션에 20GB 크기의 논리 드라이브를 생성하는 예제입니다. 논리 드라이브는 확장 파티션 안에서만 생성이 되고 디스크에 확장 파티션은 하나만 존재할 수 있으니 논리 드라이브를 생성하기 위해 따로 확장 파티션을 지정하지 않아도 됩니다. [사실 확장 파티션을 생성하게 되면 자연스럽게 확장 파티션으로 포커스가 이동하지만 그런 상황이 아니더라도 이와 같은 이유로 확장 파티션이 존재한다면 디스크 선택 후 확장 파티션 선택없이 바로 논리 드라이브를 생성하는 것이 가능합니다.]
[작업 전]
[DiskPart 작업]
diskpart
select disk=1
create partition extended size=102400
create partition logical size=20480
format fs=ntfs quick
assign
exit
create partition extended size=102400
create partition logical size=20480
format fs=ntfs quick
assign
exit
[작업 후]
어떤가요? 대충 파티션을 생성하는 것에 대해서 아시겠죠? 이제 여기에서 한 발 더 나아가보죠.
시작 위치를 지정하여 파티션 생성하기 - 오프셋 매개 변수
디스크에서 파티션을 생성하면 해당 파티션은 어디에서 시작할까요? 간단합니다. 할당되지 않은(사용 가능한 공간) 영역의 첫 시작 부분에서 자동으로 시작하죠. 보통 이게 기본이에요.
그런데 오프셋 매개 변수는 이러한 파티션의 시작 위치를 사용자가 임의로 지정하는 겁니다. 간단하죠? 그럼 실제로 어떻게 적용되는지 아래의 예제로 보시죠.
예제 4
[작업 전]
[DiskPart 작업]
diskpart
select disk=1
create partition primary size=10240 offset=104857600
format fs=ntfs quick
assign
exit
create partition primary size=10240 offset=104857600
format fs=ntfs quick
assign
exit
[작업 후]
이것보다 더 화끈한 예제가 있을까요? 좀 더 자세하게 이야기를 하면 오프셋의 단위는 KB 이고, 기준은 디스크의 시작 지점에서 보았을 때 어느 지점(몇 KB 지점)이냐? 라고 생각하시면 됩니다. 주 파티션이고 확장 파티션이고 논리 드라이브고 뭐고 무조건 디스크 시작 지점에서 파티션 시작 지점까지의 공간 크기를 입력하면 되는 것이죠.
혹 헷갈릴 수 있으니 한 가지 예제를 더하죠. 위의 예제 디스크 0 에서 동일하게 오프셋을 100GB 위치로 지정하여 남은 공간 전체를 사용하도록 파티션을 생성하면 아래와 같이 됩니다.
select disk=0
create partition primary offset=104857600
create partition primary offset=104857600
어렵지 않죠? 간단하잖아요? 안 그래요? 여기서 뭔 설명이 더 필요해요? 더 해줘요? 미안 더 설명할게 없어. 나도 더이상은 몰러~ 아~! 참고할 수 있는 이야기가 하나 있는데 크게 중요한 건 아니니까 아래 박스에서~
1. 7, 비스타 포함 디스크 관리나 DiskPart 에선 디스크에 첫 파티션의 오프셋으로 1024KB 지점을 잡는다.
2. XP, 2K 포함 디스크 관리나 DiskPart 에선 디스크에 첫 파티션의 오프셋으로 32KB 지점을 잡는다.
윈도우 7 이나 비스타에 포함된 디스크 관리와 DiskPart 가 첫 파티션을 1024KB 지점에서 시작하는 이유는 해당 디스크를 GPT 디스크로 변환할 때를 대비하여 디스크의 첫 1MB 공간을 Primary GPT Header 공간으로 사용하기 위해 남겨두는 것이다. 마찬가지의 이유로 디스크의 마지막 1MB 공간도 Secondary GPT Header 공간으로 남겨둔다.
여기에서 간혹 골 때리는 현상이 발생하는데 윈도우 7 이나 비스타에서 파티션 작업을 한 디스크를 윈도우 XP 의 디스크 관리에서 살펴보면 간혹 디스크의 시작과 끝 부분에 1MB 씩 할당되지 않은 영역이 남아 있는 것으로 표시되는 것이다. 이는 위와 같은 이유 때문이고 잘못된 것이 아니니 그냥 살어라. 정 보기 싫으면 깨끗하게 밀고 윈도우 XP 에서 다시 파티션 작업을 하던지...
p.s 과거에 이러한 현상을 예제로 찍어 놓은 스크린 샷이 있었으나 몇 년 전에 찍어놓은 거라 어디에 쳐박혀 있는지 도저히 찾을 수 없어 생략한다. 정리하다가 날...렸나?
2. XP, 2K 포함 디스크 관리나 DiskPart 에선 디스크에 첫 파티션의 오프셋으로 32KB 지점을 잡는다.
윈도우 7 이나 비스타에 포함된 디스크 관리와 DiskPart 가 첫 파티션을 1024KB 지점에서 시작하는 이유는 해당 디스크를 GPT 디스크로 변환할 때를 대비하여 디스크의 첫 1MB 공간을 Primary GPT Header 공간으로 사용하기 위해 남겨두는 것이다. 마찬가지의 이유로 디스크의 마지막 1MB 공간도 Secondary GPT Header 공간으로 남겨둔다.
여기에서 간혹 골 때리는 현상이 발생하는데 윈도우 7 이나 비스타에서 파티션 작업을 한 디스크를 윈도우 XP 의 디스크 관리에서 살펴보면 간혹 디스크의 시작과 끝 부분에 1MB 씩 할당되지 않은 영역이 남아 있는 것으로 표시되는 것이다. 이는 위와 같은 이유 때문이고 잘못된 것이 아니니 그냥 살어라. 정 보기 싫으면 깨끗하게 밀고 윈도우 XP 에서 다시 파티션 작업을 하던지...
p.s 과거에 이러한 현상을 예제로 찍어 놓은 스크린 샷이 있었으나 몇 년 전에 찍어놓은 거라 어디에 쳐박혀 있는지 도저히 찾을 수 없어 생략한다. 정리하다가 날...렸나?
매우 애매한 상황에 대한 이야기
그러니까 제가 위에서 이렇게 정리를 해드렸단 말이죠.
Size 생략 : 파티션의 크기로 할당되지 않은 영역의 연속된 전체 공간을 지정.
Offset 생략 : 가장 큰 할당되지 않은 영역의 시작 지점을 파티션의 시작 위치로 지정.
Offset 생략 : 가장 큰 할당되지 않은 영역의 시작 지점을 파티션의 시작 위치로 지정.
그냥 보통 Size 를 생략하면 남은 공간 전체이고, Offset 을 생략하면 남은 공간의 처음 시작 지점부터이고, 뭐 이런 식으로만 외우고 보통 그렇게 외워도 크게 문제가 없습니다. 그리고 사실 그러한 상황이 대부분이니까요.
그런데 아래와 같은 경우가 있습니다. 예를 들어 아까와 같이 오프셋을 지정하여 할당되지 않은 영역의 중간쯤에 크기를 지정하여 파티션을 생성한 경우 이런 상황을 맞이할 수도 있죠.
보시는 것과 같이 할당되지 않은 영역이 두 개로 나누어져 있죠? 물론 이럴 땐 디스크 관리를 통해 파티션을 생성하면 뭐 크게 고민할게 없습니다. 그냥 원하는 할당되지 않은 지점을 선택하여 파티션을 생성하면 되니까요. 근데 DiskPart 를 활용할 때는 상당히 애매해집니다. 자 그럼 제가 문제 하나를 내죠.
문제 - 이와 같이 할당되지 않은 영역이 여러 개로 나누어져 있는 상황에서 해당 디스크에 offset 과 size 매개 변수 없이 파티션을 하나 생성하면 해당 파티션은 여러 개의 할당되지 않은 영역 중 어디에 얼마 만큼의 용량으로 생성될까요?
답은 이미 제가 정리한 내용 속에 모두 나와 있습니다. 그냥 바로 보시죠.
select disk=1
create partition primary
create partition primary
간단하죠? 할당되지 않은 공간이 여러 개 있을 때, Offset 을 생략하게 되면 DiskPart 는 할당되지 않은 공간들 중 가장 큰 영역의 시작 지점을 파티션의 시작 위치로 잡습니다. [7, 비스타]
그리고 Size 매개 변수를 생략하면 해당 할당되지 않은 영역 끝까지의 공간만 사용하여 파티션이 할당되죠. 다른 할당되지 않은 영역까지 넘어가서 모두 잡는게 아니라요. 기본 디스크에서 파티션은 하나의 공간 안에서 연속되어야 하지 나눠질 수는 없는 거에요. 그게 나눠지면 그건 동적 디스크의 볼륨이나 그러는 거죠. 이건 간단하죠? Size 는 간단해요. 문제는 Offset 이지...
제가 짜증나는게 뭔지 아세요? 자~ 지금 우리가 배우고 있는 건 윈도우 7 의 DiskPart 에요. DiskPart 도 윈도우마다 버전이 모두 다른 건 아시죠? 일단 이걸 우선 아시구요. 아래 박스를 보세요.
윈도우 XP
윈도우 XP 는 아예 Offset 을 취급하는 방법 자체가 달라요. 단위도 다르고, 20MB 를 지정해도 실린더 크기가 만약 8MB 단위라면 가장 가까운 24MB 로 지정되는 거죠. 복잡하죠? 그리고 생략했을 때 할당되지 않은 영역을 선택하는 것도 다르고, 1차 짜증...
윈도우 비스타
이건 Help 로 본 해당 매개 변수에 대한 대한 설명입니다. 잘 보세요. 먼저 윈도우 비스타 포함 DiskPart 의 Offset 도움말 설명입니다.
다음은 윈도우 7 에 포함된 DiskPart 의 Offset 도움말 설명입니다.
설명만 보면 윈도우 비스타의 DiskPart 는 윈도우 XP DiskPart 와 동일하게 결과가 나와야 하는 거죠. 윈도우 비스타 DiskPart 에서 위의 예제와 동일한 조건에서 Offset 없이 명령을 내린 결과입니다.
설명은 윈도우 XP DiskPart 의 결과가 나올 것처럼 해놓고 실제 결과는 윈도우 7 DiskPart 와 동일하네요. 후우............ 내가 이래서 도움말만 믿고 글을 못 써...... 맨날 테스트해야 돼...... 짜증나...... 수명 단축되는 느낌이야......
이런 경우 디스크 관리를 사용할 수 있다면 그냥 디스크 관리에서 작업하세요. 괜히 뒷목 잡지 마시구요. 그리고...
마이크로소프트 이 $%&*#$* 들아. 빌 형이 그렇게 가르치든? 아니면 발머가 그러냐? DiskPart 정책 좀 작작 바꿔!!!!!! 아니면 도움말을 똑바로 만들던지!!!!!! 내가 글을 한 번씩 정리할 때마다 혈압이... 어이쿠... 내 뒷목... 허억~
윈도우 XP DiskPart 기준
Offset 지정 : MB 단위로 지정, 가장 가까운 실린더 경계값으로 설정.
Offset 생략 : 첫 번째 할당되지 않은 영역의 시작 지점을 파티션의 시작 위치로 지정.
Offset 지정 : MB 단위로 지정, 가장 가까운 실린더 경계값으로 설정.
Offset 생략 : 첫 번째 할당되지 않은 영역의 시작 지점을 파티션의 시작 위치로 지정.
윈도우 XP 는 아예 Offset 을 취급하는 방법 자체가 달라요. 단위도 다르고, 20MB 를 지정해도 실린더 크기가 만약 8MB 단위라면 가장 가까운 24MB 로 지정되는 거죠. 복잡하죠? 그리고 생략했을 때 할당되지 않은 영역을 선택하는 것도 다르고, 1차 짜증...
윈도우 비스타
이건 Help 로 본 해당 매개 변수에 대한 대한 설명입니다. 잘 보세요. 먼저 윈도우 비스타 포함 DiskPart 의 Offset 도움말 설명입니다.
다음은 윈도우 7 에 포함된 DiskPart 의 Offset 도움말 설명입니다.
설명만 보면 윈도우 비스타의 DiskPart 는 윈도우 XP DiskPart 와 동일하게 결과가 나와야 하는 거죠. 윈도우 비스타 DiskPart 에서 위의 예제와 동일한 조건에서 Offset 없이 명령을 내린 결과입니다.
설명은 윈도우 XP DiskPart 의 결과가 나올 것처럼 해놓고 실제 결과는 윈도우 7 DiskPart 와 동일하네요. 후우............ 내가 이래서 도움말만 믿고 글을 못 써...... 맨날 테스트해야 돼...... 짜증나...... 수명 단축되는 느낌이야......
이런 경우 디스크 관리를 사용할 수 있다면 그냥 디스크 관리에서 작업하세요. 괜히 뒷목 잡지 마시구요. 그리고...
마이크로소프트 이 $%&*#$* 들아. 빌 형이 그렇게 가르치든? 아니면 발머가 그러냐? DiskPart 정책 좀 작작 바꿔!!!!!! 아니면 도움말을 똑바로 만들던지!!!!!! 내가 글을 한 번씩 정리할 때마다 혈압이... 어이쿠... 내 뒷목... 허억~
Size 와 Offset 은 여기까지... ㅡㅡ
기초가 명확하게 정립되지 않은 분들이 겪는 혼란 상황
자 이제 이야기하는 것은 DiskPart 의 문제가 아닙니다. 이건 확실히 하자구요. 이건 MBR 디스크와 GPT 디스크의 특성을 정확하게 이해하지 못한 분들이 겪는 혼란 문제에요. 몇 번째 그리고 몇 년째 이야기하는 것인지 모르겠지만 심지어 계속 제 글을 봐오신 분들도 종종 까먹으시는 분들이 보이시니 우선 정리부터 하죠.
일단 시작 전에 MBR 기본 디스크는 우리가 흔히 사용하는 디스크 형식이고 GPT 기본 디스크는 우리가 흔히 잘 사용 안 하는 디스크 형식입니다. 그러니까 여러분들은 그냥 내가 현재 사용하는 디스크가 MBR 기본 디스크구나 라고 간단하게 생각하시면 됩니다. 그럼 얼추 맞아요. 그래서 MBR 기본 디스크를 위주로 생각하시면 되는거죠. GPT 기본 디스크는 그냥 참고로만 알아두시면 되고요. 아셨죠?
1. MBR 기본 디스크 파티션의 한계
하나의 디스크에 생성 가능한 주 파티션은 최대 4 개이며, 확장 파티션은 최대 1 개 입니다. 확장 파티션 안에 생성되는 논리 드라이브는 이론적으론 무제한으로 생성 가능합니다. [다만 도구마다 저마다의 한계치를 설정해 놓는 경우가 많음]
- 주 파티션만 생성하면 생성 가능한 주 파티션의 개수는 최대 4 개
- 주 파티션 + 확장 파티션으로 생성하면 생성 가능한 주 파티션의 개수는 최대 3 개 + 확장 파티션 1 개
- 확장 파티션이 생성되면 확장 파티션 안에 논리 드라이브를 생성할 수 있는데 그건 무제한
- 단일 파티션의 최대 크기, 사용 가능한 디스크의 용량 한계는 최대 2TB. 왜 2TB 인지는 뒤에서...
- 주 파티션만 생성하면 생성 가능한 주 파티션의 개수는 최대 4 개
- 주 파티션 + 확장 파티션으로 생성하면 생성 가능한 주 파티션의 개수는 최대 3 개 + 확장 파티션 1 개
- 확장 파티션이 생성되면 확장 파티션 안에 논리 드라이브를 생성할 수 있는데 그건 무제한
- 단일 파티션의 최대 크기, 사용 가능한 디스크의 용량 한계는 최대 2TB. 왜 2TB 인지는 뒤에서...
2. GPT 기본 디스크 파티션의 한계
하나의 디스크에 생성 가능한 주 파티션은 최대 128 개이며, 확장 파티션과 논리 드라이브는 사용되지 않음.
- 주 파티션만 생성 가능하며 최대 128 개.
- 단일 파티션의 최대 크기는 최대 18EB(18,874,368TB). 18 엑사 바이트임. 18 엑사 바이트가 감이 잘 안 잡히시면? [1 엑사 바이트 = 1,024 페타 바이트 = 1,048,576 테라 바이트 = 1,073,741,824 기가 바이트]
- 주 파티션만 생성 가능하며 최대 128 개.
- 단일 파티션의 최대 크기는 최대 18EB(18,874,368TB). 18 엑사 바이트임. 18 엑사 바이트가 감이 잘 안 잡히시면? [1 엑사 바이트 = 1,024 페타 바이트 = 1,048,576 테라 바이트 = 1,073,741,824 기가 바이트]
그럼 이제 상황을 보죠. 아래의 디스크는 우리가 흔히 사용하는 MBR 기본 디스크입니다.
이건 이제 더이상 파티션을 나눌 수 없는 상황입니다. 이 상태에서 파티션을 더 만들려고 하면 무조건 실패하게 되는 거죠. 왜냐하면 MBR 기본 디스크의 파티션 개수 한계에 다다랐기 때문이죠. 주 파티션 4 개 잖아요? 그럼 이제 더이상 주 파티션이나 확장 파티션을 생성할 수 없어요. 이건 빌 게이츠를 복귀시키거나 심지어 잡스를 부활시켜도 안 되는 거에요.
확장 파티션을 생성할 수 없으니 논리 드라이브도 추가할 수 없죠. 이 상태에서는 더이상 뭘 할 수 있는 게 없는 거죠. 우선 이건 확실히 알아두세요. 이제 이 상태에서 해당 디스크를 GPT 디스크나 동적 디스크로 변환하지 않고 파티션을 더 생성하려면 한 가지 방법 밖에 없어요.
할당되지 않은 공간과 인접한 파티션 하나를 삭제하고 전체 공간을 확장 파티션으로 생성
01. 파티션 중 할당되지 않은 영역과 인접한 H: 드라이브 파티션을 선택하고 해당 파티션(또는 볼륨)을 제거한 후 그대로 전체 공간을 확장 파티션으로 생성.
02. 이후 원하는 용량과 개수대로 논리 드라이브를 생성.
diskpart
* 볼륨을 선택하면 자동으로 파티션과 디스크도 선택이 되는거 지난 Select 글에서 배웠습니다.select volume=h
delete partition
create partition extended
delete partition
create partition extended
02. 이후 원하는 용량과 개수대로 논리 드라이브를 생성.
이게 MBR 기본 디스크 내에서 해결할 수 있는 유일한 방법입니다. 이거 외엔 GPT 디스크나 동적 디스크로 변환하는 방법 밖에는 없는데 그건 분명 여러분이 원하는 결과가 아닐거라는게 거의 확실합니다. 일단은 그쪽으로의 해결법은 생각하지 마세요. 가장 먼저 부팅이 꼬일 수 있고 멀티 부팅 환경에서 다른 윈도우에서 해당 디스크를 못 읽을 수도 있으니까요.
아무튼 이와 동일한 경우의 문제가 발생한 실제 예제를 하나 소개하자면 그 때는 주 파티션 3 개 + 확장 파티션이었지만 디스크의 남은 공간이 확장 파티션의 사용 가능한 공간이 아닌 디스크의 할당되지 않은 영역으로 남아버린 경우가 있었습니다. [보통 일부러 그렇게 만들라고 시켜도 힘든데...]
잘못 나눠진 파티션의 예제 (1) - 타 커뮤니티 질문
해당 글에서는 디스크 관리를 통해 해결하는 방법을 알려드렸는데 이럴 때 DiskPart 를 통해 문제를 해결한다면 어떻게 해야 될까요?
diskpart
select volume=d
delete partition
select partition=0
delete partition
create partition extended
delete partition
select partition=0
delete partition
create partition extended
볼륨을 지우는 것은 동일한데 확장 파티션은 지우기 위해서 또 선택을 해줘야 하죠. 그리고 윈도우 7 포함 DiskPart 에서 확장 파티션은 무조건 0 번 파티션이구요. 이것도 다뤘죠? 그럼 이제 간단하게 위의 명령들이 이해가 되시죠? [근데 XP DiskPart 는 확장 파티션을 List Partition 명령으로 찾아야 합니다. ㅡㅡ; 열받으니까 그냥 우선 이건 생각하지 말죠.]
이 내용은 여기까지 하죠.
MBR 기본 디스크의 한계 - 2TB
예전 설명이 좀 난해해서 지우고 다시 적을께요. 이젠 저까지 헷갈리려고 하거든요. 다른거 다 필요없고 이거 하나만 기억하시면 되요. MBR 은 32 비트 주소 체계를 사용한다고요. 즉, 주소를 232 = 4,294,967,296 개까지 사용할 수 있고, 섹터 하나에 하나의 주소가 지정되니 총 4,294,967,296 개의 섹터까지 인식할 수 있고 관리할 수 있는 거죠. 섹터 하나당 512 Byte 니까.
4,294,967,296 x 512 Byte = 2,199,023,255,552 Byte = 2,147,483,648 KB = 2,097,152 MB = 2,048 GB = 2 TB
해서 2TB(정확하게 표현하면 2TiB) 가 관리할 수 있는 한계가 되는 겁니다.
참고로 MBR 에서는 파티션의 시작 위치와 끝 위치를 기록하고 파티션의 크기도 기록해서 관리합니다. 근데 이게 모두 32 비트 한계에 걸립니다. 고로 2TB 가 넘는 파티션은 만들 수 없고, 파티션을 2TB 이하로 쪼개서 관리하려고 해도 2TB 를 넘어서는 영역은 그 위치를 기록할 수 없으니(파티션의 시작과 끝을 기록해야 하는데) 사용할 수 없는 공간이 되는 것이죠. 고로 2TB 가 넘어서는 영역은 있어도 쓰지 못하는 영역이 되는 것이죠.
디스크 자체는 48 비트 LBA 주소 체계를 사용하기에 2TB 가 넘는 용량도 정상적으로 인식이 가능하지만(최대 144PB 까지) 그 안에서 다시 파티션 등을 관리하는 MBR 이 32 비트라 2TB 한계가 생겨버린 겁니다. [예전 디스크가 28 비트 LBA 주소 체계를 사용하던 시절엔 반대의 이유로 128GB 한계가 있기도 했죠.]
수정 전 잘못 알고 2TB 가 넘어서는 디스크는 파티션을 쪼개서 사용해야 한다고 말했는데 명백하게 잘못 이해한 저의 실수였습니다. 2TB 를 넘어서는 공간은 디스크 자체적으로는 인식이 되지만 그래서 디스크 관리 등을 통해서 보면 해당 용량도 보이지만 위에서 설명드린 MBR 의 한계 때문에 사용을 할 수는 없습니다. [2TB 를 넘어서는 영역은 단순히 할당되지 않은 영역으로 표시됩니다. 해당 공간에는 파티션 생성 등을 할 수 없습니다.]
이걸 극복하기 위해 나온 것이 GPT 디스크 입니다. GPT 는 64 비트 주소 체계를 사용하여 이런 한계를 극복한 것이죠. 아무튼 DiskPart 를 통한 파티션의 생성은 여기까지 하죠. ^^
p.s 아참 참고로 요즘 3TB 급 하드 디스크에서는 Advanced Format 이라는 기술을 사용하는데 이는 간단하게 디스크의 Sector 의 크기가 512 Byte 가 아닌 새로운 4096 Byte 를 사용하는 디스크입니다. 이게 또 좀 그런데... 아무튼 이건 MBR 이나 GPT 와 같은 디스크 형식의 문제가 아니라 하드 디스크의 물리적인 변화에 해당하는 것이기 때문에 궤를 달리해서 보아야 합니다. 아무튼 여기에서 다룰 내용은 아닙니다. 제일 큰 문제는 아직 저에겐 3TB 하드가 없다는 건데...