
我正在尋找一些有關為 SQL Server 設定磁碟/分割區的最佳方法的建議。以下是我的一些主要擔憂:
SQL 檔案應該如何分離(資料檔案、日誌、暫存檔案)?
是對大量 HDD 進行 RAID 並劃分空間更好,還是創建多個 RAID,每個 RAID 使用更少的磁碟?
資料和日誌檔案是否應該位於不同的 RAID 類型上?
預設資料庫(master、msdb 等)應該位於 C: 上還是應該與其他資料/日誌檔案位於同一位置?
答案1
這是一篇不錯的部落格文章:http://sqlserveradvisor.blogspot.com/2009/03/sql-server-disk-configuration.html
磁碟對齊白皮書:http://msdn.microsoft.com/en-us/library/dd758814.aspx
簡而言之,您的作業系統應位於 RAID 1 上,資料檔案應位於 RAID 10(最好)上,而日誌檔案應位於 RAID 1 上。
SQL 效能文章:http://www.sql-server-performance.com/faq/raid_1_raid_5_p1.aspx
有關 10 個最佳性能技巧的 PDF 文件:http://www.stlssug.org/docs/Best_Practices_for_Performance.pdf
出於效能考慮,請記住將 TEMPDB 放在單獨的磁碟上。我相信保羅·蘭德爾很快就會來到這裡,讓你大吃一驚。
MS 解釋了 tempdb 的原因:http://msdn.microsoft.com/en-us/library/ms175527.aspx
答案2
這是一個很大的「視情況而定」的問題。
我無法回答您如何建立單獨的 RAID 陣列的問題,因為我不是儲存專家,但我可以幫助您解決其餘問題。
您需要考慮的第一件事是各種資料庫的工作負載 - OLTP(讀取/寫入)或 DSS/DW(主要讀取)。對於讀取/寫入工作負載,您應該考慮 RAID 1 或 RAID 10 (RAID 1+0),因為它們提供冗餘和出色的讀取/寫入效能。對於以讀取為主的工作負載,您可以使用 RAID 5。
交易日誌本質上是讀取/寫入(或主要是寫,取決於您是否將交易日誌用於任何用途 - 例如日誌備份或複製),因此永遠不應將其放在 RAID 5 上。
這意味著對於某些資料庫和工作負載,您可能在 RAID 5 上擁有資料文件,在 RAID 1/10 上擁有日誌文件,而對於其他資料庫,您可能在 RAID 1/10 上擁有所有內容。更進一步,如果您有一個分區資料庫,它可能包含一些主要讀取數據和一些讀/寫數據,甚至可能在同一個表中。可以將其拆分為單獨的文件組,然後將每個文件組置於適當的 RAID 等級。
實際資料庫的分離同樣取決於工作負載和底層 IO 子系統的功能 - 例如,將資料儲存在單獨的 RAID 陣列上可能需要比儲存在 SAN 上更高程度的分離。
Tempdb 本身就是一個特例,因為它通常是一個負載很重的資料庫,並且應該與其他資料庫分開儲存。系統資料庫不應該被大量使用,只要有冗餘就可以放置在任何地方。
這是我幫助編寫的白皮書的鏈接,應該對您有幫助:實體資料庫儲存設計。還要確保您的 IO 子系統可以處理預期的工作負載 - 請參閱此白皮書:部署前 I/O 最佳實踐。最後,確保使用正確的RAID 條帶大小(在較新的系統上通常為64K 或更高)、正確的NTFS 分配單元大小(通常為64K),並且在Windows Server 2008 之前的系統上正確設定磁碟分割區偏移量。有關這些的資訊、有關它們的更多資訊以及為什麼應該以這種方式配置它們的指針,請參閱此部落格文章:您的磁碟分割區偏移量、RAID 條帶大小和 NTFS 分配單元設定是否正確?。
底線:了解您的工作負載和 IO 子系統功能,然後相應地實施。
我希望這對您有幫助。
PS 就 tempdb 而言,它是關於如何配置它的一大堆蠕蟲,並且存在各種相互衝突的資訊。我在以下位置寫了一篇關於 tempdb 資料檔配置的綜合部落格文章關於 TF 1118 的誤解。
答案3
我設置的伺服器的簡短答案一直是
記錄在單獨的實體磁碟、raid 1 或 10 上(條帶化 + 鏡像)
資料庫位於自己的磁碟上,取決於效能需求,通常為 RAID5
raid 控制器上有大量緩存
最好將作業系統和 Windows 頁面檔案再次貼上到單獨的陣列上,通常只是一個鏡像 (Raid 1)。這使所有寫入操作保持分離,因此繁重的效能不會拖累一切。
我過去的經驗是,資料庫寫入+日誌寫入+頁面檔案寫入將使Raid5陣列陷入困境,效能將陷入困境。問題是,你的效能在測試、開發等方面都很好。
答案4
這裡有比我更好的 MSSQL 人員,但總的來說,我建議如下:
C: 上的作業系統和程式碼 - 這應該是本機磁碟,應該是 RAID1 陣列對 - 我們為此使用 2 個 2.5 吋 SAS 146GB 10krpm 磁碟,但您可以使用 2 個 SATA 7.2 磁碟。資料應該儲存在相當快(10krpm 或更好)的RAID 1/10、5/50/6/60 陣列上,無論您需要什麼大小- 我們將資料保存在FC SAN LUN 上,通常位於「第2 層”/10krpm 磁碟組上。日誌應位於單獨的非常快(15krpm) 小型(10GB 或更少?)RAID 1 陣列對上- 我們將日誌保存在FC SAN LUN 上,通常位於非常小的“tier1”/15krpm 磁碟組或“tier0” / SSD組。
無論哪種方式,您都希望將其中的每個區塊放在單獨的主軸/陣列上以提高效能 - 當然,它們都可以在單個磁碟上工作,但我猜您正在尋找效能和成本的平衡。
我們將 master/tempdb 與常規資料庫一起存儲,但您可以將其分解為單獨的資料陣列 LUN。
希望這可以幫助。