本節(jié)講授關(guān)于 SQL Server 存儲方面的內(nèi)容,相對其他小節(jié)而言這節(jié)比較短。本節(jié)會提供一些關(guān)于使用群集或非群集系統(tǒng)進(jìn)程中對存儲的利用建議。固然,重點還是集中在對一個標(biāo)準(zhǔn)的 AlwaysOn 可用組配置進(jìn)程中,對存儲的選擇和配置上面。
AlwaysOn 的部署首先建立在一個 Windows Server Failover Cluster(WSFC)上。并且每一個服務(wù)器通常有一個獨(dú)立的 SQL Server實例。另外,每一個服務(wù)器使用其本地存儲來寄存獨(dú)立的 SQL Server 實例的數(shù)據(jù)庫文件(數(shù)據(jù)文件、日志文件、備份文件等)。雖然所有火伴節(jié)點都屬于同一個群集,但是不需要基于硬盤見證或故障轉(zhuǎn)移實例,也沒有同享存儲的要求。從而避免了 FCI 中的同享存儲單點故障風(fēng)險。但是 AlwaysOn 可用組可使用 FCI 作為可用副本。這個不但又重新引入單點故障的風(fēng)險,也增加了群集對節(jié)點的復(fù)雜度。
言歸正傳,現(xiàn)在來看一下存儲系統(tǒng)的核心內(nèi)容:
本地存儲(Localized)
網(wǎng)絡(luò)存儲(Networked)
下面來詳細(xì)介紹一下:
本地附加存儲(Locally Attached Storage):
這類模式下,本地存儲是直接連到服務(wù)器上,硬盤直接插入硬件背板(backplane),然后連到服務(wù)器的主板上。較老的配置可能會包括將通過 68/80 針電纜連接到PCI總線的擴(kuò)大 RAID 控制器上。
下圖是一個典型的本地存儲示意圖。這是相對來講路徑斷和復(fù)雜度低的,可提供快速硬盤訪問的方式。背板有一個輸入輸出 BIOS,可以用于控制橫跨本地硬盤的 RAID 陣列的硬盤冗余功能,但是由于硬件服務(wù)器的限制,通常最大只有 16 個硬盤可用。
這是典型的沒有網(wǎng)絡(luò)存儲的節(jié)點中的單獨(dú)存儲示意圖,在 WSFC 中,沒有獨(dú)立的存儲同享給其他節(jié)點。這也使得查分節(jié)點的物理位置進(jìn)程中,不需要對存儲進(jìn)行復(fù)制。
網(wǎng)絡(luò)存儲(Network Storage):
網(wǎng)絡(luò)存儲可以作為資源提供給多個計算機(jī)系統(tǒng)。有一個中央存儲庫通過下降很狂每一個服務(wù)器的多個陣列的接觸點從而更加簡單地管理這些硬盤。以下圖所示,通常系統(tǒng)中有很多服務(wù)器通過光纖(Fibre Channel,FC)網(wǎng)絡(luò)互聯(lián),通常也稱為“Fabric”。計算機(jī)通過一個Host Bus Adapter(HBA卡,主機(jī)總線適配器是網(wǎng)絡(luò)與交換,是能插入計算機(jī)或大型主機(jī)的板卡),實際上 HBA 卡類似于一個網(wǎng)卡。
各個服務(wù)器也能夠通過 iSCSI 網(wǎng)絡(luò)進(jìn)行互聯(lián),這個網(wǎng)絡(luò)相對較新但帶寬受限(1Gbps)。它運(yùn)行在標(biāo)準(zhǔn)的、隔離的 TCP\IP 網(wǎng)絡(luò)。服務(wù)器通常使用專用網(wǎng)卡,只用于 iSCSI 和 TCP 通訊從而下降負(fù)載,意味著iSCSI的流量控制被分?jǐn)偝鰜怼,F(xiàn)代 iSCSI 已可以處理上限為10Gbps 的帶寬數(shù)據(jù)。對 iSCSI 配置的好處之一是它幣傳統(tǒng)的FC網(wǎng)絡(luò)更加經(jīng)濟(jì)。但是,也不總是這樣。
當(dāng)有很多服務(wù)器發(fā)送要求給存儲進(jìn)程并從中接收結(jié)果時,可以快速發(fā)現(xiàn)在 FC 網(wǎng)絡(luò)中產(chǎn)生了多少流量。正如 TCP\IP 網(wǎng)絡(luò)那樣,你會發(fā)現(xiàn) FC 網(wǎng)絡(luò)會被堵滿。然后存儲區(qū)域的網(wǎng)絡(luò)會因此產(chǎn)生性能問題。在復(fù)雜的 SAN 配置中,會有多個交換機(jī)連接大量的網(wǎng)線和額外電源需求。如上圖,可以看到這類情況下數(shù)據(jù)活動路徑和復(fù)雜度都明顯變大。
在這么長的路徑和復(fù)雜路由中提出 I/O 要求,會消耗很多事件和其他開消。關(guān)于整合的存儲,這類系統(tǒng)能提供甚么呢?這類存儲可以更容易地調(diào)配和交付資源給大范圍的數(shù)據(jù)。然后就像虛擬化,不是每一個實體都可以用。
這類模式的存儲也經(jīng)常使用于 SQL Server 的 FCI 中,LUNs 從磁盤陣列中劃出來,而且數(shù)量巨大。這里的缺點是陣列可能被以 128KB的塊大小格式化。這個大小對 SQL Server 來講并不是最優(yōu)化。其優(yōu)點是,當(dāng)被公道配置后,存儲要求幾近可以不到末端陣列。由于要求可以直接產(chǎn)生在高速內(nèi)存緩沖區(qū),然后緩存的數(shù)據(jù)在適合的時間點被刷到硬盤從而下降對性能的影響。在停電時,后備電源也會把緩存中的數(shù)據(jù)刷新到硬盤以避免數(shù)據(jù)丟失。
另外還有一種網(wǎng)絡(luò)存儲可用于在高可用節(jié)點中同享存儲又避免多個主機(jī)連接的開消。這類存儲類型稱為 Direct Attached Storage(DAS,直接附加存儲),這類系統(tǒng)專門為可使用基于私有光纖連接、基本上可以歸到本地化的利用而設(shè)計。下面是一個典型的私有高可用存儲配置示意圖:
這個場景下,如果想創(chuàng)建私有高可用群集,會略微比本地存儲更好。一些存儲供應(yīng)商提供通過光纖連接的裝備,并可以有最多兩個主機(jī)連接到高可用方案的多個路徑中。多個陣列存儲模塊可以順便增加可用存儲量。
這類存儲也能夠用于 SQL Server FCI 中。這類方式合適在特定環(huán)境下的小型或簡單群集中少數(shù)幾個節(jié)點同享存儲之用。你可能已注意到上圖中 LUNs 的方式是一個方框,這是由于不是所有的 Windows 系統(tǒng)的邏輯硬盤底層都有獨(dú)立的物理陣列。上圖的情形也是最多見的配置中,磁盤被設(shè)置為一個較大的陣列。
想象一個大蛋糕?;蛟谶@類情況下,從物理硬盤池中創(chuàng)建的陣列。切下一塊蛋糕或從陣列中劃出一個 LUN 用于給 Windows 作為邏輯硬盤之用。