在 VmWare/Linux 中創建“奇數”大小的磁碟
我相信我患有“一切都必須是 2 的冪”綜合症。當被要求在 VmWare 中為 VM 創建一個 30G 磁碟時,我想創建一個 32G 磁碟。如果有人需要使用 LVM 的 256G 儲存,我會創建 1 256、2 128 或 4 64…
問題很簡單,創建“奇數”大小的磁碟是否有性能影響或缺點,即使我將它們放入 Linux 上的捲組?如果有人要求 80G,是否可以創建 10、20 和 50 來完成它?或者如果可以的話,我應該嘗試堅持 2 的冪嗎?
我寧願建議你留意一個分區是否是所謂的 I/O 對齊的,因為這可能真的會影響 I/O 性能。如今,安裝程序或配置嚮導通常會在某個
"power of 2"
邊界上自動對齊分區,但當您手動創建它時,了解它的工作原理可能仍然有用。我將嘗試通過從虛擬環境中藉用的簡單範例來解釋這個概念。為簡單起見,我們假設 VMware vSphere 基礎架構和 VMFS 文件系統。我們必須總共考慮三層——一個磁碟陣列,它有一定大小的塊用於請求數據,VMFS 文件系統有一定大小的塊,最後是一個以塊/集群組織的來賓作業系統文件系統。
通常,您不必花時間將 VMFS 文件系統與磁碟陣列對齊,因為它會在您使用 vCenter 創建新的 VMFS 數據儲存時自動執行。客戶作業系統的情況更糟。下面是未對齊圖層的圖片:
當客戶作業系統讀取/寫入單個塊/集群時,底層虛擬機/磁碟陣列將不得不從 VMFS 文件系統請求一個塊和兩個磁碟陣列塊,因為該塊跨越多個塊。這可能意味著從多個磁碟軸讀取或寫入,因為這些塊可能會根據 RAID 配置在多個磁碟上進行條帶化。這當然不是最佳配置。更好的是對齊的:
然後,一個文件系統塊請求生成一個磁碟陣列塊請求。然而,大多數現代作業系統都記得在安裝過程中自動對齊 I/O 分區。例如,Windows Server 2008 或 RedHat Enterprise Linux 6 會這樣做,但 Windows Server 2003 或更早的發行版不會。
所以仍然值得記住它,因為自動 I/O 對齊通常取決於儲存設備的特性來指示它們的首選 I/O 對齊和 I/O 塊大小。現代 Linux I/O 堆棧(例如 RHEL 6、parted、LVM、mkfs)可以使用這些資訊並自動執行它。但如果它沒有按預期工作,你應該手動完成。