隨著云計(jì)算在全球范圍內(nèi)的高速發(fā)展,特別是“互聯(lián)網(wǎng)+”在行業(yè)應(yīng)用的深入融合,行業(yè)及企業(yè)用戶迫切需要高性能、資源彈性、橫向可擴(kuò)展能力的存儲(chǔ)系統(tǒng)。那么雙控存儲(chǔ)是什么,存儲(chǔ)雙控磁盤陣列具有怎樣的好處和特點(diǎn)呢?
在多數(shù)存儲(chǔ)系統(tǒng)中,為了提高可靠性,防止數(shù)據(jù)在輸入過程中存儲(chǔ)控制器發(fā)生故障而導(dǎo)致數(shù)據(jù)丟失,可利用雙控制器來實(shí)現(xiàn),即通過兩個(gè)控制器間數(shù)據(jù)的冗余交互來完成相應(yīng)的存儲(chǔ)服務(wù),一旦其中一個(gè)控制器出現(xiàn)故障或離線,另一個(gè)控制器將及時(shí)接管故障控制器的工作。提供給用戶高級(jí)別的數(shù)據(jù)可靠性以及業(yè)務(wù)連續(xù)性的同時(shí),提高存儲(chǔ)系統(tǒng)的資源利用率。
一般雙控存儲(chǔ)系統(tǒng),包括主控制器和備用控制器,以及兩個(gè)控制器共用的后端磁盤陣列;主控制器的第一緩存和備用控制器的第二緩存互為備份;
雙控制器方案目前廣泛用于中低端存儲(chǔ)系統(tǒng)中,采用PCIe交換芯片(PCIe Switch)+SAS控制器芯片(SAS Controller)+SAS擴(kuò)展芯片(SAS Expander)的方案,每個(gè)主控板都配有1片PCIe Switch、1片SAS Controller和1片SAS Expander芯片,將SAS Expander擴(kuò)展出來的SAS信號(hào)引到背板各個(gè)SAS連接器上來接SAS硬盤(HDD),每個(gè)SAS硬盤上需接入2對(duì)SAS信號(hào)分別對(duì)應(yīng)2個(gè)主控板上的Expander芯片;主控板1和主控板2之間通過PCIe Switch NT實(shí)現(xiàn)數(shù)據(jù)交互和空間隔離。
雙控陣列不僅要做到兩個(gè)控制器完全相同,而且陣列中的電源、風(fēng)扇及心跳信號(hào)等硬件資源也要做到冗余,這樣才能保證發(fā)生故障時(shí),存儲(chǔ)業(yè)務(wù)還能順利完成。
雙控陣列可以分為主備和雙活兩種工作模式。在主備模式下,兩個(gè)控制器被分為主控制器和備份控制器。客戶端通過主控制器來訪問陣列,備份控制器通過心跳信號(hào)實(shí)時(shí)檢測(cè)主控制器的狀態(tài)。當(dāng)主控制器發(fā)生故障時(shí),備份控制器會(huì)主動(dòng)接管主控制器的業(yè)務(wù),并將備份的數(shù)據(jù)同步至SSD硬盤中。
在雙活模式下,客戶端可通過任何一個(gè)控制器來訪問陣列。兩個(gè)控制器要分別備份對(duì)方的緩存,并同時(shí)相互監(jiān)控對(duì)方狀態(tài)。當(dāng)其中某個(gè)控制器發(fā)生故障時(shí),另一個(gè)就會(huì)重新接管數(shù)據(jù)業(yè)務(wù),并將緩存數(shù)據(jù)實(shí)時(shí)寫入SSD硬盤中。
高可用存儲(chǔ)陣列使用外部萬兆以太網(wǎng)接口作為高速數(shù)據(jù)同步鏈路,并采用TCP/IP協(xié)議來保證數(shù)據(jù)的可靠傳輸。
心跳模塊在固定的時(shí)間會(huì)發(fā)送心跳包給對(duì)方,如果沒有收到心跳包,就認(rèn)為對(duì)方控制器發(fā)生了故障。本文研究的雙控高可用陣列中的心跳模塊采用了多種不同的冗余低速鏈路,用來確保心跳信號(hào)正常接收。
每塊主控板上都需要配有1片PCIe Switch、1片SAS Controller和1片SAS Expander芯片,增加了成本;
每塊主控板上都需要配有1片PCIe Switch、1片SAS Controller和1片SAS Expander芯片,增加了硬件設(shè)計(jì)和PCB布局布線的復(fù)雜度;
如果背板上接SATA硬盤,需要在背板上增加SAS轉(zhuǎn)SATA轉(zhuǎn)接卡,增加了成本和加工裝配成本。
雙控冗余有三種方式:HA、互備(非對(duì)稱雙活)、雙活(全對(duì)稱雙活)。HA模式是指平時(shí)只有一個(gè)控制器處理IO,另一個(gè)控制器完全不干活,開著機(jī)在那待著轉(zhuǎn)等干活的控制器掛掉,它接管過來,傳統(tǒng)存儲(chǔ)產(chǎn)品中目前沒有人使用HA方式因?yàn)椴粍澦?。目前多?shù)產(chǎn)品為互備模式,或者叫非對(duì)稱雙活,是指每個(gè)Lun都有自己的Owner控制器,比如A控處理Lun1的IO,B控處理Lun2的IO,如果A控收到發(fā)向Lun2的IO,則通過控制器間交換網(wǎng)絡(luò)轉(zhuǎn)發(fā)給B控處理而不能自己私自處理,雙控各干各的互不干擾,不會(huì)產(chǎn)生沖突,“非對(duì)稱”意思就是“各干各的”,你壞了我接管,我懷了你接管,但是兩個(gè)控制器都在干活,所以“雙活”。而對(duì)稱雙活,則是指兩個(gè)控制器角色完全對(duì)等,不再分Lun的Ownership,任何控制器都可以處理任何Lun的IO,這給系統(tǒng)設(shè)計(jì)帶來了復(fù)雜性,首先要求雙控要配合起來,針對(duì)已經(jīng)應(yīng)答的目標(biāo)地址有重疊的寫IO,要保證時(shí)序一致性,雙控必須做好溝通,以保證正確的IO;另外,同時(shí)還要解決數(shù)據(jù)防撕裂問題,有時(shí)候陣列內(nèi)部會(huì)自行讀或者寫某些目標(biāo)地址數(shù)據(jù)塊,此時(shí)雙控要用鎖來保證每次讀寫的防撕裂,對(duì)某個(gè)塊的操作可能會(huì)被分為多次子IO,這些子IO是一個(gè)一致性組或者說組成一次原子操作,中途不能被交織入其他IO,否則就會(huì)撕裂導(dǎo)致不一致。正因如此,對(duì)稱式雙活增加了開發(fā)難度。但是對(duì)稱式雙活能夠以IO粒度來平衡系統(tǒng)的負(fù)載,不會(huì)出現(xiàn)Lun1太忙而Lun2很閑從而導(dǎo)致A控負(fù)載遠(yuǎn)高于B控而又無計(jì)可施的尷尬。
存儲(chǔ)系統(tǒng)提供了雙控冗余,主機(jī)端如何利用起雙控,要依靠多路徑軟件。通常主機(jī)會(huì)與A控和B控至少各保持一條連接,分別從兩個(gè)控制器上發(fā)現(xiàn)到兩份同一個(gè)物理Lun的兩份副本,系統(tǒng)中會(huì)生成兩個(gè)盤符,而多路徑軟件的功能則是負(fù)責(zé)鏈路故障后的路徑切換、鏈路正常時(shí)的IO負(fù)載均衡以及冗余盤符的消除。針對(duì)非對(duì)稱雙活,因?yàn)橛蠰un的Ownership存在,發(fā)向?qū)?yīng)Lun的IO要確保走最優(yōu)路徑,也就是不要發(fā)送給該Lun的非屬主控制器,否則將引發(fā)內(nèi)部轉(zhuǎn)發(fā),增加時(shí)延,除非在鏈路帶寬達(dá)到瓶頸而控制器處理能力未達(dá)到瓶頸的時(shí)候可以利用這條非最優(yōu)路徑。探測(cè)某個(gè)Lun的最優(yōu)路徑以及其他一些陣列端的運(yùn)行信息,需要多路徑軟件與陣列之間做一些信息交互,這些信息可以走帶外通道比如以太網(wǎng),也可以走帶內(nèi)通道也就是數(shù)據(jù)鏈路比如FC/SAS/iSCSI,通常使用后者,而SCSI指令體系內(nèi)沒有針對(duì)多路徑軟件與陣列之間的交互協(xié)議做什么規(guī)定,所以各個(gè)廠商都有自己不同的實(shí)現(xiàn)模式,比如通過一些特殊指令序列,或者封裝到某些特殊指令內(nèi)部。正是由于各廠家的交互協(xié)議不統(tǒng)一,所以SCSI體系最新的規(guī)范里定義了ALUA(Asymmetric Logical Unit Access)協(xié)議,期望各廠商按照ALUA協(xié)議規(guī)范來實(shí)現(xiàn)多路徑軟件和陣列之間的交互。而對(duì)稱式多活由于沒有Lun屬主的概念,多路徑軟件無需與陣列交互復(fù)雜的控制數(shù)據(jù),最多是控制陣列控制器的切換,所以這塊SCSI沒有定義規(guī)范,但是人們俗稱對(duì)稱式多活為“SLUA”以與ALUA區(qū)分,S標(biāo)示Symmetric。
各種OS早期是不提供多路徑管理的,后來陸續(xù)都被加入了原生的多路徑軟件,比如Linux下的MPIO,AIX下的MPIO,Windows下的MPIO等等,這些OS自帶的多路徑軟件只提供簡(jiǎn)單的功能,比如盤符消除,通過識(shí)別磁盤的wwn來發(fā)現(xiàn)哪些盤符指向的是同一個(gè)物理Lun,從而消掉一個(gè)盤符。但是無法提供陣列相關(guān)的個(gè)性化功能,陣列廠商如果需要滿足這些高級(jí)功能的話就必須提供自己的多路徑軟件,將其作為一個(gè)插件的形式,掛接到MPIO框架之下從而實(shí)現(xiàn)高級(jí)功能。有些多路徑軟件會(huì)保留原生的盤符,而創(chuàng)建一個(gè)新盤符,比如將/dev/hdisk1和/dev/hdisk2這兩個(gè)冗余盤符生成一個(gè)/dev/vpath1盤符,系統(tǒng)中會(huì)同時(shí)存在這三個(gè)盤符,針對(duì)/dev/vpath1的訪問會(huì)享受到多路徑軟件帶來的路徑自動(dòng)切換,io負(fù)載均衡等功能,而直接訪問/dev/hdisk1或者/dev/hdisk2也是可以的,就無法享受多路徑帶來的利益了,一旦/dev/hdisk1這條路徑down掉,這個(gè)盤符便會(huì)消失,應(yīng)用比那會(huì)停掉。有些多路徑軟件運(yùn)行在更底層,會(huì)直接生成一個(gè)/dev/hdisk1盤符,而這個(gè)盤符底層已經(jīng)對(duì)應(yīng)了多條路徑,這樣可以避免盤符層次過多引起的管理混亂。
至于多控存儲(chǔ)系統(tǒng),一般指分布式多控,也就是多控之間并不是共享訪問所有后端JBOD的,富士通的高端存儲(chǔ)除外,其后端采用SAS Expander將所有HDD呈現(xiàn)在一個(gè)大的SAS域中,富士通是真多控對(duì)稱式多活。多數(shù)實(shí)現(xiàn)都是雙控共享一堆JBOD,然后多組雙控再結(jié)合成分布式存儲(chǔ),也就是所謂的”Server SAN,某廠商最近發(fā)布的系統(tǒng)其實(shí)是4控共享訪問后端JBOD,當(dāng)然,JBOD里只有兩片Expander,接不了4控,所以4控和JBOD之間還需要增加兩片SAS Expander作為路徑擴(kuò)充使用。由于并非共享式集群而是分布式集群,所以其原本就是非對(duì)稱式多活了,各個(gè)節(jié)點(diǎn)或者節(jié)點(diǎn)組各管各的磁盤,但是每個(gè)控制器節(jié)點(diǎn)都可以接受IO,只不過遇到不是給自己管轄磁盤范圍的IO則需要轉(zhuǎn)發(fā)處理。有些廠商為了維持自己傳統(tǒng)高端的共享內(nèi)存架構(gòu)的形象,在分布式集群內(nèi),實(shí)現(xiàn)了全局共享緩存,當(dāng)然這個(gè)共享緩存并非傳統(tǒng)高端那種真內(nèi)存地址空間共享了。而有些則是赤裸裸的分布式架構(gòu),逼格直逼ServerSAN。
? ? ? ? ? ? ? ?Copyright 2020-2026 同袍存儲(chǔ) 粵ICP備2021121885號(hào)網(wǎng)站地圖