“剖開” LinuxONE 和 Exadata,架構專家解讀裡面到底有什麼
說起IBM的 ofollow,noindex" target="_blank">LinuxONE 以及Oracle的Exadata,相信在IT行業從事基礎架構工作的同業們都不陌生。最直觀的印象就是:它們都是大型伺服器,體積非常龐大,價格非常昂貴,一個是IBM的拳頭產品,一個是Oracle的拳頭產品。
在去IOE的浪潮之下,可能我們很少去關注其中的細節了。但是對於企業而言,IT如何能夠以最優的價效比來設計最合理的企業IT基礎架構來支撐業務才是我們IT人最終的目標。如果我們以專業的角度去論證IT價效比,或許我們需要來面對它們的抉擇。這個時候我們就需要把這個體積龐大的東西剖開來看看裡面到底裝了什麼?是不是值得我們去選擇?
Exadata 裡裝了些什麼?
1、Exadata的硬體架構
圖1展示的是Oracle Exadata的硬體架構圖,主要分為三層:最上層為Oracle RAC伺服器例項層,中間層為IDB over Infiniband高速網路層,最下層為智慧儲存網路例項層。從硬體架構本身來看似乎沒有什麼特別的地方。依然是計算層、網路層、儲存層等傳統架構,只不過是在網路層進行了Infiniband的網路硬體升級,在儲存層加了一些SSD快速閃盤等等。
這些硬體的升級以及硬體的這種架構是撐Exadata所有特性的必要條件,因為Exadata中的軟體智慧掃描特性是需要Oracle特殊的通訊協議IDB來支撐,而IDB又是需要Infiniband中的RDS協議來支撐。Exadata中的智慧快閃記憶體快取技術特性是需要儲存層的SSD來支撐。整個硬體體系架構中由以下幾類主要模組組成:
資料庫節點:全機架有八個執行Oracle Linux 或 Oracle Solaris 的節點。
儲存單元:磁碟是連線到被稱為儲存單元的另一種伺服器。
磁碟:每個單元包含自己的磁碟。根據配置的不同,可以是高效能磁碟,或者是高容量磁碟。
快閃記憶體磁碟:每個單元還有快閃記憶體磁碟。可提供給計算節點,也可用作資料庫叢集的二級快取記憶體。
Infiniband:單元和節點通過高速、低延遲的 infiniband 進行連線。
乙太網交換機:外界可通過 infiniband 進行通訊,也可通過乙太網進行通訊。
KVM 交換機:通過一個鍵盤、視訊和滑鼠交換機直接物理連線到各個節點和單元。
2、Exadata的軟體技術特性
Oracle Exadata的軟體技術特性有很多:智慧掃描特性(Smart Scan)、儲存索引特性、混合列壓縮特性(EHCC)、智慧快閃記憶體快取(Smart Flash Cache)等。下面我們來分別剖析每一種特性在Exadata當中的作用以及彼此之間的有機聯絡。
一、智慧掃描特性
這一特性可以用一個詞來概括,那就是——offload。這就是Exadata的核心思想,將資料的過濾、計算等處理offload到分散的儲存節點,減少儲存到資料庫節點的資料傳輸,並分散資料節點的計算壓力,這估計也是Exadata的儲存節點比DB節點多的緣故之一吧。
列投影:就是過濾掃描的列,如果有的列SQL並不相關那麼就不傳輸到資料庫例項節點。
謂詞過濾:對where條件中的過濾謂詞下派到儲存節點預處理,減少資料傳輸。
儲存索引:這裡的索引並非資料庫層含義的索引,其實質是在儲存節點的記憶體上建立一個儲存資料的索引結構,記錄儲存片段的區間最大最小值,這樣儲存根據謂詞的過濾條件加上儲存索引即可直接排除一些根本不需要的儲存I/O。
函式下派:將一些函式計算下派到儲存節點,用於分散計算壓力與減少資料傳輸。
解壓/解密的下派:這個主要是計算壓力的分散,資料傳輸不一定減少。
偽列下派:偽列一般需要消耗計算資源,下派可以分散計算壓力並且減少資料傳輸。
塊初始化下派:傳統的塊初始化是由資料庫例項節點完成並寫入儲存節點,而Exadata將塊兒初始化的工作下派給儲存獨立完成,這可以減少計算與傳輸。
二、 智慧快閃記憶體快取特性
這個特性指的就是利用SSD盤快取機械盤的資料,這能夠大大提升I/O速度(對查詢)。儲存軟體具有兩項主要功能,這些功能使其可充分利用快閃記憶體硬體。第一項功能是智慧快閃記憶體快取,該功能可在快閃記憶體中暫存活動的資料庫物件。第二項功能是智慧快閃記憶體日誌記錄,該技術可加速資料庫日誌記錄的關鍵功能。最後,Oracle Database 的部署需要任務關鍵型靈活性,而 Oracle Exadata Storage Server 軟體與 Oracle Database 可以攜手提供這種靈活性。
智慧快閃記憶體快取的自動化管理:Exadata 智慧快閃記憶體快取將頻繁訪問的資料儲存在速度極快的快閃記憶體儲存中,同時將大部分資料儲存在成本效益很高的磁碟儲存中。此過程自動進行,無需使用者執行任何操作。
在快閃記憶體快取中定位物件:儲存軟體和資料庫例項可提供優先處理功能,可優先快取某些資料庫物件。例如,物件可在快取中定位且始終快取,或物件會被認定為從不快取的物件。此控制由新的儲存子句屬性 CELL_FLASH_CACHE 提供,它可被分配給資料庫表、索引、分割槽和 LOB 列。
從快閃記憶體快取建立快閃記憶體盤:保留快取的分割槽並將其用作邏輯快閃記憶體盤。對於每個 Exadata 單元,快閃記憶體盤保留的空間按十六個單元磁碟分配。在這些基於快閃記憶體的單元磁碟上建立網格磁碟(駐留在物理單元磁碟上的邏輯磁碟),且將網格磁碟分配給自動儲存管理 (ASM) 磁碟組。
資料庫日誌記錄快閃記憶體:在 OLTP 工作負載中,資料庫記錄寫入的快速響應時間是關鍵。資料庫管理員 (DBA)配置恢復日誌組和映象日誌檔案以提高可用性,但低速磁碟效能對恢復日誌寫入等待時間和系統性能具有負面影響 — 日誌寫入等待完成到最低速磁碟的寫入。
三、混合列壓縮(EHCC)
對於傳統的資料庫,資料是以行的方式儲存在據庫塊中,這種儲存方式對於OLTP應用非常適合,但是對於大資料量的OLAP應用就顯得沒有那麼高效了,而且隨著歷史資料的積累,歷史資料會佔用大量的空間,這些資料幾乎不可能會被改動,但是卻仍然會被一些DSS或者OLAP應用所查詢,而這些查詢往往並不關心一行資料的所有列,而只是關心特定的一些列,所以,列式儲存對於這種應用無疑要優於行式儲存。EHCC特性的出現就很好的解決了這種困難,一方面它會以列式儲存資料;另一方面它會對資料進行壓縮。它是支撐Exadata智慧掃描特性中非常重要的一項技術。
四、儲存索引技術(Exadata Storage Index)
儲存索引功能是在Exadata 11.2.1.2.0 版本(V2 )上引入的新特性,它主配合智慧掃描(smart scan)功能,來消除一個查詢所不需要的IO請求。它在記憶體中儲存表資料的彙總資訊,並通過內部機制來控制和訪問這些資料結構。每1M大小的磁碟空間上都會對應一個儲存索引的條目,這個條目中維護著這個區域中最大不超過8列的最大值(MAX)和最小值(MIN)。在我們執行查詢的時候,cellsrv程序就會根據這個查詢裡的表物件和謂詞通過hash演算法到記憶體中尋找儲存索引,如果沒有找到,則在返回結果集之後,建立儲存索引。當第二次執行的時候,cellserv發現了已經建立了索引,則直接使用儲存索引來減少IO操作。它也是支撐智慧掃描特性必不可少的一項關鍵技術。
LinuxONE 裡裝了些什麼?
1、 LinuxONE 的硬體架構
圖2 展示的是IBM LinuxONE 的硬體架構。它沒有像Exadata那樣的計算儲存分離。而是整合了足夠強大硬體能力的伺服器。並且在此基礎之上實現了平臺層的多層虛擬化架構。
首先,在 LinuxONE 的裡面包含的是超強處理能力的計算資源硬體池和超高吞吐能力的IO資源池。所有的這些硬體資源池都是橫向平等的關係。基於這個龐大的硬體資源池,又可以在此基礎上做三層虛擬化架構:
第一層:通過DPM或PR/SM實現微碼級邏輯分割槽。也就是所謂的邏輯分割槽。大型關鍵資料庫可以直接部署在LPAR分割槽,賦予更接近硬體的資源排程及強大縱向擴充套件能力。
第二層:基於邏輯分割槽之上形成的KVM標準化開源虛擬化邏輯分割槽。
第三層:可以基於KVM虛擬化技術形成的平臺建立基於Docker技術虛擬出大批量容器載體,以支援某些維服務或者是Devops場景需要。
對於IBM的 LinuxONE 來講,其實它沒有什麼應用軟體特性可言,因為它不與任何應用作繫結。也就不會有任何基於某一款軟體產品而定製化的軟體技術特性。而它具備的是優秀的平臺特性,包括它的開放性、擴充套件性以及高效性等等。下面我們分別就其平臺的這些特性做以說明:
一、開放性
LinuxONE 的開放性要從以下幾點來進行說明:
1. 全面支援主流開源軟體: LinuxONE 特性之一號稱是"由你做主的Linux",它全面支援主流開源軟體,任由開發者選擇自己所熟悉和偏愛的開源工具,支援包括Apache Spark、Node.js、MongoDB、MariaDB、PostgreSQL、Chef和Docker等一長串的名單。這些技術能夠實現優於其它大型主機的執行,且具備引人矚目的效能優勢。
2. 支援Linux開源大型主機專案:Linux基金會是一個致力於促進Linux發展和協同開發的非營利組織。IBM不斷地將對Linux基金會創立的“開源大型主機專案”作出支援,並憑藉貢獻出的大型機程式碼推動該專案的發展。這不僅有助於在大型機上加入個性化的效能,還能更好地滿足企業和開發者對安全性、可用性和高效能的要求。
3. 面向新經濟:由於IBM對OpenStack 雲端計算平臺行業標準的大力支援,其他基於 OpenStack 的行業雲管理解決方案同樣可以在 LinuxONE 上執行。企業移動解決方案的核心是可以安全地將企業的核心記錄和資料擴充套件到移動應用中, LinuxONE 同樣具有很好的支援特性。行業標準的 Hadoop 框架系列也是其重要的支援物件。IBM的 DevOps 方法通過一個開放的、基於標準的工具平臺支援持續交付,加之市場領先的過程框架Scaled Agile Framework (SAFe) ,使LinuxONE提供了一個全面的過程和工具框架。
二、高效能
如果論伺服器的的縱向效能,還是要屬IBM的伺服器,這主要取決於它的強大的CPU。從單個CPU的處理能力來講,5GHz、4級快取記憶體(>12GB)、獨有的多執行緒技術可以達到140多個可配置核心等都是其他的硬體廠商無法比擬的。另外,SIMD單指令多資料流向量分析技術以及獨有的I/O專用SAP處理器技術都是造就它具備強大效能的前提條件。
從IO處理能力上來講,IO頻寬可以達到800多GB/s,而且還有記憶體級機內高速網路Hipersocket來支撐其內部通訊,跨機器遠端記憶體訪問技術RDMA也為其的橫向IO能力提供了必不可少的技術保障。
三、擴充套件性
說到 LinuxONE 的擴充套件性,其實可以從兩個方面來分析。一方面是其單機內的擴充套件能力,另外一個方面是多機組成的整體擴充套件能力。就單機而言,它可以支援8000多虛擬機器、200多萬容器。而且這種機內擴充套件的靈活性主要取決於其多級虛擬化架構的支援。而多機的橫向擴充套件能力主要取決於虛擬化技術體系的支撐,由於其對開源KVM虛擬化技術的支援,由於其對Docker容器技術的支援,那麼一定會繼承這些開源雲端計算技術框架帶來的無限的橫向擴充套件能力。
Exadata & LinuxONE 到底有啥差異?
通過前面的章節,我們對這兩個伺服器有了一個整體的認識: Exadata的體積裡面除了有一大堆硬體資源之外,更多的是它的軟體技術特性。而 LinuxONE 的體積裡面除了有其先進的硬體資源池,更重要的是它的平臺特性。 無論他們有什麼樣的特性,最終是要服務於我們的業務場景,那麼 接下來我們就從業務場景出發來看看這二者之間的差異。
首先, Exadata的軟體特性,無論是它的智慧掃描還是它的智慧快閃記憶體等軟體特性,終究目的是要解決資料庫例項的IO問題。 傳統模式下,如果沒有這些特性,那麼資料庫例項讀取的資料沒有任何過濾和處理,基本上是1:1的模式,那麼IO的壓力會非常大,尤其是在分析型資料庫的場景下。經過了這些資料的過濾技術、資料的列模式讀取技術、智慧的資料移動技術等等,再結合著Infiniband硬體的強大協議支援,那麼資料庫例項耗費在IO上的資源就會成百倍甚至更高數量的減少,整體上資料庫叢集的處理能力就會得到質的飛躍。但是千萬不要忘記,這個有效性僅僅適用於分析型的Oracle資料庫應用。因為只有這種因為才會在IO上產生如此巨大的瓶頸效應。
然後, LinuxONE 的平臺特性,它的開放性使之與開源世界有一種與生俱來的生態性,意味著它不是為某一個商業產品或者軟體而定製的平臺,而是儘可能去容納儘可能多的軟體。 一方面是說它的包容性夠好,另外一方面其實也說明了它對於任何軟體的支援都不會到極致的狀態。再說它的高效能,無可厚非LinuxONE的高效能來自於它強大的處理器,沒有幾個能與之比擬,從另外一個角度說明它本身的計算密度足可以支撐各種負載密集型應用。最後,從它的靈活性上講,其是來自於它本身的微碼層的虛擬化技術以及它對開源KVM、Docker容器技術等充分支援。正是由於它對虛擬化技術支援的寬容性和靈活性,使得它可以支撐傳統性的高負載應用,也可以支援網際網路業務的輕量型敏捷應用。 LinuxONE 大規模高密度整合各種應用負載,極大的節省了空間,耗電,網路,軟體和人力開銷,降低了整體擁用成本TCO。
總結來看, Exadata為分析型Oracle資料庫應用量身定製,所有的軟硬體設計都是定製化的設計。而 LinuxONE 是一種相對比較通用的平臺,它想盡一切辦法去包容更多的應用型別,所以它不為任何應用而定製,只為容納更多應用。從這個意義上講,二者的選擇取決於我們要跑什麼樣的業務型別。
作者:趙海,畢業於大連理工大學系統工程研究所。2007年加入IBM,任軟體工程師,主要從事日本生命保險等專案的軟體開發工作。2009年開始專注於日本松下電器專案的系統運維及優化工作。2011年加入惠普中國,任高階系統工程師,專注於客戶案例解決及方案諮詢工作。2013年加入IBM Devops Solution Team,參加雲端計算專案建設及部署,以及後期的諮詢及解決方案提供工作。2014年加入某城商銀行系統規劃設計中心,任系統架構師,專注於銀行資料中心解決方案規劃及設計工作。
瞭解更多 https://www.ibm.com/it-infrastructure/cn-zh/linuxone/home.html