Skip to content

[Compute] Add BestEffortAligned storage FD alignment support for VMSS Flex#29496

Draft
Copilot wants to merge 2 commits intomainfrom
copilot/az-compute-add-best-effort-aligned-support
Draft

[Compute] Add BestEffortAligned storage FD alignment support for VMSS Flex#29496
Copilot wants to merge 2 commits intomainfrom
copilot/az-compute-add-best-effort-aligned-support

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented May 4, 2026

Adds BestEffortAligned storage Fault Domain (FD) alignment mode to VMSS Flex, plus per-disk alignment controls on both VMSS templates and individual VMs within a Flex VMSS.

New Parameters

Cmdlet Parameter Values
New-AzVmssConfig -ZonalPlatformFaultDomainAlignMode Aligned, Unaligned, BestEffortAligned
New-AzVmss (SimpleParameterSet) -ZonalPlatformFaultDomainAlignMode same
Update-AzVmss -ZonalPlatformFaultDomainAlignMode same (mutable on existing VMSS)
Set-AzVmssStorageProfile -OsDiskStorageFaultDomainAlignment Aligned, BestEffortAligned
Add-AzVmssDataDisk -StorageFaultDomainAlignment Aligned, BestEffortAligned
Set-AzVMOSDisk -StorageFaultDomainAlignment Aligned, BestEffortAligned
Add-AzVMDataDisk -StorageFaultDomainAlignment Aligned, BestEffortAligned

BestEffortAligned: VMSS aligns disks that support enough Storage FDs; disks that don't are left unaligned rather than failing deployment—useful for mixed-SKU configurations.

Usage

# VMSS-level alignment + per-disk alignment on template
$cfg = New-AzVmssConfig -Location "eastus" -OrchestrationMode "Flexible" `
    -ZonalPlatformFaultDomainAlignMode "BestEffortAligned"

Set-AzVmssStorageProfile -VirtualMachineScaleSet $cfg `
    -OsDiskCreateOption "FromImage" -OsDiskStorageFaultDomainAlignment "BestEffortAligned" ...

Add-AzVmssDataDisk -VirtualMachineScaleSet $cfg -Lun 0 -CreateOption "Empty" `
    -StorageFaultDomainAlignment "Aligned" ...

# Per-disk alignment on a VM within Flex VMSS (standalone VMs will get BadRequest from CRP)
$vm = New-AzVMConfig -VMName "MyVM" -VMSize "Standard_D2s_v3"
Set-AzVMOSDisk -VM $vm -CreateOption "FromImage" -StorageFaultDomainAlignment "BestEffortAligned"
Add-AzVMDataDisk -VM $vm -Lun 0 -CreateOption "Empty" -StorageFaultDomainAlignment "Aligned"

# Update VMSS-level mode on existing VMSS
Update-AzVmss -ResourceGroupName "rg" -VMScaleSetName "myvmss" -ZonalPlatformFaultDomainAlignMode "Aligned"

Implementation Notes

  • ZonalPlatformFaultDomainAlignMode added to PSVirtualMachineScaleSet model so AutoMapper surfaces it on GET responses
  • Update-AzVmss routes through BuildPatchObject() → sets VirtualMachineScaleSetUpdate.ZonalPlatformFaultDomainAlignMode
  • New-AzVmss SimpleParameterSet routes through VirtualMachineScaleSetStrategy.CreateVirtualMachineScaleSetConfigOrchestrationModeFlexible
  • SDK models (VirtualMachineScaleSetOSDisk, VirtualMachineScaleSetDataDisk, OSDisk, DataDisk) already expose StorageFaultDomainAlignment (2025-11-01 API)
  • No client-side validation for Flex-only constraints; CRP returns BadRequest for misuse on standalone VMs or Uniform VMSS

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • 1n8vsblobprodwus2184.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj -c Debug (dns block)
  • 40vvsblobprodwus2135.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj -c Debug (dns block)
  • 6yfvsblobprodwus2121.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj -c Debug (dns block)
  • 7q7vsblobprodwus2144.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj -c Debug (dns block)
  • 84hvsblobprodwus2148.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj -c Debug (dns block)
  • 8wdvsblobprodwus2137.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj -c Debug (dns block)
  • 9yyvsblobprodwus2157.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj -c Debug (dns block)
  • b53vsblobprodwus2154.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj -c Debug (dns block)
  • ba0vsblobprodwus2130.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj -c Debug (dns block)
  • balvsblobprodwus2129.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj -c Debug (dns block)
  • cbvvsblobprodwus2131.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj -c Debug (dns block)
  • cffvsblobprodwus218.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj -c Debug (dns block)
  • d94vsblobprodwus2119.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj -c Debug (dns block)
  • ezcvsblobprodwus2170.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj -c Debug (dns block)
  • faxvsblobprodwus2122.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj -c Debug (dns block)
  • g3xvsblobprodwus2151.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj -c Debug (dns block)
  • i01vsblobprodwus216.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj -c Debug (dns block)
  • isvvsblobprodwus2147.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj -c Debug (dns block)
  • jhgvsblobprodwus2167.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj -c Debug (dns block)
  • k4pvsblobprodwus2140.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj -c Debug (dns block)
  • ldhvsblobprodwus2153.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj -c Debug (dns block)
  • mt2vsblobprodwus2110.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj -c Debug (dns block)
  • nudvsblobprodwus214.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj -c Debug (dns block)
  • p2tvsblobprodwus2189.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj -c Debug (dns block)
  • s8nvsblobprodwus2158.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj -c Debug (dns block)
  • tn2vsblobprodwus2124.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj -c Debug (dns block)
  • wlnvsblobprodwus2188.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj -c Debug (dns block)
  • wztvsblobprodwus2155.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj -c Debug (dns block)
  • x0dvsblobprodwus2111.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj -c Debug (dns block)
  • y5lvsblobprodwus2179.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj -c Debug (dns block)
  • yf8vsblobprodwus212.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj (dns block)
    • Triggering command: /usr/bin/dotnet dotnet build src/Compute/Compute/Compute.csproj -c Debug (dns block)
  • zt8vsblobprodwus2176.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet restore src/Compute/Compute/Compute.csproj (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Copilot AI self-assigned this May 4, 2026
Copilot AI review requested due to automatic review settings May 4, 2026 18:22
Copilot AI review requested due to automatic review settings May 4, 2026 18:22
@azure-client-tools-bot-prd
Copy link
Copy Markdown

Thanks for your contribution! The pull request validation has started. Please revisit this comment for updated status.

Copilot AI requested review from Copilot and removed request for Copilot May 4, 2026 18:42
Copilot AI changed the title [WIP] Add BestEffortAligned storage FD alignment support for VMSS Flex [Compute] Add BestEffortAligned storage FD alignment support for VMSS Flex May 4, 2026
Copilot finished work on behalf of haagha May 4, 2026 18:44
Copilot AI requested a review from haagha May 4, 2026 18:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants