大家好,我叫周平,來自阿里巴巴服務器研發事業部,現在主要負責自研存儲設備的開發。很高興和大家分享阿里在自研存儲產品和應用優化方面的一些實踐。
存儲對數據中心來說是核心的功能之一,隨著現在新的應用的興起,像人工智能、大數據、云計算、公有云等,使得數據中心對存儲設備的需求也日趨多樣化。傳統說幾個簡單的指標已經不足以描述設備的需求。這些新的應用對于我們的存儲設備提出了新的挑戰,這邊有幾個例子,一個是靈活性和可定制性。我們現在應用的場景非常多元化,單一的標準存儲設備越來越難以滿足適配不同應用場景的需求。第二個是應用現在越來越追求挖掘存儲設備的性能潛力,對于應用來說,往往希望能夠最大限度的把設備的性能發揮出來。第三個是在服務方面的需求,我們的業務希望我們能夠及時響應線上的問題以及對新功能的需求。另一方面來說,這些新的應用對存儲設備也提供了很多的機遇,尤其是對自研存儲設備,對阿里的數據規模來說,往往一個應用場景會有幾萬片甚至幾十萬片的規模,這樣的應用規模才使自研存儲產品成為一種可能。另外由于我們數據中心自己有業務,同時又掌握硬件,同時可以實現軟硬件聯合優化。
回到傳統的存儲設備,基本上都是標準的通用產品,它的特點,一個是它試圖為所有場景或者很多場景來做優化,最后的結果是所有的場景都不是最優的性能,它是嚴格按照標準來實現的,難以針對某些應用來做定制,可以定制的空間非常小。包括像很多場景用的功能,因為標準的產品都是要follow某個標準,這些功能對它來說就是冗余的。另外還有很大的問題,對于我們來說,標準的設備都是黑盒產品,性能難以綠色,到底內部有哪些問題,技術上也不可控地還有在服務方面,客戶支持響應慢,新功能開發周期長。
我們從2016年開始投入自研設備,主要是SSD,我們采用的是從業務驅動的方法,從業務的應用出發,分析應用場景,把需求提煉出來。在產品的設計階段一直到后期的測試調優階段,形成這樣一個迭代的過程。
自研SSD主要的技術路線有三種,一種是Device-based,對主機端呈現成標準的NMVe設備,好處是通用性比較強。第二種是Host-based,把大部分的功能都移到主機那邊實現,設備那邊變得非常輕,好處第一是可以把主機端的CPU資源和C-RAN資源利用起來,可以用相對較少的設備上的應用來實現更強的功能,支持更大的容量。另外是主機端的軟件相比設備上的要容易調試得多,開發新功能也更加容易,它和應用的結合也比較容易。Host-based有一個局限性,沒有一個共用的標準,對于業務來說,它需要用一個非標準的驅動或者一套非標準的用戶態的API來適用。另外它把很多細節呈現給主機端軟件,所以當我們替換顆粒或者換設備,主機端的軟件要相應的做修改,這是它的一些局限性。第三種路線是OpenChannel,我們稱它為開放接口SSD。它跟Host-based比較接近,區別是它在主機端和設備之間定義了一套標準的通信接口,它把兩邊的職責定義清楚,定義了一個通用標準的命令接口,這樣就有了更好的通用性,我換一個設備或者換一個顆粒,主機端那邊的軟件可以不動。思路基本上還是Host-based,大部分工作還是放在主機端實現。這三種技術路線我們都在關注。
自研SSD設備在阿里,我們現在第一代自研SSD,就是現在我們在展出的這款產品,已經于2016年批量上線,韓國云服務器 美國云主機,經過了2016年雙十一的考驗,我們下一代自研SSD也正在開發中。總的思路是,我們通過原料直采,主要是顆粒直采,實現軟硬件自主可控,針對業務做定制優化,來解決線上響應的問題,同時可以降低成本。
從我們這一年多開發自研SSD產品的實踐來看,我們總結出這樣幾個經驗,首先是整個產品的設計是應用驅動的,根據應用場景來設計產品,而不是根據某個標準或者根據某幾個指標來設計產品。第二,從產品的規劃一直到最后的開發測試,把業務全程都參與進來,及時得到業務的反饋,這樣可以讓這個產品在設計階段就能和業務貼近。第三、第四點一樣,設計與應用場景結合,把軟件硬件整個棧作為整體來優化。第五,全鏈路白盒化,做到自主可控。第六,我們要根據業務需求自主開發運維工具,而不是只用廠商提供的或者一些開源的工具。因為我們掌握了整個軟硬件,整個鏈條都自主掌控在我們這邊,所以我們可以針對業務應用做一些優化和開發一些新的功能,比如通過調整OP降低成本,有些業務可能對性能要求不太高,可以把OP降低來降低成本,比如優化讀寫路徑,還有I/O優先級,不同的分區有不同的I/O有線級,還有原子寫操作優化,等等。