
很久之前,我記得那大概是在2005年,聽說過國外一家初創公司做了一種以太網口的硬盤,當然硬盤本身不是他們做的,他們只是在硬盤上加上一個轉接板,專業說法叫做Dongle,實現基于以太網的SCSI協議傳輸,至于協議是否使用的就是iSCSI無從而知,對其具體細節也很不了解。當時存儲技術在國內還沒有怎么得到普及,所以感覺這種東西非常新鮮,竟然可以這么玩!當然,這東西最后終究沒成氣候,逐漸淡出了業界。那時候,ATAoE,SCSIoE這種類似協議也一直有人在做,其目的就是拋棄TCPIP這種厚重的傳輸協議而轉為一種輕量級的適配到以太網的協議。但是目前來看,這類協議最終也沒得到推廣。
固態存儲——崛起!
8年過去了,這8年里發生了很多事情。
首先,企業級存儲系統在國內得到了鋪天蓋地的應用,從一開始曲高和寡到現在的遍地開花,各廠商的企業級存儲系統產品在這期間至少經歷了4次升級換代,高端產品則經歷了兩次。
其次,在業務層面,主機虛擬化的崛起,以及基于虛擬化之上的云計算架構的崛起,以及互聯網后端架構的變遷,海量存儲和大數據分析挖掘系統的廣泛應用,這三大變革性事件對很多存儲技術、產品、廠商及生態產生了重大影響。
再次,底層技術的革新,固態存儲技術崛起,2012年應該算是一個固態元年。業務和底層技術的變革,驅動著企業級存儲做出一輪又一輪的變化,一開始是內部架構的變化,比如Scale-Up到Scale-Out,然后就是訪問協議的變化,除了塊和文件,對象接口越來越被廣泛使用,再就是數據管理上的變化,企業級存儲其實對固態存儲介質可謂是愛恨交織,明知道這小東西一定會顛覆自己苦心建立的基于機械盤的生態系統,但又不能迎合潮流,出現了各種數據分層分級方案和技術,以及所謂全固態存儲系統。
如果說在這8年里的前4年,企業級存儲算是慢慢悠悠地自我欣賞地發展,那么后4年基本是在小步快跑了。一下子爆發的眾多變化,都發生在后4年里,企業級存儲顯得應接不暇、不知所措。云計算、大數據、固態存儲、開源、軟件定義,各方圍剿,使得商用企業存儲好像找不到出路,各個廠商絞盡腦汁規劃下一代產品到底應該是個什么樣子,以及整體戰略需要怎么調整。
就在兩年前,國內某存儲廠商為應對海量低成本存儲場景,設計了一套與2005年時候國外那個廠商類似的方案,也就是在每塊磁盤驅動器上前置一個Dongle,其基于ARM處理器,這個Dongle相當于一個Mini Storage Controller,功能方面,其在硬件層后端通過集成的SAS/SATA控制器訪問并管理這塊盤,前端則通過以太網口來傳輸封裝之后的訪問協議比如Object對象訪問協議,核心軟件層是一個精簡的Linux內核,包含SAS/SATA Host驅動、以太網設備驅動、塊設備驅動、卷管理層、對象/文件管理層、對象訪問協議、TCPIP協議層以及管理監控Agent等。也就是說,將一塊傳統的以Block形式訪問的磁盤通過加一個轉接板,變為了一塊以對象Object形式訪問的磁盤,如果向其軟件層加入更多協議,那么還可以變為iSCSI Target,NFS/CIFS Export,當然一切實際上都受限于ARM的性能。每塊對象盤連接到以太網上,再通過一個或者多個冗余/AA的總控服務器來管理這些磁盤,并通過這個總控服務器集群向外提供空間和服務。
IP硬盤——玩玩?
也就在最近幾天,希捷與這家存儲廠商聯合推出了被命名為Kinetic的硬盤,宣稱其直接提供對象訪問接口,并向應用提供API以調用進行數據訪問和監控管理。這個產品相當于把之前的轉接板去掉,把核心軟件直接跑在硬盤背面的控制芯片里。處理芯片的一般架構是一個或者多個ARM/MIPS core與一堆外圍電路比如XOR、ECC/CRC、加密、壓縮、PHY等組成,而ARM/MIPS Core平時不參與數據的傳輸,只是控制數據的傳輸,否則會由于為數過多的內存拷貝而性能根本達不到要求,所以一般來講一款處理芯片中的通用CPU模塊,絕大多數時間負載并不高,這也就為在處理芯片中集成更多的軟件功能提供了技術空間。
但是別指望這種低功耗CPU能勝任事務級在線處理,跑跑一般的數據收發、簡單的協議處理還是可以的;也別指望其能勝任高IOPS的場景,每一個IO處理耗費的CPU資源是不容小覷的,包括中斷、協議處理、內存拷貝等在內的流程對CPU周期耗費很大。但是低負載、以帶寬吞吐量大塊連續IO為主的場景下,這類處理器能夠很好地勝任,尤其是在只帶一塊磁盤的情況下,那就更是小菜一碟了。所以這種產品的基因決定了它的應用場景,也就是比如冷數據存儲場景,或者備份等海量低成本存儲場景。
綜上,我們暫且簡稱這種硬盤為“IP硬盤”或者“對象硬盤”。其與傳統的存儲架構本質區別在于,傳統存儲控制器屬于集中式控制器,用一臺或者多臺集中式的高性能控制器,通過SAS/SATA適配器接入為數有限的磁盤,最小的比如Raid卡,比如Adaptec by PMC最新的產品可直連24盤或者通過擴展柜連接256盤,最大的比如高端商用企業存儲,可以管理多達3000多塊盤,前端終結了SAS協議,轉為使用FC或者iSCSI、NAS或者對象等協議,通過集中的單一的訪問點來訪問所有磁盤經過虛擬之后的空間。而Kinetic的架構則屬于分布式微型控制器,有多少磁盤就有多少個訪問點。
說到這里我們就要仔細地去分析一下,這種新架構帶來的優點和挑戰在哪里。毋庸置疑,其優點是支持大規模并行訪問,因為訪問點是分布式的,有多少磁盤就有多少訪問點,那么應用或者客戶端程序可以直接并行地訪問所有連接到以太網上的磁盤,體系效率較高。當然,其代價就是訪問節點的管理上,需要被軟件定義。對于集中式的磁盤控制器,對磁盤的管理,比如監控、容錯、性能優化、空間管理等,都有集中控制負責,上層不需要關心,而新架構下,直接暴露了底層的磁盤,那么這些邏輯就需要被挪到上層軟件層中去執行,也就是所謂軟件定義,那就需要用戶具有一定的技術開發能力去駕馭這個新架構,或者由廠商做這一層的開發,但是相對于在外部設備里開發這一層來講,在用戶的OS里做這個管理層,其主要難度在于兼容性,用戶的OS千變萬化、環境千變萬化,兼容性很難保證。所以這類產品應用到互聯網后端的可能性較大,一般企業會吃不消對其日常維護的開銷。
那么再看一下互聯網企業,假設,如果依然利用現有架構,比如1U通用服務器,加一個SAS/SATA Raid/HBA適配器,接入12/16/24盤,然后在服務器上進行空間管理、協議轉換,底層Raid控制器實現數據的小范圍冗余容錯及性能優化,在所有服務器上運行分布式文件系統來執行數據的大范圍容錯和均衡,這樣做的好處是對上層來講復雜度降低。同樣是1U服務器,如果訪問Kinetic架構,SAS/SATA Raid/HBA不需要了,直接通過以太網,那么原本由SAS Raid卡做的工作,就需要被挪到軟件里去做,需要用戶自己或者廠商開發一層邏輯,而且這層邏輯要么是分布式部署的,要么是非對稱集中式部署在一個帶外控制管理節點上的,這種做法基本上就是將磁盤進行非對稱帶外集群化,供上層的服務器集群訪問。如果使用1Gb以太網連接每塊磁盤,其帶寬相對目前主流的6Gb SAS/SATA來講會降低,時延也會增加。
結論,不管是對于互聯網企業還是傳統企業,一個集中控制設備或者軟件層都是需要的。Kinetic架構的優勢在于,降低了訪問粒度,提升了大范圍內的訪問并行度;其劣勢在于,性能域擴大,管理域也隨之擴大,故障域也隨之增大,傳統1Gb以太網帶寬和響應速度有限,對于冷數據這類場景,傳統架構在性能、成本、管理上是否已經真的無法滿足需求?是否有必要去這樣折騰,還是個需要考慮的問題。