Sdílet prostřednictvím


Použití dočasných diskových uzlů operačního systému pro fondy Azure Batch

Některé řady virtuálních počítačů Azure podporují použití dočasných disků s operačním systémem, které vytvoří disk s operačním systémem v místním úložišti virtuálního počítače uzlu. Výchozí konfigurace fondu Batch používá spravované disky Azure pro disk operačního systému uzlu, kde se spravovaný disk podobá fyzickému disku, ale virtualizovaný a trvalý ve vzdáleném úložišti Azure.

Hlavními výhodami používání dočasných disků s operačním systémem pro úlohy Batch jsou snížení nákladů spojených s fondy, potenciál rychlejšího spuštění uzlu a zvýšení výkonu aplikace z důvodu lepšího výkonu disku s operačním systémem. Při volbě, jestli se mají pro vaši úlohu používat dočasné disky s operačním systémem, zvažte následující dopady:

  • Dočasné disky s operačním systémem mají nižší latenci čtení a zápisu, což může vést ke zlepšení výkonu aplikace.
  • U dočasných disků s operačním systémem nejsou žádné náklady na úložiště, zatímco na každý spravovaný disk s operačním systémem jsou náklady.
  • Opětovné vytvoření image pro výpočetní uzly je rychlejší pro dočasné disky v porovnání se spravovanými disky, pokud je služba Batch podporovaná.
  • Čas spuštění uzlu může být při použití dočasných disků s operačním systémem o něco rychlejší.
  • Dočasné disky s operačním systémem nejsou vysoce odolné a dostupné; při odebrání virtuálního počítače z jakéhokoli důvodu dojde ke ztrátě disku s operačním systémem. Vzhledem k tomu, že úlohy služby Batch jsou ze své podstaty bezstavové a obvykle nespoléhají na změny trvalého disku s operačním systémem, jsou dočasné disky s operačním systémem vhodné pro většinu úloh batch.
  • Dočasné disky s operačním systémem v současné době nepodporují všechny řady virtuálních počítačů Azure. Pokud velikost virtuálního počítače nepodporuje dočasný disk s operačním systémem, musí se použít spravovaný disk s operačním systémem.

Poznámka:

Konfigurace dočasného disku s operačním systémem je použitelná pouze pro fondy typu 'virtualMachineConfiguration' a není podporována pro fondy typu 'cloudServiceConfiguration'. Pro fondy Batch doporučujeme použít virtualMachineConfiguration, protože fondy cloudServiceConfiguration nepodporují všechny funkce a neplánují se žádné nové funkce.

Podpora sérií virtuálních počítačů

Pokud chcete zjistit, jestli řada virtuálních počítačů podporuje dočasné disky s operačním systémem, projděte si dokumentaci pro každou instanci virtuálního počítače. Například řada Ddv4 a Ddsv4 podporuje dočasné disky s operačním systémem.

Alternativně můžete programově ověřit podporu funkce 'EphemeralOSDiskSupported'. Ukázková rutina PowerShellu pro dotazování na tuto funkci je k dispozici v často kladených dotazech ohledně dočasného disku OS.

Vytvořte fond, který používá dočasné disky s operačním systémem

Vlastnost EphemeralOSDiskSettings není ve výchozím nastavení nastavená. Chcete-li konfigurovat dočasný disk s operačním systémem, který se používá na uzlech fondu, je nutné nastavit tuto vlastnost.

Tip

Dočasné disky s operačním systémem nelze použít ve spojení s spotovými virtuálními počítači ve fondech Batch kvůli zásadám vyřazení spravované službou.

Následující příklad ukazuje, jak vytvořit fond batch, ve kterém uzly používají dočasné disky s operačním systémem, nikoli spravované disky.

Příklady kódu

Tento fragment kódu ukazuje, jak vytvořit fond s efemérními OS disky pomocí Python SDK azure-mgmt-batch, přičemž efemérní OS disky využívají dočasný disk (mezipaměť).

from azure.identity import DefaultAzureCredential
from azure.mgmt.batch import BatchManagementClient
from azure.mgmt.batch.models import (
    BatchAccountPoolData,
    DeploymentConfiguration,
    VirtualMachineConfiguration,
    ImageReference,
    OSDisk,
    DiffDiskSettings,
    DiffDiskPlacement,
)


def create_pool_with_ephemeral_os_disk():
    client = BatchManagementClient(
        credential=DefaultAzureCredential(),
        subscription_id="subscriptionId",
    )

    pool = client.pool.create(
        resource_group_name="resourceGroupName",
        account_name="accountName",
        pool_name="ephemeralOSDiskPool",
        parameters=BatchAccountPoolData(
            vm_size="standard_ds1_v2",
            deployment_configuration=DeploymentConfiguration(
                virtual_machine_configuration=VirtualMachineConfiguration(
                    image_reference=ImageReference(
                        publisher="Canonical",
                        offer="UbuntuServer",
                        sku="22.04-LTS",
                    ),
                    node_agent_sku_id="batch.node.ubuntu 22.04",
                    os_disk=OSDisk(
                        ephemeral_os_disk_settings=DiffDiskSettings(
                            placement=DiffDiskPlacement.CACHE_DISK
                        )
                    ),
                )
            ),
        ),
    )

Jedná se o stejný fragment kódu, ale pro vytvoření fondu s dočasnými disky s operačním systémem pomocí sady Azure.ResourceManager.Batch SDK a jazyka C#.

using Azure;
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.Batch;
using Azure.ResourceManager.Batch.Models;

//...

public async Task SetEphemeralOSDisk()
{
    ArmClient client = new ArmClient(new DefaultAzureCredential());

    ResourceIdentifier batchAccountResourceId =
        BatchAccountResource.CreateResourceIdentifier("subscriptionId", "resourceGroupName", "accountName");
    BatchAccountResource batchAccount = client.GetBatchAccountResource(batchAccountResourceId);

    BatchAccountPoolCollection poolCollection = batchAccount.GetBatchAccountPools();

    BatchAccountPoolData poolData = new BatchAccountPoolData()
    {
        VmSize = "standard_ds1_v2",
        DeploymentConfiguration = new BatchDeploymentConfiguration()
        {
            VmConfiguration = new BatchVmConfiguration(
                imageReference: new BatchImageReference()
                {
                    Publisher = "Canonical",
                    Offer = "UbuntuServer",
                    Sku = "22.04-LTS"
                },
                nodeAgentSkuId: "batch.node.ubuntu 22.04")
            {
                OSDisk = new BatchOSDisk()
                {
                    EphemeralOSDiskSettings = new DiffDiskSettings()
                    {
                        Placement = BatchDiffDiskPlacement.CacheDisk
                    }
                }
            }
        }
    };

    ArmOperation<BatchAccountPoolResource> pool = await poolCollection.CreateOrUpdateAsync(
        WaitUntil.Completed, "ephemeralOSDiskPool", poolData);
}

Další kroky