This commit is contained in:
Martin Merdes 2024-03-11 16:57:24 +01:00
Родитель 2df55dffb8
Коммит 38a5fbf6e5
4 изменённых файлов: 2054 добавлений и 535 удалений

44
newVmSizes.csv Normal file
Просмотреть файл

@ -0,0 +1,44 @@
name; iops;mbps;vCPUs;tempDiskGiB;vmFamily
Standard_M32ms_v2; 20000; 500; 32;0; standardMSMediumMemoryv2Family
Standard_M64s_v2; 40000;1000; 64;0; standardMSMediumMemoryv2Family
Standard_M64ms_v2; 40000;1000; 64;0; standardMSMediumMemoryv2Family
Standard_M128s_v2; 80000;2000; 128;0; standardMSMediumMemoryv2Family
Standard_M128ms_v2; 80000;2000; 128;0; standardMSMediumMemoryv2Family
Standard_M32dms_v2; 20000;500; 32;1024; standardMDSMediumMemoryv2Family
Standard_M64ds_v2; 40000;1000; 64;2048; standardMDSMediumMemoryv2Family
Standard_M64dms_v2; 40000;1000; 64;2048; standardMDSMediumMemoryv2Family
Standard_M128ds_v2; 80000;2000; 128;4096; standardMDSMediumMemoryv2Family
Standard_M128dms_v2; 80000;2000; 128;4096; standardMDSMediumMemoryv2Family
Standard_M192is_v2; 80000;2000; 192;0; standardMISMediumMemoryv2Family
Standard_M192ims_v2; 80000;2000; 192;0; standardMISMediumMemoryv2Family
Standard_M192ids_v2; 80000;2000; 192;4096; standardMIDSMediumMemoryv2Family
Standard_M192idms_v2; 80000;2000; 192;4096; standardMIDSMediumMemoryv2Family
Standard_M208s_v2; 40000;1000; 208;4096; standardMSv2Family
Standard_M208ms_v2; 40000;1000; 208;4096; standardMSv2Family
Standard_M416s_v2; 80000;2000; 416;8192; standardMSv2Family
Standard_M416s_8_v2; 80000;2000; 416;4096; standardMSv2Family
Standard_M416ms_v2; 80000;2000; 416;8192; standardMSv2Family
Standard_M12s_v3; 16250;390; 12;0; standardMSMediumMemoryv3Family
Standard_M24s_v3; 32500;780; 24;0; standardMSMediumMemoryv3Family
Standard_M48s_1_v3; 65000;1560; 48;0; standardMSMediumMemoryv3Family
Standard_M96s_1_v3; 65000;1560; 96;0; standardMSMediumMemoryv3Family
Standard_M96s_2_v3; 130000;3120; 96;0; standardMSMediumMemoryv3Family
Standard_M176s_3_v3; 130000;4000; 176;0; standardMSMediumMemoryv3Family
Standard_M176s_4_v3; 130000;4000; 176;0; standardMSMediumMemoryv3Family
Standard_M12ds_v3; 16250;390; 12;400; standardMDSMediumMemoryv3Family
Standard_M24ds_v3; 32500;780; 24;400; standardMDSMediumMemoryv3Family
Standard_M48ds_1_v3; 65000;1560; 48;400; standardMDSMediumMemoryv3Family
Standard_M96ds_1_v3; 65000;1560; 96;400; standardMDSMediumMemoryv3Family
Standard_M96ds_2_v3; 130000;3120; 96;400; standardMDSMediumMemoryv3Family
Standard_M176ds_3_v3; 130000;4000; 176;400; standardMDSMediumMemoryv3Family
Standard_M176ds_4_v3; 130000;4000; 176;400; standardMDSMediumMemoryv3Family
Standard_M416s_6_v3; 130000;4000; 416;0; standardMSHighMemoryv3Family
Standard_M416s_8_v3; 130000;4000; 416;0; standardMSHighMemoryv3Family
Standard_M624s_12_v3; 130000;4000; 624;0; standardMSHighMemoryv3Family
Standard_M832s_12_v3; 130000;4000; 832;0; standardMSHighMemoryv3Family
Standard_M416ds_6_v3; 130000;4000; 416;400; standardMDSHighMemoryv3Family
Standard_M416ds_8_v3; 130000;4000; 416;400; standardMDSHighMemoryv3Family
Standard_M624ds_12_v3; 130000;4000; 624;400; standardMDSHighMemoryv3Family
Standard_M832ds_12_v3; 130000;4000; 832;400; standardMDSHighMemoryv3Family
Standard_M832is_16_v3; 130000;8000; 832;0; standardMISHighMemoryv3Family
Standard_M832ids_16_v3;130000;8000; 832;400; standardMIDSHighMemoryv3Family
1 name iops mbps vCPUs tempDiskGiB vmFamily
2 Standard_M32ms_v2 20000 500 32 0 standardMSMediumMemoryv2Family
3 Standard_M64s_v2 40000 1000 64 0 standardMSMediumMemoryv2Family
4 Standard_M64ms_v2 40000 1000 64 0 standardMSMediumMemoryv2Family
5 Standard_M128s_v2 80000 2000 128 0 standardMSMediumMemoryv2Family
6 Standard_M128ms_v2 80000 2000 128 0 standardMSMediumMemoryv2Family
7 Standard_M32dms_v2 20000 500 32 1024 standardMDSMediumMemoryv2Family
8 Standard_M64ds_v2 40000 1000 64 2048 standardMDSMediumMemoryv2Family
9 Standard_M64dms_v2 40000 1000 64 2048 standardMDSMediumMemoryv2Family
10 Standard_M128ds_v2 80000 2000 128 4096 standardMDSMediumMemoryv2Family
11 Standard_M128dms_v2 80000 2000 128 4096 standardMDSMediumMemoryv2Family
12 Standard_M192is_v2 80000 2000 192 0 standardMISMediumMemoryv2Family
13 Standard_M192ims_v2 80000 2000 192 0 standardMISMediumMemoryv2Family
14 Standard_M192ids_v2 80000 2000 192 4096 standardMIDSMediumMemoryv2Family
15 Standard_M192idms_v2 80000 2000 192 4096 standardMIDSMediumMemoryv2Family
16 Standard_M208s_v2 40000 1000 208 4096 standardMSv2Family
17 Standard_M208ms_v2 40000 1000 208 4096 standardMSv2Family
18 Standard_M416s_v2 80000 2000 416 8192 standardMSv2Family
19 Standard_M416s_8_v2 80000 2000 416 4096 standardMSv2Family
20 Standard_M416ms_v2 80000 2000 416 8192 standardMSv2Family
21 Standard_M12s_v3 16250 390 12 0 standardMSMediumMemoryv3Family
22 Standard_M24s_v3 32500 780 24 0 standardMSMediumMemoryv3Family
23 Standard_M48s_1_v3 65000 1560 48 0 standardMSMediumMemoryv3Family
24 Standard_M96s_1_v3 65000 1560 96 0 standardMSMediumMemoryv3Family
25 Standard_M96s_2_v3 130000 3120 96 0 standardMSMediumMemoryv3Family
26 Standard_M176s_3_v3 130000 4000 176 0 standardMSMediumMemoryv3Family
27 Standard_M176s_4_v3 130000 4000 176 0 standardMSMediumMemoryv3Family
28 Standard_M12ds_v3 16250 390 12 400 standardMDSMediumMemoryv3Family
29 Standard_M24ds_v3 32500 780 24 400 standardMDSMediumMemoryv3Family
30 Standard_M48ds_1_v3 65000 1560 48 400 standardMDSMediumMemoryv3Family
31 Standard_M96ds_1_v3 65000 1560 96 400 standardMDSMediumMemoryv3Family
32 Standard_M96ds_2_v3 130000 3120 96 400 standardMDSMediumMemoryv3Family
33 Standard_M176ds_3_v3 130000 4000 176 400 standardMDSMediumMemoryv3Family
34 Standard_M176ds_4_v3 130000 4000 176 400 standardMDSMediumMemoryv3Family
35 Standard_M416s_6_v3 130000 4000 416 0 standardMSHighMemoryv3Family
36 Standard_M416s_8_v3 130000 4000 416 0 standardMSHighMemoryv3Family
37 Standard_M624s_12_v3 130000 4000 624 0 standardMSHighMemoryv3Family
38 Standard_M832s_12_v3 130000 4000 832 0 standardMSHighMemoryv3Family
39 Standard_M416ds_6_v3 130000 4000 416 400 standardMDSHighMemoryv3Family
40 Standard_M416ds_8_v3 130000 4000 416 400 standardMDSHighMemoryv3Family
41 Standard_M624ds_12_v3 130000 4000 624 400 standardMDSHighMemoryv3Family
42 Standard_M832ds_12_v3 130000 4000 832 400 standardMDSHighMemoryv3Family
43 Standard_M832is_16_v3 130000 8000 832 0 standardMISHighMemoryv3Family
44 Standard_M832ids_16_v3 130000 8000 832 400 standardMIDSHighMemoryv3Family

Просмотреть файл

@ -1,5 +1,5 @@
# RGCOPY documentation
**Version: 0.9.54<BR>October 2023**
**Version: 0.9.57<BR>February 2024**
***
### Introduction
@ -153,12 +153,22 @@ Step|parameter<BR>skip switch|usage
The following table explains the needed steps for disk creation in the target RG. These steps depend if an **ultra SKU** (`UltraSSD_LRS`, `PremiumV2_LRS`) or an **usual SKU** (`Premium_LRS`, `StandardSSD_LRS`, `Standard_LRS`, `Premium_ZRS`, `StandardSSD_ZRS`) is used for the disk in the source RG.
"same az-user" means that parameters `sourceSubUser` and `targetSubUser` are identical.
source SKU<BR>`RGCOPY switch`|target<ul><li>same az-user</li><li>same region</li><li>any subscription</li></ul>|target<ul><li>same az-user</li><li>different region</li></ul><BR>|target<ul><li>different az-user</li></ul><BR><BR>
:---|:---|:---|:---
usual SKU|- full snapshot|- full snapshot<BR>- create **BLOB** in target|- full snapshot<BR>- create **BLOB** in target
ultra SKU|- incremental snapshot|- incremental snapshot<BR>- create **BLOB** in target|- incremental snapshot<BR>- create **BLOB** in target
any SKU<BR>`useBlobs`|- full / incremental snapshot<BR>- create **BLOB** in target|- full / incremental snapshot<BR>- create **BLOB** in target|- full / incremental snapshot<BR>- create **BLOB** in target
any SKU<BR>`useSnapshotCopy`|- incremental snapshot<BR>- copy **snapshot** to target|- incremental snapshot<BR>- copy **snapshot** to target|- incremental snapshot<BR>- create **BLOB** in target
x|target RG<ul><li>same az-user</li><li>and same region</li></ul>|target RG<ul><li>other az-user</li><li>or different region</li></ul>
:---|:---|:---
**source RG<BR><ul><li>usual SKU**</li></ul>|- full snapshot<BR><BR>- create disk from snapshot|- full snapshot<BR>- create BLOB in target<BR>- create disk from BLOB
**source RG<BR><ul><li>ultra SKU**</li></ul>|- incremental snapshot<BR><BR>- create disk from snapshot|- incremental snapshot<BR>- create BLOB in target<BR>- create disk from BLOB
Dependent on the snapshot type (full or incremental) and other constraints, disks are created either using the main ARM/BICEP template, a separate ARM/BICEP template, or manually using `New-AzDisk` or an REST-API call.
You can further change the behavior by setting the following parameters:
parameter|[DataType]: usage
:---|:---
**`useBlobs`** |**[switch]**: Always use BLOB copy (even when source RG and target RG are in the same region)
**`useSnapshotCopy`** |**[switch]**: Always use snapshot copy rather than BLOB copy whenever possible (same az-user must be used for source RG and target RG)
**`useIncSnapshots`** |**[switch]**: Always use incremental snapshots rather than full snapshots
**`createDisksManually`** |**[switch]**: Do not use an ARM- or BICEP-template for creating disks (use `New-AzDisk` or a REST-API call instead)
**`useRestAPI`** |**[switch]**: Always Use REST-API calls instead of using `Grant-AzSnapshotAccess`, `New-AzDisk` and `New-AzSnapshot` (for snapshot copy)
> :memo: **Note:** An ultra SKU can use a logical sector size of either 512 byte or 4 KB. A disk that is using an ultra SKU with a **locical sector size of 512 byte** can be converted to any SKU. However, a disk is that using an ultra SKU with 4 KB locical sector size can only be converted to an ultra SKU.
@ -346,10 +356,10 @@ parameter|[DataType]: usage
**`skipVmssFlex`**|**[switch]**: do not copy existing VM Scale Sets Flexible. <BR>Hereby, the target RG does not contain any VM Scale Set.
**`skipAvailabilitySet`**|**[switch]**: do not copy existing Availability Sets. <BR>Hereby, the target RG does not contain any Availability Set.
**`skipProximityPlacementGroup`**|**[switch]**: do not copy existing Proximity Placement Groups. <BR>Hereby, the target RG does not contain any Proximity Placement Group.
**`createVmssFlex`** = <BR>`@("vmss/fault/zones@vm1,vm2,...", ...)` |Create a VMSS Flex (VM Scale Set with Flexible orchestration mode) for given VMs: <ul><li>**vmss**: VM Scale Set Name </li><li>**fault**: Fault domain count in {none, 2, 3, max}.<BR>For SAP, fault domain count must always be `none`.</li><li>**zones** Allowed Zones in {none, 1+2, 1+3, 2+3, 1+2+3} </li><li>**vm**: VM name </li></ul>:memo: **Note:** When you are using this parameter for creating new VM Scale Sets then all existing VM Scale Sets are removed first.<BR>:warning: **Warning:** Either *zones* or *fault* must have the value `none`.<BR>For SAP, *fault* must have the value `none`.<BR>:bulb: **Tip:** A fault domain count of *max* automatically creates the maximum number of fault domains in the target region.
**`createVmssFlex`** = <BR>`@("vmss/fault/zones@vm1,vm2,...", ...)` |Create a VMSS Flex (VM Scale Set with Flexible orchestration mode) for given VMs: <ul><li>**vmss**: VM Scale Set Name </li><li>**fault**: Fault domain count in {`none`, `1`, `2`, `3`, `max`}.<BR>`none` is a synonym for `1`. `max` is a synonym for the maximum number of fault domains in the target region</li><li>**zones** Allowed Zones in {`none`, `1`, `2`, `3`, `1+2`, `1+3`, `2+3`, `1+2+3`} </li><li>**vm**: VM name </li></ul>:memo: **Note:** When you are using this parameter for creating new VM Scale Sets then all existing VM Scale Sets are removed first.<BR>:memo: **Note:** for zonal deployment, *fault* must have the value `1` (or `none`)<BR>:warning: **Warning:** For SAP, we recommend zonal deployment (and therefore, *fault* must have the value `1` or `none`).<BR>:memo: **Note:** When not specifying any VM then this configuration is *not* valid for all VMs. Instead, a VMSS flex is created without any member.
**`singlePlacementGroup`**|Set property `singlePlacementGroup` for all VMSS Flex.<BR>Allowed values in {`$Null`, `$True`, `$False`}<BR>Setting this parameter is normally not needed.
**`createAvailabilitySet`** = <BR>`@("avset/fault/update@vm1,vm2,...", ...)` |Create Azure Availability Set for given VMs:<ul><li>**avset**: Availability Set Name </li><li>**fault**: Fault domain count</li><li>**update**: Update domain count</li><li>**vm**: VM name </li></ul>:memo: **Note:** When you are using this parameter for creating new Availability Sets then all existing Availability Sets *and* Proximity Placement Groups are removed first.
**`createProximityPlacementGroup`** = <BR>`@("ppg@res1,res2,...", ...)` |Create Azure Proximity Placement Group for given resources: <ul><li>**ppg**: Proximity Placement Group Name </li><li>**res**: resource name (either VM, Availability Set or VMSS Flex) </li></ul>:memo: **Note:** When you are using this parameter for creating new Proximity Placement Groups then all existing Proximity Placement Groups *and* Availability Sets are removed first.<BR>:warning: **Warning:** You might use the same name for a VM and an Availability Set and add this name as resource name to this parameter. In this case, the VM as well as the Availability Set will be added to the Proximity Placement Group.
**`createAvailabilitySet`** = <BR>`@("avset/fault/update@vm1,vm2,...", ...)` |Create Azure Availability Set for given VMs:<ul><li>**avset**: Availability Set Name </li><li>**fault**: Fault domain count</li><li>**update**: Update domain count</li><li>**vm**: VM name </li></ul>:memo: **Note:** When you are using this parameter for creating new Availability Sets then all existing Availability Sets *and* Proximity Placement Groups are removed first.<BR>:memo: **Note:** When not specifying any VM then this configuration is *not* valid for all VMs. Instead, an AvSet is created without any member.
**`createProximityPlacementGroup`** = <BR>`@("ppg@res1,res2,...", ...)` |Create Azure Proximity Placement Group for given resources: <ul><li>**ppg**: Proximity Placement Group Name </li><li>**res**: resource name (either VM, Availability Set or VMSS Flex) </li></ul>:memo: **Note:** When you are using this parameter for creating new Proximity Placement Groups then all existing Proximity Placement Groups *and* Availability Sets are removed first.<BR>:warning: **Warning:** You might use the same name for a VM and an Availability Set and add this name as resource name to this parameter. In this case, the VM as well as the Availability Set will be added to the Proximity Placement Group.<BR>:memo: **Note:** When not specifying any resource then this configuration is *not* valid for all VMs. Instead, a PPG is created without any member.
In Azure you cannot directly configure the Availability Zone for an Availability Set. However, you can indirectly pin an Availability Set to an Availability Zone. The trick is to deploy an additional VM that is in the Availability Zone. If this VM and the Availability Set are in the same Proximity Placement Group then they are also in the same Availability Zone. However, this only works if the VM is deployed first. If you deploy the Availability Set first then it might be deployed in a different Availability Zone. Afterwards, the deployment of the VM fails because the requirements for Availability Zone and Proximity Placement Group cannot be fulfilled at the same time. Luckily, you can define the deployment order in RGCOPY:

2458
rgcopy.ps1

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,6 +1,61 @@
## Version history
#### RGCOPY 0.9.55 October 2023
#### RGCOPY 0.9.58 March 2024
type|change
:---|:---
feature| Allow snapshot copy to a different subscription
feature| New parameter `skipWorkarounds`
experimental<BR>feature| New parameters `swapSnapshot4disk` and `swapDisk4disk`
bug fix| Fix a bug that was introduced in RGCOPY 0.9.55 that did not allow to deploy TiP sessions using BICEP
feature| New parameter `useNewVmSizes`
#### RGCOPY 0.9.57 February 2024
type|change
:---|:---
feature| Workarounds for open Azure issues.
feature| New parameters `useIncSnapshots`, `createDisksManually` and `useRestAPI`
#### Workarounds in RGCOPY for open Azure issues:
**1. BLOB COPY issue (Grant-AzSnapshotAccess)**
Grant-AzSnapshotAccess fails for disks with logical sector size 4096
https://github.com/Azure/azure-powershell/issues/24129
https://github.com/Azure/azure-cli/issues/28320
*-> use REST API rather than Grant-AzSnapshotAccess*
**2. SNAPSHOT COPY issue (New-AzSnapshot)**
security type trusted launch gets lost during snapshot copy
https://github.com/Azure/azure-powershell/issues/24242
https://github.com/Azure/azure-cli/issues/28457
*-> use REST API for snapshot copy when security type is set*
**3. disk creation issue (ARM template)**
security type trusted launch cannot be set when creating disks from BLOB in ARM template
https://github.com/Azure/azure-powershell/issues/24253
*-> create disks from BLOB outside ARM template (New-AzDisk)*
**4. disk creation issue (New-AzDisk)**
security type trusted launch cannot be set when creating disks from BLOB using New-AzDisk
https://github.com/Azure/azure-powershell/issues/24253
*-> use REST API for creating disk*
**5. disk creation issue (New-AzDisk)**
disk controller type NVMe cannot be set when creating disks from BLOB using New-AzDisk
*-> use REST API for creating disk*
#### RGCOPY 0.9.56 January 2024
type|change
:---|:---
feature| Allow existing incremental snapshots. However, you must not create an additional incremental snapshot while RGCOPY is running. RGCOPY 0.9.56 always deletes copied incremental snapshots at the very end. This allows starting a new RGCOPY run with parameter `skipSnapshots` afterwards.
feature| Remove check for trusted launch on premium V2 disks. This restriction has been removed by Azure as of January 2024.
feature|New syntax for `createVmssFlex`: <BR>- Allow using `1` instead of the synonym `none` for the fault domain count.<BR>- Allow `1` for zones. <BR>- Allow `none` for zones *and* `none` for fault domain count at the same time - although this is not a recommended configuration for SAP. We need this for testing non-SAP scenarios.
feature|Allow creating AvSets, PPGs and VMSS without members. Just do not add an `@<vm1>, ...` to the parameter.
experimental feature| New patch mode, that installs Linux updates.<BR>New parameters `patchMode`, `patchVMs`, `patchKernel`, `patchAll`, `prePatchCommand` and `skipStopVMsAfterPatching`
feature|Automatically remove Availability Zone if VM was not part of an AvSet but becomes part of a new AvSet by using parameter `createAvailabilitySet`
feature| Allow parameters `setDiskMBps` and `setDiskIOps` also for UltraSSD disks. However, parameter values are not checked for consistency.
feature| workaround for Azure bugs:<BR>- use snapshot copy rather than BLOB copy if disk sector size is 4096 <BR>- use BLOB copy rather than snapshot copy if OS disk is configured as Trusted Launch
feature| remove unneeded snapshot revoke for snapshot copy
#### RGCOPY 0.9.55 November 2023
type|change
:---|:---
bug fix|Allow copying load balancer with outbound rules