이 글에서는 PowerShell 콘솔을 사용해 디스크, 파티션, 볼륨을 관리하는 방법을 살펴봅니다. PowerShell에서는 '디스크 관리' GUI(diskmgmt.msc)나 diskpart.exe 명령줄 도구에서 익숙하게 수행하던 모든 로컬 디스크 및 파티션 관리 작업을 수행할 수 있습니다. 디스크 관리 cmdlet은 PowerShell 3.0부터 제공되는 Storage 모듈에 포함되어 있습니다. 이번 가이드에서는 디스크 초기화, 파티션 테이블 생성, 볼륨 생성 및 포맷 방법까지 단계별로 다룹니다. 아래 소개하는 명령어는 Windows 10 / Server 2016 및 Windows 8.1 / Server 2012 R2 환경에서 정상적으로 동작합니다(이전 버전의 Windows라면 먼저 PowerShell을 업데이트해야 합니다).
Windows 10의 Storage 모듈에는 약 160개의 PowerShell cmdlet이 포함되어 있습니다. 디스크 관리와 관련된 모든 명령어를 확인하려면 다음 명령을 실행하세요.
Get-Command -Module Storage
주의: PowerShell로 디스크와 파티션을 관리할 때는 데이터가 저장된 파티션을 실수로 삭제하거나 포맷하지 않도록 각별히 신중해야 합니다.
PowerShell로 로컬 디스크 및 파티션 목록 확인하기
먼저 시스템에서 논리적 수준으로 인식 중인 로컬 디스크 목록을 출력해 보겠습니다. 다음 명령을 실행하세요.
Get-Disk | ft -AutoSize
Windows가 설치된 시스템 디스크만 선택해서 보려면 다음 명령을 입력합니다.
Get-Disk | Where-Object IsSystem -eq $True | fl
명령을 실행하면 시스템 디스크의 다음과 같은 속성들이 반환됩니다. 이 속성들은 조건 필터에도 활용할 수 있습니다.
UniqueId : SCSI\DISK&VEN_VMWARE&PROD_VIRTUAL_DISK\5&1EC51BF7&0&000000:DESKTOP-JOPF9
Number : 0
Path : \\?\scsi#disk&ven_vmware&prod_virtual_disk#5&1ec42ba7&0&000000#{21f23456-a6bf-12d0-94f2-001efb8b}
Manufacturer : VMware
Model : Virtual disk
SerialNumber :
Size : 98 GB
AllocatedSize : 98432321434
LogicalSectorSize : 512
PhysicalSectorSize : 512
NumberOfPartitions : 2
PartitionStyle : MBR
IsReadOnly : False
IsSystem : True
IsBoot : True
오프라인 상태인 디스크만 표시할 수도 있습니다.
Get-Disk | Where-Object IsOffline –Eq $True| ft –AutoSize
물리적 디스크 자체의 특성과 상태를 확인하려면 Get-PhysicalDisk cmdlet을 사용합니다. 이 cmdlet은 Storage Spaces Direct(S2D) 환경에서 고장 난 물리 디스크를 감지하거나 내결함성 스토리지를 구성할 때도 유용하게 활용됩니다.
연결된 디스크의 유형(SSD, HDD, USB 플래시 드라이브)도 식별할 수 있습니다. 일반적으로 SSD/HDD는 SATA 버스를 통해 연결되며, USB 드라이브는 UnSpecified 미디어 타입으로 표시됩니다.
DeviceId Model MediaType BusType Size
——— —— ——— ——- —-
0 TOSHIBA MK3775VSXP HDD SATA 500156374016
1 Samsung SSD 840 PRO Series SSD SATA 128060514304
2 Transcend UnSpecified USB 128169757184
모든 디스크의 파티션 목록을 보려면 다음 명령을 사용합니다.
Get-Partition
특정 디스크의 파티션만 보고 싶다면 디스크 번호를 지정하세요.
Get-Partition –DiskNumber 1,2
Windows의 모든 볼륨 목록을 표시하려면 다음 명령을 실행합니다.
Get-Volume
참고로 디스크 번호는 0부터 시작하고, 파티션 번호는 1부터 시작한다는 점에 유의하세요.
PowerShell로 디스크 초기화하기
앞선 예제에서 일부 디스크가 오프라인 상태이며 Partition Style 열에 RAW 라벨이 표시된 것을 볼 수 있었습니다. 이제 해당 디스크를 초기화하고 GPT 또는 MBR 파티션 테이블을 생성한 뒤 새 파티션을 만들어 보겠습니다.
가장 먼저 디스크를 온라인 상태로 전환해야 합니다.
Get-Disk | Where-Object IsOffline –Eq $True | Set-Disk –IsOffline $False
이제 디스크를 초기화할 수 있습니다(디스크 인덱스가 1인 경우).
Initialize-Disk -Number 1
기본적으로 GPT(GUID) 파티션 테이블이 생성되지만, MBR 방식이 필요하다면 다음 명령을 실행하세요.
Initialize-Disk 1 –PartitionStyle MBR
참고로 디스크에 기존 데이터가 있다면 mbr2gpt.exe 도구를 사용해 데이터를 삭제하지 않고도 MBR에서 GPT로 파티션 테이블을 변환할 수 있습니다.
디스크 번호를 일일이 지정하지 않으려면 RAW 파티션 테이블을 가진 모든 디스크를 한 번에 초기화할 수도 있습니다.
Get-Disk | Where-Object PartitionStyle –Eq 'RAW' | Initialize-Disk
단, RAW 상태는 파티션 테이블이 손상되었을 때도 나타날 수 있습니다. 이 경우에는 데이터 복구를 시도한 후 초기화하는 것이 안전합니다.
디스크에 파티션 생성하는 방법
새 파티션을 생성하려면 New-Partition cmdlet을 사용합니다. 예를 들어 10GB 크기의 파티션을 만들고 L: 드라이브 문자를 할당해 보겠습니다.
New-Partition –DiskNumber 1 -Size 10gb -DriveLetter L
파티션이 디스크의 남은 공간 전체를 차지하게 하려면 UseMaximumSize 속성을 사용하고, 드라이브 문자를 자동으로 할당하려면 AssignDriveLetter 매개변수를 사용합니다(간혹 Windows가 드라이브 문자를 자동으로 할당하지 않는 경우가 있습니다).
New-Partition –DiskNumber 1 -AssignDriveLetter –UseMaximumSize
할당된 드라이브 문자는 다음 명령으로 변경할 수 있습니다.
Set-Partition –DriveLetter L -NewDriveLetter U
기존 파티션을 확장하려면 먼저 확장에 사용 가능한 미할당 공간 크기를 확인합니다.
Get-PartitionSupportedSize -DriveLetter L | Format-List
그런 다음 파티션 크기를 최대치까지 늘릴 수 있습니다.
$MaxSize = (Get-PartitionSupportedSize -DriveLetter L).SizeMax
Resize-Partition -DriveLetter L -Size $MaxSize
파티션을 활성(active) 상태로 설정하려면 다음 명령을 사용합니다.
Set-Partition -DriveLetter U -IsActive $true
PowerShell로 파티션 포맷하기
새로 만든 파티션을 NTFS 파일 시스템으로 포맷하고 볼륨 레이블을 DBData로 지정해 보겠습니다.
Format-Volume -DriveLetter L -FileSystem NTFS -NewFileSystemLabel DBData -Confirm:$false
디스크에서 파티션 제거하는 방법
확인 절차 없이 디스크 1과 2의 모든 파티션을 삭제하려면 다음 명령을 실행합니다.
Get-Partition –DiskNumber 1,2 | Remove-Partition -Confirm:$false
디스크의 모든 파티션을 삭제하고 데이터까지 완전히 지우려면 다음 명령을 사용하세요.
Clear-Disk -Number 1 -RemoveData -Confirm:$false
디스크에 OEM 파티션(OEM 복구 파티션, EFI 파티션, System Reserved 등)이 있다면 RemoveOEM 매개변수를 추가해 함께 제거할 수 있습니다.
Clear-Disk -Number 1 -RemoveData –RemoveOEM
마지막으로 소개할 PowerShell 원라이너는 새로 연결된 모든 RAW 타입 디스크를 자동으로 초기화하고, 파티션 테이블을 생성한 뒤, 최대可用 크기의 NTFS 파티션을 만들어 줍니다. 새 디스크를 장착했을 때 한 번의 명령으로 모든 준비를 끝낼 수 있어 매우 편리합니다.
Get-Disk |Where-Object PartitionStyle -eq 'RAW' |Initialize-Disk -PartitionStyle MBR -PassThru |New-Partition -AssignDriveLetter -UseMaximumSize |Format-Volume -FileSystem NTFS -Confirm:$false