Ottimizzare le prestazioni della san elastica

Questo articolo fornisce alcune indicazioni generali su come ottenere prestazioni ottimali con un ambiente che usa una SAN elastica di Azure.

Ottimizzazioni lato client

Raccomandazioni generali (Macchine virtuali Windows & Linux)

  • Per ottenere prestazioni ottimali, distribuire le macchine virtuali e la san elastica nella stessa zona e nella stessa area.

  • I/O di archiviazione delle macchine virtuali nei volumi SAN elastici usano la larghezza di banda di rete delle macchine virtuali, quindi i limiti di velocità effettiva dei dischi tradizionali in una macchina virtuale non si applicano ai volumi SAN elastici. Scegliere una macchina virtuale in grado di fornire larghezza di banda sufficiente per la produzione/I/O da macchina virtuale a VM e I/O iSCSI ai volumi SAN elastici collegati. In genere, è consigliabile usare macchine virtuali di generazione 5 (serie D/E/M) per ottenere prestazioni ottimali.

  • Abilitare "Rete accelerata" nella macchina virtuale durante la creazione della macchina virtuale. Per eseguire questa operazione tramite Azure PowerShell o l'interfaccia della riga di comando di Azure o per abilitare la rete accelerata in macchine virtuali esistenti, vedere Usare Azure PowerShell per creare una macchina virtuale con rete accelerata

Screenshot del flusso di creazione della macchina virtuale, abilitare la rete accelerata evidenziata.

  • È necessario usare 32 sessioni per ogni volume di destinazione per raggiungere i limiti massimi di operazioni di I/O al secondo e/o velocità effettiva. Usare Multipath I/O (MPIO) nel client per gestire queste più sessioni in ogni volume per il bilanciamento del carico. Gli script sono disponibili per Windows, Linux o nella pagina Connessione volume dei volumi nel portale di Azure, che usa 32 sessioni per impostazione predefinita. L'iniziatore iSCSI del software Windows ha un limite massimo di 256 sessioni. Se è necessario connettere più di otto volumi a una macchina virtuale Windows, ridurre il numero di sessioni a ogni volume in base alle esigenze.

MPIO

Windows

Usare i comandi seguenti per aggiornare le impostazioni:

# 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

Per altre informazioni sui cmdlet MPIO, vedere Informazioni di riferimento su MPIO.

Linux

Aggiornare il file /etc/multipath.conf con quanto segue:

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

Aggiornare le impostazioni del Registro di sistema seguenti per l'iniziatore iSCSI in Windows.

  1. Aprire l'editor del Registro di sistema:
  2. Selezionare Start, digitare regedit nella casella di ricerca e premere INVIO.
  3. Passare al percorso seguente: [\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e97b-e325-11ce-bfc1-08002be10318}\0004 (Iniziatore iSCSI Microsoft)\Parameters]
  4. Aggiornare le impostazioni seguenti. Fare clic con il pulsante destro del mouse su ogni impostazione e scegliere Modifica. Impostare Base su Decimale, aggiornare il valore e selezionare OK.
Descrizione Parametro e valore
Imposta il numero massimo di dati inviati dall'iniziatore in un PDU iSCSI alla destinazione a 256 KB MaxTransferLength=262144
Imposta il payload SCSI massimo negoziato dall'iniziatore con la destinazione a 256 KB MaxBurstLength=262144
Imposta il numero massimo di dati non richiesti che l'iniziatore può inviare in un PDU iSCSI a una destinazione a 256 KB FirstBurstLength=262144
Imposta il numero massimo di dati che l'iniziatore può ricevere in un PDU iSCSI dalla destinazione a 256 KB MaxRecvDataSegmentLength=262144
Disabilita il controllo del flusso R2T InitialR2T=0
Abilita i dati immediati ImmediateData=1
Imposta il valore di timeout per le richieste WMI su 30 secondi WMIRequestTimeout = 30 secondi
Imposta il valore di timeout per il tempo di inattività del collegamento su 30 secondi LinkDownTime = 30 secondi

Nelle configurazioni del cluster verificare che i nomi iniziatori iSCSI siano univoci in tutti i nodi che condividono volumi. In Windows è possibile aggiornarli tramite l'app Iniziatore iSCSI.

  1. Selezionare Start, cercare Iniziatore iSCSI nella casella di ricerca. Verrà aperto l'iniziatore iSCSI.

  2. Selezionare Configurazione per visualizzare il nome dell'iniziatore corrente.

    Screenshot della configurazione dell'iniziatore iSCSI in Windows.

  3. Per modificarlo, selezionare Cambia, immettere il nuovo nome dell'iniziatore e selezionare OK.

    Screenshot dell'aggiornamento del nome iniziatore iSCSI in Windows.

Linux

Aggiornare le impostazioni seguenti con i valori consigliati nel file di configurazione iSCSI globale (iscsid.conf, generalmente presente nella directory /etc/iscsi) nel client prima di connetterli a esso. Quando un volume è connesso, viene creato un nodo insieme a un file di configurazione specifico del nodo (ad esempio in Ubuntu, è disponibile in /etc/iscsi/nodes/$volume_iqn/portal_hostname,$port directory) che eredita le impostazioni dal file di configurazione globale. Se è già stato connesso uno o più volumi al client prima di aggiornare il file di configurazione globale, aggiornare il file di configurazione specifico del nodo per ogni volume direttamente o usando il comando seguente:

sudo iscsiadm -m node -T $volume_iqn -p $portal_hostname:$port -o update -n $iscsi_setting_name -v $setting_value

Dove

  • $volume_iqn: IQN del volume SAN elastico
  • $portal_hostname: nome host del portale del volume SAN elastico
  • $port: 3260
  • $iscsi_setting_name: parametro per ogni impostazione elencata di seguito
  • $setting_value: valore consigliato per ogni impostazione seguente
Descrizione Parametro e valore
# Impostare il numero massimo di dati inviati dall'iniziatore in un PDU iSCSI alla destinazione a 256 KB node.conn[0].iscsi. MaxXmitDataSegmentLength = 262144
# Impostare il payload SCSI massimo negoziato dall'iniziatore con la destinazione a 256 KB node.session.iscsi.MaxBurstLength = 262144
# Impostare il numero massimo di dati non richiesti che l'iniziatore può inviare in un PDU iSCSI a una destinazione a 256 KB node.session.iscsi.FirstBurstLength = 262144
# Impostare il numero massimo di dati che l'iniziatore può ricevere in un PDU iSCSI dalla destinazione a 256 KB node.conn[0].iscsi. MaxRecvDataSegmentLength = 262144
# Disabilitare il controllo del flusso R2T node.session.iscsi.InitialR2T = No
# Abilitare i dati immediati node.session.iscsi.ImmediateData = Sì
# Impostare il valore di timeout per le richieste WMI node.conn[0].timeo.login_timeout = 30

node.conn[0].timeo.logout_timeout = 15
# Abilitare il controllo del digest CRC per l'intestazione e i dati node.conn[0].iscsi. HeaderDigest = CRC32C

node.conn[0].iscsi. DataDigest = CRC32C

Nelle configurazioni del cluster verificare che i nomi degli iniziatori iSCSI siano univoci in tutti i nodi che condividono volumi. In Linux è possibile modificare /etc/iscsi/initiatorname.iscsi per aggiornare il nome dell'iniziatore. Screenshot che aggiorna il nome dell'iniziatore iSCSI in Linux.

Ottimizzazioni SAN elastiche

Prima di distribuire una SAN elastica, è necessario determinare le dimensioni ottimali della rete SAN elastica distribuita per ottenere il giusto equilibrio delle prestazioni per i carichi di lavoro e i costi. Attenersi alla procedura seguente per determinare il dimensionamento migliore per l'utente:

Con la soluzione di archiviazione esistente, selezionare un intervallo di tempo (giorno/settimana/trimestre) per tenere traccia delle prestazioni. L'intervallo di tempo migliore è uno snapshot ottimale delle applicazioni o dei carichi di lavoro. Nel periodo di tempo, registrare il numero massimo di operazioni di I/O al secondo e la velocità effettiva combinate per tutti i carichi di lavoro. Se si usa un intervallo superiore a un minuto o se uno dei carichi di lavoro presenta colli di bottiglia con la configurazione corrente, è consigliabile aggiungere più capacità di base alla distribuzione san elastica. È consigliabile lasciare un po' di spazio quando si determina la capacità di base, per tenere conto della crescita. Il resto dell'archiviazione san elastica deve usare capacità aggiuntiva per risparmiare sui costi.

Per altre informazioni sulle prestazioni, vedere Prestazioni san elastica e macchina virtuale.