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