Sql-Server

ISCSI SAN 上的 SQL Server 磁碟設計

  • August 15, 2011

將日誌和數據文件分開以將磁碟與作業系統分開的標準做法(tempdb、備份和交換文件也是)當您的驅動器都是基於 SAN 並且您的 LUN 不是由特定磁碟或 RAID 集雕刻時,這種邏輯是否仍然有意義- 它們只是 SAN 上 x 個驅動器的一部分,而 LUN 只是空間分配

日誌和數據驅動器具有不同的數據訪問模式,它們在共享驅動器時會相互衝突(至少在理論上)。

日誌寫入

日誌訪問由大量的小順序寫入組成。稍微簡單地說,DB 日誌是環形緩衝區,其中包含將數據項寫入磁碟上特定位置的指令列表。訪問模式由必須保證完成的大量小型順序寫入組成 - 因此它們被寫入磁碟。

理想情況下,日誌應該位於安靜的(即不與其他任何東西共享)RAID-1 或​​ RAID-10 卷上。從邏輯上講,您可以將程序視為主要 DBMS 寫入日誌條目和一個或多個日誌讀取器執行緒,這些執行緒消耗日誌並將更改寫入數據磁碟(實際上,該過程被優化以便寫入數據寫入在可能的情況下立即退出)。如果日誌磁碟上有其他流量,則這些其他訪問會移動磁頭,並且順序日誌寫入變為隨機日誌寫入。這些速度要慢得多,因此繁忙的日誌磁碟會創建一個熱點,成為整個系統的瓶頸。

數據寫入

(更新)必須將日誌寫入送出到磁碟(稱為穩定介質),才能使事務有效並有資格送出。從邏輯上講,可以將其視為正在寫入的日誌條目,然後將其用作通過非同步程序將數據頁寫入磁碟的指令。實際上,磁碟頁面寫入實際上是在創建日誌條目時準備和緩衝的,但它們不需要立即寫入以送出事務。磁碟緩衝區由 Lazy Writer 程序寫入穩定媒體(磁碟)(感謝 Paul Randal 指出這一點),這篇 Technet 文章更詳細地討論了這一點。

這是一種高度隨機的訪問模式,因此與日誌共享相同的物理磁碟可能會對系統性能造成人為的瓶頸。必須寫入日誌條目才能送出事務,因此隨機搜尋會減慢此過程(隨機 I/O比順序日誌 I/O 慢得多)會將日誌從順序變為隨機訪問設備。這會在繁忙的系統上造成嚴重的性能瓶頸,應該避免。與日誌卷共享臨時區域時也是如此。

記憶體的作用

SAN 控制器往往具有較大的 RAM 記憶體,可以在一定程度上吸收隨機訪問流量。但是,為了事務完整性,最好保證從 DBMS 完成磁碟寫入。當控制器設置為使用回寫記憶體時,臟塊被記憶體並且 I/O 呼叫向主機報告為完成。

這可以解決很多爭用問題,因為記憶體可以吸收大量 I/O,否則這些 I/O 會傳輸到物理磁碟。它還可以優化 RAID-5 的奇偶校驗讀取和寫入,從而減少 RAID-5 卷對性能的影響。

這些是推動“讓 SAN 處理它”思想流派的特徵,儘管這種觀點有一些局限性:

  • 回寫式記憶體仍然存在可能失去數據的故障模式,並且控制器已向 DBMS 發送錯誤消息,稱塊已被寫入磁碟,而實際上並未寫入。出於這個原因,您可能不想為事務應用程序使用回寫記憶體,特別是保存關鍵任務或財務數據的應用程序,其中數據完整性問題可能對業務產生嚴重後果。
  • SQL Server(特別是)在一種模式下使用 I/O,其中一個標誌(稱為 FUA 或強制更新訪問)在呼叫返回之前強制對磁碟進行物理寫入。Microsoft 有一個認證計劃,許多 SAN 供應商生產的硬體都符合這些語義(此處總結的要求)。在這種情況下,再多的記憶體都不會優化磁碟寫入,這意味著如果日誌流量位於繁忙的共享卷上,它就會顛簸。
  • 如果應用程序產生大量磁碟流量,其工作集可能會超出記憶體,這也會導致寫入爭用問題。
  • 如果 SAN 與其他應用程序共享(特別是在同一磁碟捲上),來自其他應用程序的流量可能會產生日誌瓶頸。
  • 一些應用程序(例如數據倉庫)會產生大的瞬時負載峰值,這使得它們在 SAN 上非常反社會。

即使在大型 SAN 上,單獨的日誌卷仍然是推薦的做法。您可能無需擔心輕量級應用程序的佈局。在非常大的應用程序中,您甚至可以從多個 SAN 控制器中受益。Oracle 發布了一系列數據倉庫佈局案例研究,其中一些較大的配置涉及多個控制器。

將績效責任放在應有的地方

在大容量或性能可能成為問題的情況下,讓 SAN 團隊對應用程序的性能負責。如果他們將忽略您的配置建議,請確保管理層意識到這一點,並且系統性能的責任在於適當的位置。特別是,為關鍵數據庫性能統計資訊(如 I/O 等待或頁面鎖存等待)或可接受的應用程序 I/O SLA 建立可接受的準則。

請注意,將績效責任分配給多個團隊會鼓勵相互指責並將責任推卸給其他團隊。這是一種已知的管理反模式,也是一種解決問題的公式,這些問題拖延了數月或數年而從未得到解決。理想情況下,應該有一個架構師有權指定應用程序、數據庫和 SAN 配置更改。

此外,在負載下對系統進行基準測試。如果可以安排,二手伺服器和直連陣列可以在 Ebay 上以相當便宜的價格購買。如果你用一個或兩個磁碟陣列設置一個這樣的盒子,你可以使用物理磁碟配置來衡量對性能的影響。

例如,我對執行在大型 SAN(IBM Shark)上的應用程序和帶有直接連接 U320 陣列的雙插槽盒進行了比較。在這種情況下,在 CPU 和記憶體配置大致相同的主機上,從 ebay 購買的價值 3,000 英鎊的硬體比 100 萬英鎊的高端 SAN 性能高出兩倍。

從這個特定的事件來看,有人可能會說,有這樣的東西是讓 SAN 管理員保持誠實的好方法。

引用自:https://serverfault.com/questions/767