Tento článek se zabývá některými běžnými dotazy týkajícími se podpory dočasných disků NVMe (Non-Volatile Memory Express) na virtuálních počítačích vytvořených v Azure. V tomto článku pojem "dočasný disk" odkazuje na dočasný disk vytvořený na místním disku SSD.
Jaké jsou požadavky na vytvoření dočasného disku, který pro můj virtuální počítač používá rozhraní NVMe?
Podpora NVMe pro místní dočasné disky se liší na úrovni řady virtuálních počítačů. Všechny nové virtuální počítače v6 s místním diskem podporují dočasné disky NVMe, ale virtuální počítače v5 a starší verze nemusí podporovat místní dočasné disky NVMe, protože většina těchto velikostí místních disků je v rozhraní SCSI. Některé rodiny virtuálních počítačů, jako jsou L-série, zahrnují připojené disky SSD NVMe, počínaje generací Lsv2. Projděte si přehledy řady virtuálních počítačů a zjistěte, jestli jsou podporované dočasné disky NVMe. Mějte také na paměti, že hostovaný operační systém musí mít podporu ovladače NVMe, aby bylo možné použít místní NVMe, které ve výchozím nastavení mají nejnovější verze operačního systému.
Jak se dočasné disky NVMe v mých virtuálních počítačích Dl/D/E_v6 liší od vzdálených disků NVMe?
Klíčovým rozdílem je, že dočasné disky NVMe jsou přechodné a data na virtuálních počítačích můžou zmizet, ale data na vzdálených discích NVMe zůstanou. Při volbě možností úložiště virtuálního počítače v tomto rozdílu zastavte tento rozdíl.
Na rozdíl od předchozích virtuálních počítačů řady D/E se nové virtuální počítače v6 dodávají s nezpracovanými a neformátovanými disky NVMe. Po spuštění virtuálního počítače by zákazníci měli disky inicializovat a naformátovat do systému souborů podle svých preferencí.
Virtuální počítače řady Dl/D/E v6 jsou optimalizované tak, aby používaly místní dočasný disk NVMe na uzlu připojeném přímo k virtuálnímu počítači, a ne dříve používané místní disky SCSI (Small Computer System Interface). Tato metoda umožňuje vyšší vstupně-výstupní operace za sekundu a vyšší propustnost pro vaše úlohy.
Na jaké změny se mám připravit při konfiguraci virtuálních počítačů s dočasnými disky NVMe?
Disky by se měly inicializovat a formátovat po spuštění virtuálního počítače. Po zastavení, uvolnění nebo plánované údržbě iniciované uživatelem a událostech automatického obnovení iniciovaných platformou Azure se virtuální počítače spouštějí jenom s nezpracovanými dočasnými disky NVMe. Pro aplikace nejsou viditelné žádné dočasné disky NVMe, dokud nebudou inicializovány a formátovány.
Po spuštění virtuálního počítače můžete rozdělit jednotky NVMe do jedné podle potřeby.
Stránkovací soubor Windows se umístí na trvalé disky s operačním systémem (pokud nepoužíváte dočasnou funkci operačního systému), ale po spuštění virtuálního počítače ho můžete podle potřeby přesunout na dočasné disky NVMe.
Funkce dočasného operačního systému, pokud ji použijete, převede jeden nebo několik disků NVMe (v závislosti na velikosti virtuálního počítače a image) na pomalejší disk založený na SCSI/VHD, podobně jako na virtuálních počítačích verze 5 a starších virtuálních počítačích. U větších velikostí virtuálních počítačů zůstanou zbývající jednotky nezformátované nvMe jako nezformátované.
Seznam skladových jednotek (SKU) prostředků v rozhraní REST API zveřejňuje několik možností virtuálních počítačů. Další iterace velikostí virtuálních počítačů používá rychlejší a efektivnější protokol NVMe pro místní úložiště místo protokolu SCSI, který používají starší velikosti virtuálních počítačů.
Pro virtuální počítače Azure je místní úložiště založené na standardu SCSI dočasným diskem prostředků a
MaxResourceVolumeMBhodnota určuje velikost tohoto disku. Naproti tomuNVMeDiskSizeInMiBhodnota určuje velikost místního úložiště založeného na NVMe.
Jaké je minimální šifrování nabízené Azure pro dočasné disky NVMe?
Všechny místní disky NVMe na virtuálních počítačích Azure mají ve výchozím nastavení povolené integrované šifrování pro ochranu dat. Dočasné disky NVMe podporují funkci šifrování neaktivních uložených dat. Jedinečný šifrovací klíč dat (DEK) šifruje data pro každý disk temp NVMe přiřazený k virtuálnímu počítači. Šifrovací klíč klíče (KEK) pomáhá chránit klíč DEK. Když odstraníte virtuální počítač, data na jeho dočasném disku NVMe se kryptograficky vymažou. Všechny virtuální počítače v6, které jsou zavedeny z roku 2024 a novější, mají své místní jednotky NVMe zašifrované ve výchozím nastavení pomocí hardwarového šifrování pomocí spravovaného klíče platformy.
- Data se šifrují pomocí XTS-AES-256, AES-256-GCM nebo silnější šifry.
- Zařízení vygeneruje jedinečný šifrovací klíč médií (MEK) pro každý disk ve virtuálním počítači.
- MEK je:
- Vygenerováno a uloženo zcela v hardwaru zařízení.
- Nikdy se nezostavujte hostiteli, virtuálnímu počítači ani žádné externí komponentě, včetně operátora nebo systému Azure.
- Všechny operace šifrování a dešifrování probíhají v zařízení pomocí MEK.
- Klíč MEK se zničí, když odstraníte virtuální počítač a zajistíte, že žádná komponenta pak nebude mít k datům přístup.
Co je rozšířené šifrování neaktivních uložených dat?
Rozšířené šifrování neaktivních uložených dat je další vrstva ochrany, která je dostupná na virtuálních počítačích řady Azure V6 a Lsv4-series prostřednictvím podpory standardů TCG-OPAL. U této funkce nemusíte provádět žádnou akci, je to výchozí hodnota pro tyto typy virtuálních počítačů.
- Infrastruktura Azure generuje a bezpečně ukládá hodnotu PIN pro každý klíč MEK.
- PIN kód se předává prostřednictvím funkce KDF (Key Derivation Function) v zařízení úložiště za účelem vygenerování klíče KEK (Key Encrypting Key). PIN kód funguje jako klíč pro správu platformy (PMK).
- Klíč MEK se šifruje pomocí klíče KEK a ukládá se interně v rámci úložného zařízení.
- Klíč KEK není uložený nikde a úložné zařízení dynamicky generuje klíč KEK, když se pin kód použije k jeho úspěšnému ověření. Bez tohoto KÓDU PIN nemůže zařízení dešifrovat vlastní uložená data– i když k němu fyzicky přistupujete.
- Zařízení úložiště se ověřuje při spuštění virtuálního počítače. Když se virtuální počítač zastaví, uzamkne se, což zajistí, že data budou přístupná jenom v době, kdy je virtuální počítač spuštěný.
Jak můžu změnit velikost virtuálního počítače v5 nebo staršího virtuálního počítače s dočasným diskem na v6?
Prohlédni si nejčastější dotazy k velikostem virtuálních počítačů Azure bez místního dočasného disku.
Jak zjistím svůj dočasný disk NVMe?
Pro Windows můžete spustit následující příkaz:
Get-PhysicalDisk | where { $_.FriendlyName.contains("NVMe Direct Disk")}
Pro Linux můžete spustit následující příkaz:
sudo nvme id-ns /dev/nvme0n1 -b | dd bs=1 skip=384 status=none | sed 's/\x00*$//'
Jak můžu při vytváření virtuálního počítače formátovat a inicializovat dočasné disky NVMe ve Windows?
Můžete použít grafické uživatelské rozhraní nebo Azure PowerShell.
grafické rozhraní (GUI)
Návod
Následující příklad grafického uživatelského rozhraní je určen pro ilustrativní účely. Doporučujeme vytvořit skripty pro automatizaci tohoto pracovního postupu pro produkční nasazení.
Výběrem klávesy s logem Windows + R otevřete dialogové okno Spustit . Zadejte diskmgmt.msc a vyberte klávesu Enter.
Vyberte styl oddílu (MBR nebo GPT) a disky, které se mají inicializovat, a pak vyberte OK.
Klikněte pravým tlačítkem myši na disk, který chcete rozdělit na oddíly, a pak vyberte Nový jednoduchý svazek.
Chcete-li zadat položky, jako je velikost svazku, písmeno jednotky, systém souborů a popisek svazku, postupujte podle průvodce novým jednoduchým svazkem. Výběrem tlačítka Další můžete procházet průvodcem.
Pokud chcete oddíl a formát dokončit, zkontrolujte nastavení a pak vyberte Dokončit.
Ověřte, že se v nástroji Správa disků systému Windows zobrazí formátované a inicializované disky NVMe, podobně jako v tomto příkladu vypadá nový svazek (E:).
Skript Azure PowerShellu
Návod
Následující skript inicializuje, formátuje a přiřazuje písmena jednotek. Vymaže ale všechna data na disku. Před nasazením do produkčního prostředí byste ho měli důkladně otestovat na virtuálních počítačích.
# Select the raw NVMe disks to partition and format
$RawNvmeDisks = Get-PhysicalDisk -CanPool $True | where { $_.FriendlyName.contains("NVMe Direct Disk")}
# Create a pool of the existing disks
New-StoragePool -FriendlyName NVMePool -StorageSubsystemFriendlyName "Windows Storage*" -PhysicalDisks $RawNvmeDisks -ResiliencySettingNameDefault Simple
#Create a new disk, initialize, partition, and format
$Disk = New-VirtualDisk -FriendlyName NVMeTemporary -StoragePoolFriendlyName NVMePool -NumberOfColumns @($RawNvmeDisks).count -PhysicalDiskRedundancy 0 -ResiliencySettingName "Simple" -UseMaximumSize
$Disk | Initialize-Disk
#Create a partition and format. Ignore the pop-up.
New-Partition -DiskId $Disk.UniqueId -AssignDriveLetter -UseMaximumSize | Format-Volume
Jak můžu formátovat a inicializovat dočasné disky NVMe v Linuxu?
Následující skript obsahuje příklad inicializace disků temp NVMe v Linuxu. Skript vytvoří výčet všech disků temp NVMe na virtuálním počítači, zkombinuje disky do jednoho pole RAID 0 a vytvoří formátovaný oddíl zadaného systému souborů.
Dočasné disky NVMe jsou odlišeny číslem modelu, které se zobrazuje jako Microsoft NVMe Direct Disk hostovaný operační systém. Tento skript pomocí nvme-cli id-ctrl příkazu dotazuje číslo modelu každého zařízení NVMe.
Skript nejprve zkontroluje všechny již vytvořené svazky disku NVMe (identifikované popiskem filesystem ). Pokud se zdá, že pole existuje, skript ověří integritu pole a v případě potřeby zopakuje proces inicializace. Pole se znovu inicializuje v následujících případech:
- Chybí jeden nebo více dočasných disků pole.
- Do pole ještě nejsou začleněné dočasné disky.
- Diskové pole je v jiném neplatném nebo neznámém stavu.
- Přidružené konfigurační soubory chybí nebo jsou neplatné.
#!/bin/bash
# Script requirements:
# nvme-cli
# mdadm
# gdisk
readonly USAGE="Usage: $(basename "$0") <filesystem> <filesystem mount point (optional)>"
# Label used to identify the NVMe array file system and associated disks
# Can't exceed 16 characters
readonly RAID0_FILESYSTEM_LABEL="azure_nvme_temp"
# Device path used for the RAID 0 NVMe array
# Choose any unoccupied device path of format /dev/mdX (X = 0 to 99)
readonly RAID0_DEVICE_PATH="/dev/md0"
# Formatted RAID 0 partition is mounted here
readonly DEFAULT_MOUNT_POINT="/mnt/${RAID0_FILESYSTEM_LABEL}"
filesystem="$1"
if [ ! "$filesystem" ]; then
printf "No filesystem specified. Usage: $USAGE\n"
exit 1
fi
if ! [ -x "$(command -v mkfs.$filesystem)" ]; then
printf "Filesystem \"$filesystem\" not supported by mkfs\n$USAGE\n"
exit 1
fi
mount_point="$2"
if [ ! "$mount_point" ]; then
printf "No mount point specified. Using default: $DEFAULT_MOUNT_POINT\n"
mount_point=$DEFAULT_MOUNT_POINT
fi
# Make sure mdadm.conf is present
mdadm_conf_path=""
if [ -e "/etc/mdadm/mdadm.conf" ]; then
mdadm_conf_path="/etc/mdadm/mdadm.conf"
elif [ -e "/etc/mdadm.conf" ]; then
mdadm_conf_path="/etc/mdadm.conf"
else
printf "Couldn't find mdadm.conf file"
exit 1
fi
# Enumerate unmounted NVMe direct disks
devices=$(lsblk -p -o NAME,TYPE,MOUNTPOINT | grep "nvme" | awk '$2 == "disk" && $3 == "" {print $1}')
nvme_direct_disks=()
for device in $devices
do
if nvme id-ctrl "$device" | grep -q "Microsoft NVMe Direct Disk"; then
nvme_direct_disks+=("$device")
fi
done
nvme_direct_disk_count=${#nvme_direct_disks[@]}
printf "Found $nvme_direct_disk_count NVMe Direct Disks\n"
# Check if there's already an NVMe Direct Disk RAID 0 disk (or remnant data)
if grep "$RAID0_FILESYSTEM_LABEL" /etc/fstab > /dev/null; then
fstab_entry_present=true
fi
if grep "$RAID0_FILESYSTEM_LABEL" $mdadm_conf_path > /dev/null; then
mdadm_conf_entry_present=true
fi
if [ -e $RAID0_DEVICE_PATH ]; then
nvme_raid0_present=true
fi
if [ "$fstab_entry_present" = true ] || [ "$mdadm_conf_entry_present" = true ] || [ "$nvme_raid0_present" = true ]; then
# Check if the RAID 0 volume and associated configurations are still intact or need to be reinitialized
#
# If reinitialization is needed, clear the old RAID 0 information and associated files
reinit_raid0=false
if [ "$fstab_entry_present" = true ] && [ "$mdadm_conf_entry_present" = true ] && [ "$nvme_raid0_present" = true ]; then
# Check RAID 0 device status
if ! mdadm --detail --test $RAID0_DEVICE_PATH &> /dev/null; then
reinit_raid0=true
# Test the NVMe direct disks for valid mdadm superblocks
else
for device in "${nvme_direct_disks[@]}"
do
if ! mdadm --examine $device &> /dev/null; then
reinit_raid0=true
break
fi
done
fi
else
reinit_raid0=true
fi
if [ "$reinit_raid0" = true ]; then
echo "Errors found in NVMe RAID 0 temp array device or configuration. Reinitializing."
# Remove the file system and partition table, and stop the RAID 0 array
if [ "$nvme_raid0_present" = true ]; then
if [ -e ${RAID0_DEVICE_PATH}p1 ]; then
umount ${RAID0_DEVICE_PATH}p1
wipefs -a -f ${RAID0_DEVICE_PATH}p1
fi
sgdisk -o $RAID0_DEVICE_PATH &> /dev/null
mdadm --stop $RAID0_DEVICE_PATH
fi
# Remove any mdadm metadata from all NVMe Direct Disks
for device in "${nvme_direct_disks[@]}"
do
printf "Clearing mdadm superblock from $device\n"
mdadm --zero-superblock $device &> /dev/null
done
# Remove any associated entries in fstab and mdadm.conf
sed -i.bak "/$RAID0_FILESYSTEM_LABEL/d" /etc/fstab
sed -i.bak "/$RAID0_FILESYSTEM_LABEL/d" $mdadm_conf_path
else
printf "Valid NVMe RAID 0 array present and no additional Direct Disks found. Skipping\n"
exit 0
fi
fi
if [ "$nvme_direct_disk_count" -eq 0 ]; then
printf "No NVMe Direct Disks found\n"
exit 1
elif [ "$nvme_direct_disk_count" -eq 1 ]; then
additional_mdadm_params="--force"
fi
# Initialize enumerated disks as RAID 0
printf "Creating RAID 0 array from:\n"
printf "${nvme_direct_disks[*]}\n\n"
if ! mdadm --create $RAID0_DEVICE_PATH --verbose $additional_mdadm_params --name=$RAID0_FILESYSTEM_LABEL --level=0 --raid-devices=$nvme_direct_disk_count ${nvme_direct_disks[*]}; then
printf "Failed to create RAID 0 array\n"
exit 1
fi
# Create a GPT partition entry
readonly GPT_PARTITION_TYPE_GUID="0FC63DAF-8483-4772-8E79-3D69D8477DE4"
printf "\nCreating GPT on $RAID0_DEVICE_PATH..\n"
sgdisk -o $RAID0_DEVICE_PATH &> /dev/null
if ! sgdisk --new 1::0 --typecode 1:$GPT_PARTITION_TYPE_GUID $RAID0_DEVICE_PATH &> /dev/null; then
printf "Failed to create partition on $RAID0_DEVICE_PATH\n"
exit 1
fi
# Format the partition
partition_path="${RAID0_DEVICE_PATH}p1"
printf "\nCreating $filesystem filesystem..\n"
if ! mkfs.$filesystem -q -L $RAID0_FILESYSTEM_LABEL $partition_path; then
printf "Failed to create $filesystem filesystem\n"
exit 1
fi
printf "The operation has completed successfully.\n"
# Add the partition to /etc/fstab
echo "LABEL=$RAID0_FILESYSTEM_LABEL $mount_point $filesystem defaults,nofail 0 0" >> /etc/fstab
# Add RAID 0 array to mdadm.conf
mdadm --detail --scan >> $mdadm_conf_path
update-initramfs -u
# Mount the partition
printf "\nMounting filesystem to $mount_point..\n"
mkdir $mount_point &> /dev/null
if ! mount -a; then
printf "Failed to automount partition\n"
exit 1
fi
printf "The operation has completed successfully.\n"
exit 0
V případě distribucí založených na RHEL/CentOS nahraďte update-initramfs -u za dracut --force pro opětovné vygenerování souboru initramfs.
Pokud se skript zastaví spuštění s chybou "Soubor mdadm.conf se nepovedlo najít", můžete vytvořit soubor mdadm.conf pomocí následujícího příkazu:
sudo touch /etc/mdadm/mdadm.conf
Jak můžu přesunout stránkovací soubor Windows z disku s operačním systémem na dočasný disk NVMe?
Můžete použít grafické uživatelské rozhraní nebo Azure PowerShell.
grafické rozhraní (GUI)
Návod
Následující příklad grafického uživatelského rozhraní je určen pro ilustrativní účely. Doporučujeme vytvořit skripty pro automatizaci tohoto pracovního postupu pro produkční nasazení.
Výběrem klávesy s logem Windows + R otevřete dialogové okno Spustit . Zadejte sysdm.cpl a vyberte klávesu Enter.
Vyberte kartu Upřesnit a pak v části Výkon vyberte tlačítko Nastavení.
V dialogovém okně Možnosti výkonu vyberte kartu Upřesnit a pak v části Virtuální paměť vyberte tlačítko Změnit.
Zrušte zaškrtnutí políčka Automaticky spravovat velikost stránkovacího souboru pro všechny jednotky. Pokud je stránkovací soubor nastavený na disk s operačním systémem, vyberte disk s operačním systémem, vyberte možnost Žádný stránkovací soubor a pak vyberte tlačítko Nastavit . Vyberte místní dočasnou jednotku NVMe, vyberte možnost Velikost spravovaná systémem a pak vyberte tlačítko Nastavit . Výběrem tlačítka OK zavřete všechna dialogová okna.
Možná budete muset virtuální počítač restartovat, aby se tyto změny projevily.
Skript Azure PowerShellu
$OsDisk = "C:"
# This value can vary, depending on which drive letter is assigned to the disk
$NVMeDisk = "E:"
# Disable automatic pagefile management
$Computer = Get-WmiObject Win32_computersystem -EnableAllPrivileges
$Computer.AutomaticManagedPagefile = $false
$Computer.Put()
# Delete the pagefile on the OS disk
$PageFile = Get-WmiObject -Query "select * from Win32_PageFileSetting where name='$OsDisk\\pagefile.sys'"
$PageFile.Delete()
# Create a new pagefile on the NVMe drive with system-managed size
Set-WMIInstance -Class Win32_PageFileSetting -Arguments @{name="$NVMeDisk\\pagefile.sys"; InitialSize=0; MaximumSize=0} -EnableAllPrivileges
Možná budete muset virtuální počítač restartovat, aby se tyto změny projevily.
Jak můžu přesunout prohození linuxového souboru z disku s operačním systémem na dočasný disk NVMe?
Vyberte disk NVMe použitý pro prohození místa:
root@D2adsv6:/ # lsblk -p NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT /dev/nvme1n1 259:0 0 30G 0 disk ├─/dev/nvme1n1p1 259:1 0 29.9G 0 part / └─/dev/nvme1n1p15 259:3 0 106M 0 part /boot/efi /dev/nvme0n1 259:4 0 75G 0 diskVytvořte na disku místo prohození:
root@D2adsv6:/ # mkswap /dev/nvme0n1 Setting up swapspace version 1, size = 75 GiB (80530632704 bytes) no label, UUID=064bdcfb-86ae-49f3-bf9d-b956493e2a1dPovolte prohození prostoru:
root@D2adsv6:/ # swapon /dev/nvme0n1Zkontrolujte, jestli je prohození správně nastavené:
root@D2adsv6:/ # swapon -s Filename Type Size Used Priority /dev/nvme0n1 partition 78643196 0 -2Připojte místo prohození, aby
/etc/fstabbyl trvalý při restartování:root@D2adsv6:/ # echo '/dev/nvme0n1 swap swap defaults 0 0' >> /etc/fstab
Jaké aspekty je potřeba vědět o událostech údržby, opětovném nasazení virtuálních počítačů a restartování virtuálních počítačů?
Dočasné disky NVMe připojené k virtuálním počítačům V6 jsou dočasné, podobně jako dočasné jednotky na jiných řadách virtuálních počítačů. To znamená, že po opětovném nasazení nebo během události údržby ztratíte všechna data na virtuálním počítači. Další informace o událostech údržby a výpadkech najdete v tématu Vysvětlení restartování virtuálních počítačů: Údržba a výpadek.
Pokud se virtuální počítač přesunul na nový hardware, tyto jednotky se odpojí a při zálohování se do operačního systému zobrazí nové odpojené disky. Pokud virtuální počítač nezměnil hardware, můžou být stále k dispozici dočasné disky NVMe. Předchozí skript pro připojení jednotek před pokusem o připojení jednotek zkontroluje odpojené jednotky.
Osvědčeným postupem je spustit skript pro připojení automaticky při každém spuštění virtuálního počítače a zpoždění všech ostatních spouštěcích skriptů, které vyžadují jednotky, dokud se skript připojení nedokončí.
Proč se rychlost zápisu z dočasného disku liší od publikovaných specifikací?
Na výkon dočasného disku má vliv několik faktorů, jako je velikost bloku, vzory čtení a zápisu úloh, hloubka fronty (QD). Publikované specifikace výkonu představují nejlepší možné scénáře, které jsou založeny na 4k náhodných velikostech bloků s více pracovníky (≥8) a QD≥64 na každého pracovníka pro dosažení špičkového počtu IOPS, a na velkých sekvenčních velikostech bloků (≥128k) pro maximální propustnost. Výkon zápisu může být ovlivněn vzory dat, stavem SSD (předpřidaná kapacita, procentuální zápis LBA) a aktivitami na pozadí, jako je garbage collection. Údaje o výkonu předpokládají, že zařízení je ve stavu FOB (fresh-out-of-box), který poskytuje nejvyšší rychlosti. Jakmile disk dosáhne stabilního stavu po specifikacích předběžné podmínky standardu SNIA, může být výkon zápisu nižší než úrovně FOB.