Optimera prestanda för ditt elastiska SAN
Den här artikeln innehåller några allmänna riktlinjer för hur du får optimala prestanda med en miljö som använder ett Elastiskt SAN i Azure.
Optimering på klientsidan
Allmänna rekommendationer (virtuella Windows- och Linux-datorer)
För bästa prestanda distribuerar du dina virtuella datorer och elastiska SAN i samma zon och i samma region.
Vm Storage I/O till elastiska SAN-volymer använder vm-nätverksbandbredd, så traditionella gränser för diskdataflöde på en virtuell dator gäller inte för elastiska SAN-volymer. Välj en virtuell dator som kan ge tillräckligt med bandbredd för produktion/VM-till-VM I/O och iSCSI I/O för anslutna elastiska SAN-volymer. I allmänhet bör du använda virtuella datorer i Gen 5 (D/E/M-serien) för bästa prestanda.
Aktivera "Accelererat nätverk" på den virtuella datorn när den virtuella datorn skapas. Information om hur du gör det via Azure PowerShell eller Azure CLI eller för att aktivera accelererat nätverk på befintliga virtuella datorer finns i Använda Azure PowerShell för att skapa en virtuell dator med accelererat nätverk
- Du måste använda 32 sessioner per målvolym för varje volym för att uppnå maximala IOPS- och/eller dataflödesgränser. Använd Multipath I/O (MPIO) på klienten för att hantera dessa flera sessioner till varje volym för belastningsutjämning. Skript är tillgängliga för Windows, Linux eller på sidan Anslut till volym för dina volymer i Azure-portalen, som använder 32 sessioner som standard. Windows software iSCSI-initieraren har en gräns på högst 256 sessioner. Om du behöver ansluta fler än åtta volymer till en virtuell Windows-dator minskar du antalet sessioner till varje volym efter behov.
MPIO
Windows
Använd följande kommandon för att uppdatera inställningarna:
# Enable multipath support for iSCSI devices
Enable-MSDSMAutomaticClaim -BusType iSCSI
# Set the default load balancing policy based on your requirements. In this example, we set it to round robin which should be optimal for most workloads.
mpclaim -L -M 2
# Set disk time out to 30 seconds
Set-MPIOSetting -NewDiskTimeout 30
Mer information om MPIO-cmdletar finns i MPIO-referens.
Linux
Uppdatera /etc/multipath.conf-filen med följande:
defaults {
user_friendly_names yes # To create ‘mpathn’ names for multipath devices
path_grouping_policy multibus # To place all the paths in one priority group
path_selector "round-robin 0" # To use round robin algorithm to determine path for next I/O operation
failback immediate # For immediate failback to highest priority path group with active paths
no_path_retry 1 # To disable I/O queueing after retrying once when all paths are down
}
devices {
device {
vendor "MSFT"
product "Virtual HD"
}
}
iSCSI
Windows
Uppdatera registerinställningarna nedan för iSCSI-initieraren i Windows.
- Öppna Registereditorn:
- Välj Start, skriv regedit i sökrutan och tryck på Retur.
- Gå till följande plats: [\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e97b-e325-11ce-bfc1-08002be10318}\0004 (Microsoft iSCSI Initiator)\Parameters]
- Uppdatera följande inställningar. Högerklicka på varje inställning och välj Ändra. Ändra Bas till Decimal, uppdatera värdet och välj OK.
beskrivning | Parameter och värde |
---|---|
Anger maximalt antal data som initieraren skickar i en iSCSI PDU till målet till 256 KB | MaxTransferLength=262144 |
Anger maximal SCSI-nyttolast som initieraren förhandlar med målet till 256 KB | MaxBurstLength=262144 |
Anger maximalt antal ej begärda data som initieraren kan skicka i en iSCSI PDU till ett mål på 256 KB | FirstBurstLength=262144 |
Anger maximalt antal data som initieraren kan ta emot i en iSCSI PDU från målet till 256 KB | MaxRecvDataSegmentLength=262144 |
Inaktiverar R2T-flödeskontroll | InitialR2T=0 |
Aktiverar omedelbara data | ImmediateData=1 |
Anger tidsgränsvärdet för WMI-begäranden till 30 sekunder | WMIRequestTimeout = 30 sekunder |
Anger timeout-värde för länk nedtid till 30 sekunder | LinkDownTime = 30 sekunder |
I klusterkonfigurationer kontrollerar du att iSCSI-initierarnamn är unika för alla noder som delar volymer. I Windows kan du uppdatera dem via iSCSI-initierarappen.
Välj Start, sök efter iSCSI-initieraren i sökrutan. Då öppnas iSCSI-initieraren.
Välj Konfiguration för att se aktuellt initierarnamn.
Om du vill ändra den väljer du Ändra, anger nytt initierarnamn och väljer OK.
Linux
Uppdatera följande inställningar med rekommenderade värden i den globala iSCSI-konfigurationsfilen (iscsid.conf, som vanligtvis finns i katalogen /etc/iscsi) på klienten innan du ansluter några volymer till den. När en volym är ansluten skapas en nod tillsammans med en konfigurationsfil som är specifik för noden (till exempel på Ubuntu finns den i /etc/iscsi/nodes/$volume_iqn/portal_hostname,$port katalog) som ärver inställningarna från den globala konfigurationsfilen. Om du redan har anslutit en eller flera volymer till klienten innan du uppdaterar den globala konfigurationsfilen uppdaterar du den nodspecifika konfigurationsfilen för varje volym direkt eller med följande kommando:
sudo iscsiadm -m node -T $volume_iqn -p $portal_hostname:$port -o update -n $iscsi_setting_name -v $setting_value
Där
- $volume_iqn: Elastic SAN volume IQN
- $portal_hostname: Elastic SAN-volymportalens värdnamn
- $port: 3260
- $iscsi_setting_name: parameter för varje inställning som anges nedan
- $setting_value: värde som rekommenderas för varje inställning nedan
beskrivning | Parameter och värde |
---|---|
# Ange maximala data som initieraren skickar i en iSCSI PDU till målet till 256 KB | node.conn[0].iscsi. MaxXmitDataSegmentLength = 262144 |
# Ange maximal SCSI-nyttolast som initieraren förhandlar med målet till 256 KB | node.session.iscsi.MaxBurstLength = 262144 |
# Ange maximalt antal oönskade data som initieraren kan skicka i en iSCSI PDU till ett mål på 256 KB | node.session.iscsi.FirstBurstLength = 262144 |
# Ange maximala data som initieraren kan ta emot i en iSCSI PDU från målet till 256 KB | node.conn[0].iscsi. MaxRecvDataSegmentLength = 262144 |
# Inaktivera R2T-flödeskontroll | node.session.iscsi.InitialR2T = Nej |
# Aktivera omedelbara data | node.session.iscsi.ImmediateData = Ja |
# Ange timeout-värde för WMI-begäranden | node.conn[0].timeo.login_timeout = 30 node.conn[0].timeo.logout_timeout = 15 |
# Aktivera CRC-sammandragskontroll för huvud och data | node.conn[0].iscsi. HeaderDigest = CRC32C node.conn[0].iscsi. DataDigest = CRC32C |
I klusterkonfigurationer kontrollerar du att iSCSI-initierarnamn är unika för alla noder som delar volymer. I Linux kan du ändra /etc/iscsi/initiatorname.iscsi för att uppdatera initierarnamnet.
Elastiska SAN-optimeringar
Innan du distribuerar ett elastiskt SAN är det nödvändigt att fastställa den optimala storleken på det elastiska SAN som du distribuerar för att uppnå rätt balans mellan prestanda för dina arbetsbelastningar och kostnader. Använd följande steg för att fastställa den bästa storleksändringen för dig:
Med din befintliga lagringslösning väljer du ett tidsintervall (dag/vecka/kvartal) för att spåra prestanda. Det bästa tidsintervallet är en som är en bra ögonblicksbild av dina program/arbetsbelastningar. Under den tidsperioden registrerar du det kombinerade maximala IOPS- och dataflödet för alla arbetsbelastningar. Om du använder ett intervall som är högre än en minut, eller om någon av dina arbetsbelastningar har flaskhalsar med den aktuella konfigurationen, kan du överväga att lägga till mer baskapacitet i din Elastic SAN-distribution. Du bör lämna lite utrymme när du bestämmer din baskapacitet, för att ta hänsyn till tillväxten. Resten av elastic SAN-lagringen bör använda ytterligare kapacitet för att spara på kostnaden.
Mer information om prestanda finns i Elastisk SAN och prestanda för virtuella datorer.