개요
Storage 모듈은 물리 디스크부터 사용자가 실제로 보는 드라이브 문자까지, 스토리지를 세 계층으로 나눠 다루는 cmdlet 묶음이다. 89–95장이 프로세스·서비스·이벤트 로그 같은 “실행되는 것"을 다뤘다면, 이 장부터는 “저장되는 공간” 자체로 시선을 옮기며 Part 13(스토리지와 시스템 구성)을 시작한다. Get-CimInstance(94장)로도 디스크 정보를 조회할 수 있지만, Storage 모듈은 그 위에 더 다루기 쉬운 전용 cmdlet 계층을 얹어 둔 것이다.
정신 모델은 “물리 디스크(Disk) 위에 하나 이상의 파티션(Partition)이 있고, 각 파티션 위에 사람이 실제로 쓰는 볼륨(Volume, 드라이브 문자나 마운트 지점)이 있다"는 3단 계층 구조다. Get-ChildItem으로 파일을 다루기 전에, 이 계층이 그 파일들이 놓일 물리적 토대라는 점을 이해하는 것이 이 장의 핵심이다.
사용법
| |
종류
| cmdlet | 대상 | 대표 속성 |
|---|---|---|
Get-Disk | 물리 디스크(기본 디스크만, 동적 디스크는 제외) | Number, FriendlyName, OperationalStatus, PartitionStyle, BusType |
Get-Partition | 디스크 위의 파티션 | DiskNumber, PartitionNumber, DriveLetter, Size |
Get-Volume | 포맷된 볼륨(드라이브 문자·마운트 지점) | DriveLetter, FileSystem, SizeRemaining, HealthStatus |
-CimSession | 세 cmdlet 모두 94장의 CIM 세션으로 원격 조회 가능 |
예시
| |
주의사항·함정
Get-Disk는 동적 디스크(dynamic disk)를 반환하지 않는다: 여러 물리 매체에 걸쳐 있을 수 있는 동적 디스크는 이 cmdlet의 대상이 아니며, 기본 디스크(basic disk)와 파티션된 드라이브만 조회된다. 동적 디스크를 쓰는 환경(RAID 소프트웨어 구성 등)이라면 예상한 디스크가 목록에서 빠져 있을 수 있다.
세 cmdlet의 관계를 모르면 원하는 정보를 엉뚱한 곳에서 찾게 된다: “이 드라이브가 어떤 물리 디스크에 있는가"를 알고 싶다면 Get-Volume이 아니라 Get-Partition의 DiskNumber 속성을 봐야 하고, “이 디스크에 파일 시스템이 몇 개 포맷돼 있는가"를 알고 싶다면 Get-Disk가 아니라 Get-Volume을 봐야 한다. 세 계층의 역할을 먼저 명확히 구분해야 어떤 cmdlet에서 원하는 속성을 찾을지 헤매지 않는다.
클러스터 환경에서는 이 cmdlet들이 클러스터 전체를 대상으로 동작한다: Failover Cluster에서 Storage 모듈 cmdlet을 실행하면 로컬 컴퓨터가 아니라 클러스터에 속한 모든 서버를 대상으로 결과가 반환된다 — 단일 서버로 범위를 좁히려면 별도의 매개변수나 필터링이 필요하다.
친숙한 이름(FriendlyName)에 뒤에 공백이 붙어 있을 수 있다: 일부 디스크는 표시 이름 끝에 공백 문자가 포함돼 있어, Get-Disk -FriendlyName "MyDisk"처럼 정확히 일치하는 이름으로 찾으면 실패할 수 있다. 이럴 때는 Get-Disk -FriendlyName "MyDisk*"처럼 끝에 와일드카드를 붙이는 것이 안전하다.
이식성: Linux의 lsblk(블록 장치 트리), fdisk -l(디스크·파티션), df -h(볼륨·마운트 지점)가 각각 이 세 계층에 대응한다 — Linux는 이 세 정보를 서로 다른 명령으로 나눠 보여주는 반면, PowerShell은 파이프라인으로 세 cmdlet을 자연스럽게 연결해 계층을 그대로 따라 탐색할 수 있다는 점이 다르다. CMD의 diskpart도 유사한 정보를 다루지만 대화형 셸 안에서 명령을 입력하는 방식이라 스크립팅에는 덜 적합하다.
![Featured image of post [PowerShell] 96. Storage 모듈 — Get-Disk/Get-Partition/Get-Volume](/post/powershell/storage-module-disk-partition-volume-powershell/wordcloud_hu_28814fcb4959454.webp)
![[PowerShell] 94. Get-CimInstance/Get-WmiObject — CIM/WMI 조회](/post/powershell/get-ciminstance-get-wmiobject-powershell/wordcloud_hu_95a94332eff9e659.webp)
![[PowerShell] 95. Get-Counter — 성능 카운터 조회](/post/powershell/get-counter-performance-powershell/wordcloud_hu_58a686baf651beb8.webp)
![[PowerShell] 96. Storage 모듈 — Get-Disk/Get-Partition/Get-Volume](/post/powershell/storage-module-disk-partition-volume-powershell/wordcloud_hu_221098a9a333b1d2.webp)
![[PowerShell] 97. Get-ComputerInfo — 시스템 정보 종합 조회](/post/powershell/get-computerinfo-system-summary-powershell/wordcloud_hu_b45adaf79b7348e4.webp)
![[PowerShell] 98. Env: 드라이브와 환경 변수 관리](/post/powershell/env-drive-environment-variable-powershell/wordcloud_hu_18e7bf4ef53d173b.webp)
![[PowerShell] 89. Get-Process/Stop-Process — 프로세스 관리](/post/powershell/get-stop-process-command-powershell/wordcloud_hu_35ba97214ccb33be.webp)
![[PowerShell] 90. Start-Process — 외부 프로그램 실행](/post/powershell/start-process-external-program-powershell/wordcloud_hu_bd96568dcd900372.webp)
![[PowerShell] 91. Get-Service와 서비스 시작/중지/재시작](/post/powershell/get-start-stop-restart-service-powershell/wordcloud_hu_592e6189f836acb0.webp)
![[PowerShell] 92. ScheduledTasks 모듈 — 예약 작업 등록](/post/powershell/scheduledtasks-module-register-task-powershell/wordcloud_hu_b2a7add1ec96d7f6.webp)
![[PowerShell] 93. Get-WinEvent/Get-EventLog — 이벤트 로그 조회](/post/powershell/get-winevent-get-eventlog-powershell/wordcloud_hu_2cd7b8bd9d97b108.webp)