將彈性 SAN 的效能最佳化
本文提供在使用 Azure 彈性 SAN 的環境獲得最佳效能的一般指引。
用戶端最佳化
一般建議 (Windows 和 Linux 虛擬機器)
為了獲得最佳效能,請將 VM 和彈性 SAN 部署在相同區域和相同地區中。
VM 儲存體輸入/輸出到彈性 SAN 磁碟區會使用 VM 網路頻寬,因此 VM 上的傳統磁碟輸送量限制不適用於彈性 SAN 磁碟區。 選擇的 VM 其頻寬應足以支援實際執行/VM 對 VM 輸入/輸出,以及連結彈性 SAN 磁碟區的 iSCSI 輸入/輸出。 一般而言,您應該使用 Gen 5 (D / E / M 系列) VM 以獲得最佳效能。
在 VM 建立期間,啟用 VM 上的「加速網路」。 若要透過 Azure PowerShell 或 Azure CLI 啟用,或在現有 VM 上啟用加速網路,請參閱使用 Azure PowerShell 建立具有加速網路的 VM
- 針對每個磁碟區,您必須針對每個目標磁碟區使用 32 個工作階段,才能達到其最大 IOPS 和/或輸送量限制。 在用戶端上使用「多路徑輸入/輸出 (MPIO)」來管理每個磁碟區的多個工作階段,以進行負載平衡。 指令碼適用於 Windows、Linux,或是 Azure 入口網站中您磁碟區的 [連線到磁碟區] 頁面上,預設使用 32 個工作階段。 Windows 軟體 iSCSI 啟動器的上限為 256 個工作階段。 如果您需要將八個以上的磁碟區連線到 Windows VM,請視需要減少每個磁碟區的工作階段數目。
MPIO
Windows
使用下列命令來更新您的設定:
# 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
如需有關 MPIO Cmdlet 的詳細資訊,請參閱 MPIO 參考。
Linux
使用下列內容更新 /etc/multipath.conf 檔案:
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
在 Windows 上更新 iSCSI 啟動器的下列登錄設定。
- 開啟 [登錄編輯程式]:
- 選取 [開始],在搜尋方塊中輸入 regedit,然後按 Enter 鍵。
- 流覽至下列位置:[\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e97b-e325-11ce-bfc1-08002be10318}\0004 (Microsoft iSCSI 啟動器)\Parameters]
- 更新下列設定。 以滑鼠右鍵按一下每個設定,然後選取 [修改]。 將 [基底] 變更為 [十進位]、更新值,然後選取 [確定]。
描述 | 參數和值 |
---|---|
將啟動器在 iSCSI PDU 中傳送到目標的資料上限設定為 256 KB | MaxTransferLength=262144 |
將啟動器與目標交涉的 SCSI 承載上限設定為 256 KB | MaxBurstLength=262144 |
將啟動器可在 iSCSI PDU 中傳送到目標的未經要求資料上限設定為 256 KB | FirstBurstLength=262144 |
將啟動器在 iSCSI PDU 中可從目標接收的資料上限設為 256 KB | MaxRecvDataSegmentLength=262144 |
停用 R2T 流量控制 | InitialR2T=0 |
啟用立即資料 | ImmediateData=1 |
將 WMI 要求的逾時值設定為 30 秒 | WMIRequestTimeout = 30 seconds |
將連結停機時間的逾時值設定為 30 秒 | LinkDownTime = 30 seconds |
在叢集設定中,確認 iSCSI 啟動器名稱在所有共用磁碟區的節點都是唯一值。 在 Windows 中,您可以透過 iSCSI 啟動器應用程式更新這些名稱。
Linux
在將任何磁碟區連線到用戶端之前,請先在用戶端的使用全域 iSCSI 組態檔 (iscsid.conf,通常位於 /etc/iscsi 目錄) 上,將下列設定更新為建議值。 磁碟區連線後,將會建立節點以及該節點特定的組態檔 (以 Ubuntu 為例,您可以在 /etc/iscsi/nodes/$volume_iqn/portal_hostname,$port 目錄中找到) 繼承全域組態檔的設定。 如果您在更新全域組態檔之前已將一或多個磁碟區連線到用戶端,請直接更新每個磁碟區的節點特定組態檔,或使用下列命令:
sudo iscsiadm -m node -T $volume_iqn -p $portal_hostname:$port -o update -n $iscsi_setting_name -v $setting_value
其中
- $volume_iqn:彈性 SAN 磁碟區 IQN
- $portal_hostname:彈性 SAN 磁碟區入口網站主機名稱
- $port:3260
- $iscsi_setting_name:下列每個設定的參數
- $setting_value:下列每個設定的建議值
描述 | 參數和值 |
---|---|
# 將啟動器在 iSCSI PDU 中傳送到目標的資料上限設定為 256 KB | node.conn[0].iscsi.MaxXmitDataSegmentLength = 262144 |
# 將啟動器與目標交涉的 SCSI 承載上限設定為 256 KB | node.session.iscsi.MaxBurstLength = 262144 |
# 將啟動器可在 iSCSI PDU 中傳送到目標的未經要求資料上限設定為 256 KB | node.session.iscsi.FirstBurstLength = 262144 |
# 將啟動器在 iSCSI PDU 中可從目標接收的資料上限設為 256 KB | node.conn[0].iscsi.MaxRecvDataSegmentLength = 262144 |
# 停用 R2T 流量控制 | node.session.iscsi.InitialR2T = No |
# 啟用立即資料 | node.session.iscsi.ImmediateData = Yes |
# 設定 WMI 要求的逾時值 | node.conn[0].timeo.login_timeout = 30 node.conn[0].timeo.logout_timeout = 15 |
# 啟用標頭和資料的 CRC 摘要檢查 | node.conn[0].iscsi.HeaderDigest = CRC32C node.conn[0].iscsi.DataDigest = CRC32C |
在叢集設定中,確認 iSCSI 啟動器名稱在所有共用磁碟區的節點都是唯一值。 在 Linux 中,您可以修改 /etc/iscsi/initiatorname.iscsi 來更新啟動器名稱。
彈性 SAN 最佳化
在部署彈性 SAN 之前,您必須判斷為達到工作負載和成本的適當效能平衡,需要部署的彈性 SAN 大小。 使用下列步驟來判斷最適合您的大小:
使用現有的儲存體解決方案,選取時間間隔 (日/週/季) 以追蹤效能。 最佳時間間隔是應用程式/工作負載的良好快照集。 在該期間內,記錄所有工作負載的合併最大 IOPS 和輸送量。 如果您使用高於一分鐘的間隔,或如果您的任何工作負載在目前設定下遇到瓶頸,請考慮為您的彈性 SAN 部署新增更多基礎容量。 您應該在決定基礎容量時留下一些空餘空間,為成長做好準備。 彈性 SAN 的其餘儲存體應該使用額外的容量,藉此節省成本。
如需效能的詳細資訊,請參閱彈性 SAN 和虛擬機器效能。