Linux VM 上的“拆分 I/O”,磁碟對齊
我試圖弄清楚是否有某種方法可以判斷系統是否受到磁碟未對齊的不利影響——即當我執行磁碟 I/O 操作時,它實際上需要從後端儲存請求額外的塊(我們使用的是 SAN),因為請求的數據塊實際上存在於實際磁碟上的多個塊上。
據稱這個問題對虛擬機的影響更大,因為磁碟被抽象化,因此由於扇區偏移不正確,塊不會對齊,從而導致在從虛擬機訪問後端儲存時使用額外的 IOPS。
無論如何,我一直在查看 iostat 輸出,似乎那裡有數據可以為我提供線索,但我似乎在推理方面很慢。是否有一些線索可以用 iostat(或其他東西)表明機器可能正在執行更多的最佳磁碟 I/O?
(我不相信磁碟對齊值得調查/擔心,但我希望對此事發表一些意見!)
磁碟對齊過去很難弄清楚。所有磁軌具有相同數量的相同大小的扇區。現代高密度驅動器在每個磁軌上使用可變數量的扇區,以保持碟片上大致相同的位密度。他們仍然報告柱面、磁軌和扇區的舊尺寸資訊。實際扇區幾何形狀取決於寫入磁碟的位置。
實際定址通常以 LBA(邏輯塊定址)格式完成。而且真的不關心磁碟幾何。拆分 I/O 可能由磁碟控制軟體完成。您可能會在您不期望的地方獲得拆分 I/O,而不是在您期望的地方。
將這些磁碟放在 SAN 中並共享它們,幾何圖形就會隱藏在另一層幾何圖形後面。那時,我什至不會嘗試猜測何時拆分 I/O。我會對 SAN 視圖更感興趣,它可能會以某種大小(2 的冪)對數據進行條帶化,可能介於 4Kb 和 4Mb 之間。這些邊界上的 I/O 將跨磁碟拆分。您的 SAN 管理員應該能夠告訴您 SAN 分配大小。如果分配大小很小,將分區和塊大小與 SAN 對齊可能是一個優勢。
我通常會查看
sar
輸出以查看磁碟 I/O 是否出現問題。當您遇到 I/O 問題時,您會看到平均隊列大小和服務時間增加。此時,您需要開始研究 I/O 為何會成為問題。使用 SAN,它可能會出現在許多地方。有多種解決方案。對於虛擬機,我傾向於為每台機器分離 SAN 磁碟。這些可以作為原始磁碟分配給虛擬機,而不是像 VMDK 這樣的文件格式的虛擬磁碟之一。