Posted On August 18, 2022

Windows: How To Expand Disk Volumes That Are Not Adjacent the Intended Volume

kimconnect 0 comments
blog.KimConnect.com >> Windows >> Windows: How To Expand Disk Volumes That Are Not Adjacent the Intended Volume

Problem:

Here’s a scenario when a virtualized disk has been expanded in Hyper-V, Vmware, AWS, Azure, Google Cloud, etc. The intended disk to be expanded is C:\, but E:\ is blocking C:\ from being expanded using the Windows diskmgmt.msc. What to do?

Resolution:

Option 1: Windows 7/10/11 (Client OS)

Install AOMEI Partition Assistant Standard

Option 2: Windows Servers

Pay the licensing fee to be able to use the partitioning wizard on a Windows Server OS

Option 3: Change vDisk bus type

  • Clone the existing Guest VM as a full backup
  • While having target Guest VM powered off, edit its VHD file > change ddb.adapterType = “ide” to ddb.adapterType = “lsilogic”
  • Remove the drive from the Guest VM with the “DO NOT remove from virtual machine and delete files from disk” option
  • Add a new hard disk > choose the “Use an existing virtual disk” option > select the targeted hard disk

Option 4: Windows Server 2012 / 2016 / 2019 / 2022 as a Guest VM

Caveat: this have proven to work on volumes with files that are NOT constantly changing (e.g. NOT databases, OS, real-time applications with transient items)

  • Add a new volume
  • Take a VSS Snapshot of the volume to be moved
$targetVolume="E:\"
$vssAccessLink="C:\shadowcopy"

function createVssSnapshot{
[cmdletbinding()]
param(
[string]$targetVolume="C:\",
$vssAccessLink="C:\shadowcopy"
)
# Sanitation
if (!($targetVolume -like "*\")){$targetVolume+="\"}
if(Test-Path $vssAccessLink){(Get-Item $vssAccessLink).Delete()}

write-host "Initiating VSS snapshot..."
$shadowCopyClass=[WMICLASS]"root\cimv2:win32_shadowcopy"
$thisSnapshot = $shadowCopyClass.Create($targetVolume, "ClientAccessible")
$thisShadow = Get-WmiObject Win32_ShadowCopy | Where-Object { $_.ID -eq $thisSnapshot.ShadowID }
$thisShadowPath = $thisShadow.DeviceObject + "\"

# Creating symlink
$null=cd C:
$null=cmd /c mklink /d $vssAccessLink $thisShadowPath
write-host "Vss Snapshot of $targetVolume has been made and it's accessible at this local file system (LFS): $vssAccessLink."

# Validation
if(Test-Path $vssAccessLink){
$snapshotId=$thisShadow.ID;
write-host "Snapshot $snapshotId has been created.";
return $snapshotId;
}else{
write-host "Failed to create client accessible VSS Snapshot.";
return $false;
}
}

createVssSnapshot $targetVolume $vssAccessLink
  • Copy data from snapshot to new volume
$vssAccessLink="C:\shadowcopy"
$newVolume='X:\'
robocopy $vssAccessLink $newVolume /e /R:0 /NP
  • Change the drive letter of the new volume as the original volume’s drive letter

 

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Post

Dell OpenManage and ESXi 6.0 Integration

Install OpenManage on ESX 5.1 to 6.0: ----------------------------------------------- Check to see whether OpenManage is already…

Projects for Mystery Client in 2005

Mystery Client Technology Overview Last year Mystery Client upgraded to Microsoft Exchange 2003. This had…

Windows 2012 Advantages

1. Dynamic Access Control: automatically apply access restriction to certain files that contain sensitive information,…