Introduction to Disk Management on Windows Server 2022

Managing storage effectively is one of the most critical responsibilities for any Windows Server administrator. Windows Server 2022 provides two primary tools for disk management: the graphical Disk Management console (diskmgmt.msc) and PowerShell cmdlets from the Storage module. Together they give you full control over physical disks, partitions, volumes, and the more advanced Storage Spaces feature. This guide walks through initialising disks, creating partitions and volumes, choosing the right partition style, working with dynamic disks, and building resilient Storage Spaces pools — with exact commands you can run immediately.

Opening Disk Management

The quickest way to open the Disk Management console on Windows Server 2022 is to press Win + X and select Disk Management, or run the following from an elevated command prompt or Run dialog:

diskmgmt.msc

Alternatively, you can reach it through Server Manager → Tools → Computer Management → Storage → Disk Management. The console displays every physical disk the system can see, their current partition layout, volume labels, file systems, and health status. Unallocated space appears as a dark bar. Online disks that have not yet been initialised show a red icon with “Not Initialized” status in the lower pane.

MBR vs GPT: Choosing the Right Partition Style

When you initialise a new disk, Windows asks you to choose between MBR (Master Boot Record) and GPT (GUID Partition Table). For any disk larger than 2 TB, GPT is mandatory because MBR cannot address beyond 2 TB. GPT also supports up to 128 primary partitions (versus 4 for MBR), stores a backup partition table at the end of the disk, and provides better integrity checking via CRC32 checksums.

Use MBR only when you need to support very old systems or legacy boot environments that do not understand GPT. On Windows Server 2022 you will almost always choose GPT. You can check or change the partition style of an offline disk via PowerShell:

Get-Disk
Initialize-Disk -Number 1 -PartitionStyle GPT

Substitute the correct disk number from the Get-Disk output. Note that Initialize-Disk only works on a disk that has no existing partitions. If the disk already has data, you must first clear it with Clear-Disk -Number 1 -RemoveData -Confirm:$false — but only after confirming you have a backup.

Initialising and Partitioning Disks with PowerShell

The Storage PowerShell module, loaded automatically on Windows Server 2022, provides a full set of cmdlets. Here is a typical workflow to bring a brand-new raw disk online, create a single large partition, and format it NTFS:

# List all disks and their status
Get-Disk

# Initialise disk number 2 as GPT
Initialize-Disk -Number 2 -PartitionStyle GPT

# Create a single partition using all available space
New-Partition -DiskNumber 2 -UseMaximumSize -AssignDriveLetter

# Check what drive letter was assigned (e.g. E:)
Get-Partition -DiskNumber 2

# Format the volume as NTFS with label "DataDisk"
Format-Volume -DriveLetter E -FileSystem NTFS -NewFileSystemLabel "DataDisk" -Confirm:$false

If you need to specify the drive letter manually rather than letting Windows assign one automatically, replace -AssignDriveLetter with -DriveLetter F. To create multiple partitions of specific sizes, use the -Size parameter with values like 50GB or 200GB:

New-Partition -DiskNumber 2 -Size 100GB -DriveLetter F
New-Partition -DiskNumber 2 -UseMaximumSize -DriveLetter G

Inspecting Disks and Partitions

Several cmdlets help you audit what is already present on the system before making changes:

# Full details on all disks
Get-Disk | Format-List *

# All partitions on disk 1
Get-Partition -DiskNumber 1

# All volumes
Get-Volume

# A specific volume by drive letter
Get-Volume -DriveLetter C | Format-List *

The Get-PhysicalDisk cmdlet provides information about the underlying hardware, including media type (SSD, HDD, Unspecified), bus type (SATA, NVMe, SAS), and operational status. This is especially useful when building Storage Spaces pools where you want to separate fast and slow media into different tiers.

Dynamic Disks

Windows Server 2022 still supports legacy dynamic disks, which were the older way to create software RAID volumes (spanned, striped, mirrored, RAID-5). Dynamic disks are now considered deprecated for new deployments — Microsoft recommends Storage Spaces instead. However, if you are managing existing environments, you may still encounter them.

To convert a basic disk to a dynamic disk from the GUI, right-click the disk icon in Disk Management and choose Convert to Dynamic Disk. To view whether a disk is basic or dynamic with PowerShell:

Get-Disk | Select-Object Number, FriendlyName, PartitionStyle, IsBoot, IsSystem

Dynamic disks cannot be converted back to basic without losing all data. On virtual machines, avoid dynamic disks entirely — use Storage Spaces for software redundancy instead.

Introduction to Storage Spaces

Storage Spaces is Windows Server’s built-in software-defined storage feature. It lets you group physical disks into a Storage Pool, then carve virtual disks out of that pool with configurable resiliency. Storage Spaces supports three resiliency types:

Simple (no resiliency) — data is striped across disks for performance but there is no redundancy. A single disk failure destroys the virtual disk. Use only for non-critical or easily replaceable data.

Mirror — data is written to two (two-way mirror) or three (three-way mirror) copies. A two-way mirror tolerates one disk failure; a three-way mirror tolerates two. Requires at least two or three disks respectively.

Parity — similar to RAID-5 or RAID-6, parity information is distributed across disks allowing one or two disk failures while using less raw capacity than mirroring. Requires at least three disks (single parity) or seven disks (dual parity). Write performance is lower than mirroring.

Creating a Storage Pool and Virtual Disk with PowerShell

Before creating a pool, identify the physical disks you want to use. Only disks that have no partitions and show as “CanPool = True” can be added to a new pool:

# Find disks eligible for pooling
Get-PhysicalDisk -CanPool $true

Create a storage pool named “DataPool” using three eligible disks (identify them by UniqueId or FriendlyName):

$disks = Get-PhysicalDisk -CanPool $true

New-StoragePool `
    -FriendlyName "DataPool" `
    -StorageSubsystemFriendlyName "Windows Storage*" `
    -PhysicalDisks $disks

Now create a two-way mirrored virtual disk from that pool:

New-VirtualDisk `
    -StoragePoolFriendlyName "DataPool" `
    -FriendlyName "MirrorVDisk" `
    -ResiliencySettingName Mirror `
    -NumberOfDataCopies 2 `
    -UseMaximumSize

Initialize, partition, and format the new virtual disk just like any physical disk:

$vdisk = Get-VirtualDisk -FriendlyName "MirrorVDisk" | Get-Disk
Initialize-Disk -Number $vdisk.Number -PartitionStyle GPT
New-Partition -DiskNumber $vdisk.Number -UseMaximumSize -DriveLetter H
Format-Volume -DriveLetter H -FileSystem NTFS -NewFileSystemLabel "MirrorSpace" -Confirm:$false

Storage Tiers

Storage Spaces supports tiering, which automatically moves hot data to faster SSDs and cold data to slower HDDs. To use tiers you must have at least one SSD and one HDD in the pool. Create a tiered virtual disk like this:

# Get or create media type tiers
$ssd = New-StorageTier -StoragePoolFriendlyName "DataPool" -FriendlyName "SSDTier" -MediaType SSD
$hdd = New-StorageTier -StoragePoolFriendlyName "DataPool" -FriendlyName "HDDTier" -MediaType HDD

New-VirtualDisk `
    -StoragePoolFriendlyName "DataPool" `
    -FriendlyName "TieredVDisk" `
    -StorageTiers $ssd,$hdd `
    -StorageTierSizes 50GB,200GB `
    -ResiliencySettingName Mirror

The Storage Optimizer scheduled task (Storage Tiers Optimization) runs nightly to move data between tiers automatically. You can force a manual optimisation run with Optimize-StoragePool -FriendlyName "DataPool".

Troubleshooting Disk Issues

If a disk shows as Offline in Disk Management, it may have been taken offline because of a policy or because another server had it online (a SAN scenario). Bring it back online with:

Set-Disk -Number 3 -IsOffline $false
Set-Disk -Number 3 -IsReadOnly $false

If a Storage Spaces virtual disk shows Degraded, use the following to check health:

Get-VirtualDisk | Select-Object FriendlyName, HealthStatus, OperationalStatus, ResiliencySettingName
Get-PhysicalDisk | Select-Object FriendlyName, HealthStatus, OperationalStatus, Usage

A degraded pool with a failed disk should be repaired by removing the failed disk and adding a replacement. Storage Spaces will automatically rebuild parity or mirror data onto the new disk. Use Remove-PhysicalDisk to retire the failed unit and Add-PhysicalDisk to introduce the replacement. Always monitor the repair progress with Get-StorageJob until the repair job completes and health returns to Healthy.

Use chkdsk E: /f /r at an elevated command prompt to scan and repair file system errors on any NTFS volume. The /r flag locates bad sectors and recovers readable information, making it useful when a disk starts reporting read errors before complete failure. Schedule regular checks on production volumes and monitor the Windows event logs under System for disk-related warnings (Event IDs 7, 11, 51, 157).