Sql-Server

單個文件組上有多個分區?¿ 這有意義嗎?

  • February 11, 2011

我正在設計一個數據倉庫解決方案,我是磁碟配置問題的新手,讓我解釋一下。

我們的儲存分佈在 6 個儲存外殼上,每個儲存外殼有 5 個 raid-1 磁碟陣列,每個磁碟陣列定義了 2 個 LUN,總共有 48 個 LUN(這是遵循 Microsoft 對數據倉庫架構的快速跟踪建議)。

我想對我的數據進行分區,在我之前工作過的其他項目中,我們總是遵循 1 個分區 - 1 個文件組的規則。在 microsoft fast track 建議中,建議創建一個文件組,然後為該文件組創建一個每個 lun 的數據文件……但我假裝有一個星期級別的分區……如果我應用該規則,我認為我會獲得太多文件和復雜的佈局。

我正在考慮只創建一個文件組(具有 48 個 lun 數據文件),但仍然創建分區,因為我想保留分區切換等分區的好處……不推薦這種情況嗎?你有什麼建議?

回答這個問題需要深入了解 Storage Geek。我提前道歉。

微軟似乎建議 48 個獨立分區的原因有一個:最大化 I/O 的作業系統內並行化。通過擁有 48 個 LUN,作業系統必須保留 48 個獨立的 I/O 隊列,這些隊列理論上可以並行服務。如果一個 LUN 速度特別慢(它正在執行大量隨機寫入),它不會阻止對其他 LUN 的訪問。

在現代硬體上,對於很多儲存問題來說,這只是一小部分的收益。除非你知道你將把你的數據倉庫壓到絕對上限,否則這是不值得的。現代 RAID 卡速度足夠快,可以為您處理這些問題。擁有 4 個 LUN 可以帶來收益。48 可能真的很痛。

如今,儲存通常以每秒 I/O 操作 (I/O Ops) 的性能指標為特徵。每個驅動器都有自己的隨機 I/O 上限(每個驅動器的範圍在 90-180 之間,具體取決於 RPM 和其他一些因素)。當您將驅動器組合在一起時,例如在 RAID10 集中,此 I/O Ops 計數是累加的。一個 12 磁碟 RAID10 集將具有與 6 個 Raid1 對相同的 I/O Ops 容量,並且不會強制您創建六個單獨的 DB 文件。通過創建單個大型 RAID10 集,您可以創建可以處理​​大量負載的單個大型 DB 文件。

回到我在第二段中所說的關於慢速 LUN 不會阻止對其他 LUN 的訪問,這就是為什麼最大化 LUN 的 I/O Ops 是有意義的。如果它有足夠的 I/O Op 成本,它根本不可能阻塞。通過創建一個大型 RAID10 陣列,並行化被推送到 RAID 卡上,而不是作業系統上,這讓作業系統可以自由地做其他事情。您仍將獲得併行化優勢,並為此利用專用硬體。

對於數據庫伺服器,明智的做法是將數據文件和日誌文件 I/O 保存在不同的主軸上。我將留給 SQL Server 專家(我不是)的確切百分比,並且可能基於您的確切配置和使用模式。由於它是一個數據倉庫,因此您需要大量的日誌空間來處理大量負載。日誌 I/O 是顯著的順序,其中數據 I/O 是顯著隨機的,因此最好通過將日誌放在與數據文件不同的軸上來找到最大的日誌記錄性能。

在您的情況下,您可能能夠擺脫 2 個 LUN。一個大的 RAID10 集用於您的數據文件,一個較小的 RAID10 集用於您的日誌文件。

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