精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

當前位置:存儲企業動態 → 正文

百度面向大規模存儲系統的軟件定義Flash

責任編輯:editor005 |來源:企業網D1Net  2014-11-07 16:18:09 本文摘自:《程序員》

百度是國內最早大規模使用SSD/Flash的互聯網公司之一,早在2007年,就開始在搜索引擎中大規模使用SSD。在過去的幾年中,百度數據中心部署了數以十萬計的SSD,支撐了每天60億次的搜索請求及其背后的廣告、大數據實時分析處理、CDN等系統。在百度多年部署使用SSD的過程中,積累了很多經驗,也發現了傳統SSD的一些缺陷。在實際系統中,傳統SSD只能為上層軟件或存儲系統提供硬件裸帶寬(raw bandwidth)的40%左右,甚至更低。因為Flash必須先擦除再寫入的特性(Out-of-place Update)以及需要7%~50%的預留空間(over-provisioning space)來處理隨機寫,傳統SSD還需要提供10%左右的空間來做Flash通道之間的奇偶校驗,因此,傳統SSD只能提供硬件裸容量(raw capacity)的50%~70%給上層應用或存儲系統。另外,傳統SSD的性能往往會在使用過程中出現抖動,或隨著剩余空間變小而降低??紤]到百度大規模的數據中心和大規模的SSD部署,傳統SSD的不足給我們帶來了巨大的成本和效率開銷。

我們認為非常有必要按照大規模存儲系統的需求重新設計SSD的軟硬件架構,以徹底解決其不足。于是我們提出“軟件定義Flash”(SDF,Software–Defined Flash)的概念。SDF是一個軟件硬件協同的系統,把底層Flash通道的接口暴露給上層軟件,軟件可以管理數據的分布,以充分挖掘硬件的并發性;同時針對大規模存儲系統的特性設計軟硬件架構,消除了傳統SSD的冗余空間和奇偶校驗空間,使得幾乎所有的Flash空間都能提供給上層軟件使用。百度自行實現了SDF所有的軟件和硬件設計,并部署在內部存儲系統上,實現了99%的容量利用率和95%的帶寬利用率。相對于傳統同配置的PCIE SSD,性能提高了3倍,成本降低了50%。

傳統SSD的特性與不足

SSD是采用NAND為介質的存儲設備,與機械硬盤不同,它不需要任何機械操作,因而功耗很低,帶寬比機械硬盤高1個數量級,IOPS高兩個數量級。隨著NAND顆粒不斷降價,SSD應用更加廣泛,基本成為數據中心的標準配置之一。但其每GB成本仍然比機械硬盤貴1個量級以上,因此,充分發揮SSD的潛能就顯得非常重要。

NAND有如下兩個特性,決定了SSD的一切設計取舍。

先擦除才能寫(Out-of-place Update):一個物理塊必須先擦除才能寫入新數據。

該特性會影響隨機寫性能,因為更新的數據不能直接覆蓋舊數據,而是必須先寫到一塊已擦除過的新塊中,等寫到一定程度,需要把老的、無用的數據統一刪除,以騰出空間給新數據。這個過程需要merge操作,非常耗時。因此傳統SSD必須預留很大容量(一般為7%~50%),作為寫緩存,以降低merge的代價。一般越高端、性能越好的SSD冗余空間就越大。也就是說,一個本來有1TB空間的SSD,為了確保高效,用戶只能使用500GB。這意味著落到用戶的每GB成本就更高,但如果冗余空間較小,往往性能也沒法滿足用戶的需求。

我們選擇一款SATA接口的SSD硬盤,通過調節冗余空間,在不同比例下做隨機寫測試,可以看到,冗余空間為7%時相對于0%有接近4倍的性能提升,冗余空間為50%相對于7%有40%多的性能提升(如圖1所示)。

Out-of-place Update還會導致一個問題是寫放大系數(Amplification Factor)。SSD在做垃圾回收的過程中要做merge操作,會把一些有效數據搬移到新塊,并把原來的塊擦掉,導致了額外的擦除。如果寫放大系數太大,會大大降低SSD的使用壽命,一般寫放大系數都在2~3之間。

傳統SSD的大部分設計努力,都是在保證一定性能的前提下,盡量降低冗余空間的比例和寫放大系數。

單個NAND的性能非常有限,必須利用多個NAND并發操作來達到較高的性能。

一般一個頁的讀延時是幾十μs,寫延時是ms量級,一個NAND芯片內部會有多個plane,一個SSD會有多個NAND通道。SSD控制器會把數據盡量strip到多個通道中的多個plane中,以通過并發訪問提高總性能。傳統SSD的硬件架構如圖2。

一個SSD控制器包含十個到幾十個Flash通道,每個通道一般包含1~2個NAND顆粒,每個NAND顆粒有數個到十幾個Flash plane。如果用戶要寫一塊數據到SSD,這時SSD控制器會負責把數據拆成小塊,并發寫到多個通道中,以充分利用硬件的并發性。如果要讀數據,SSD也會根據之前寫的映射關系找到對應的通道,將數據讀出來。傳統SSD的控制器需要承擔數據stripping、layout和mapping管理等策略,很難針對不同應用需求、不同訪問模式做到最優,而且會增加硬件復雜度,提升成本。

NAND還有一些其他特點,如讀寫以為頁單位,擦除以塊為單位,數據必須經過BCH校驗,使用過程中會出現壞塊,每個塊都有固定的使用壽命等,這導致了SSD設計還有其他一些妥協,如磨損平衡、地址映射等。

軟件定義硬件原則

所謂軟件定義硬件,從系統角度來看,有兩個原則。

應用驅動。

軟硬件協同系統。

從實現的角度,有如下三個設計原則。

硬件要簡單,可控性大于智能化。

盡可能暴露硬件底層接口。

軟件從層次化變成豎井化。

軟件定義Flash

基于這樣的設計原則,在2011年初,我們開始著手設計面向大規模存儲需求的下一代SSD——SDF。

SDF擁有與傳統SSD完全不一樣的架構和設計,我們針對海量存儲系統的數據訪問模式設計,底層硬件接口暴露給上層軟件,取消了傳統的Linux文件系統和I/O棧,主要創新包括以下幾點。

全新的硬件架構

底層Flash通道暴露給上層軟件,軟件可直接管理數據的layout以充分挖掘硬件的并發能力。SDF的架構如圖3所示,可以看到,其架構和SSD有明顯不同。在SDF中,每個Flash通道對于上層軟件來說都是一個獨立的小SSD,軟件通過自己定義的調度器來管理數據的布局,使得多個通道能比較容易同時工作,這樣實際帶寬可以在不同場景下都能達到硬件裸帶寬的極限。

每個Flash通道具有一個獨立的FTL(Flash Translation Layer)控制器,實現了簡單的地址映射、壞塊管理等功能。

全新的軟件架構

消除了傳統的Linux文件系統和I/O棧,我們自行研發了輕量級的用戶態文件系統,大大降低了I/O請求延時。SDF的軟件架構如圖4所示。

基于從層次到豎井的設計原則,我們可以看到,SDF的軟件棧,只保留了最底層的硬件驅動,其他層次都沒有了,Linux的文件系統也變成了用戶態的一個輕量級文件系統。

不對稱的讀寫粒度,寫單位是2MB,剛好是一個擦除塊的大??;讀單位是8KB,剛好是一個頁的大小。在互聯網大規模存儲系統中,為了提高I/O性能,一般都會在內存中把隨機寫合并成順序寫,典型系統包括Google的LevelDB,Facebook的Haystack,以及百度的新存儲體系??梢园殉志没瘜懙牧6仍O置成NAND的擦除塊大小,并且硬件不做stripping,這樣就不需要預留冗余空間,也不需要垃圾回收,因此寫放大系數恒為1。

全新的系統視角

通過軟硬件結合的辦法保證系統的可靠性。因為存儲系統本身已對數據進行了3副本備份或做了Erasure Code,因此并不需要硬件提供非??量痰目煽啃员U稀6鴤鹘ySSD除了對數據做了必須的BCH校驗,還在通道之間做了橫向的奇偶校驗,奇偶校驗數據存儲在一個獨立的通道,相當于消耗了一個通道的容量。SDF取消通道間的奇偶校驗,把之前存放奇偶校驗數據的通道用來存放數據,相當于多增加了10%的存儲空間。

具體的設計細節和設計原則,可以參考百度發表在ASPLOS 2014上的論文《SDF: Software-Defined Flash for Web-scale Internet Storage Systems》。

SDF性能數據

2011年設計的SDF采用25nm的Micron MLC NAND,控制器采用Xilinx的FPGA,硬件板卡由第三方ODM提供,百度自行設計了Verilog RTL代碼、驅動代碼和用戶態文件系統代碼。

在大壓力測試時,性能數據如表1。

百度SDF和“市場某主流PCIE SSD”采用同樣的硬件配置,但性能更好。SDF的讀帶寬達到1.59GB/s,是PCIE 1.1 x8實際性能的上限,帶寬利用率99%;寫性能達到0.96GB/s,是44個Flash通道寫聚合性能的上限,寫帶寬利用率達到96%。

我們可以通過定義不同的軟件調度策略來激活不同的Flash通道,通過不斷增加工作的通道數量,可以看到,其讀寫性能也線性提高(如圖5),可見SDF的設計具有非常良好的擴展性。

  結論

百度提出軟件定義硬件的概念,并依此原則設計了軟件定義Flash(SDF),我們將SDF部署在實際生產環境,每GB成本比市場上主流的PCIE SSD降低了50%,性能提高了3倍。同時在ASPLOS、EUROSYS、ISLPED等全球頂級計算機系統和體系結構會議發表論文3篇,發明專利9個,取得了良好的應用效果和學術成果。

SDF除了可以應用在百度的大規模存儲系統中,也可以用在其他基于LSM-tree的存儲系統,如Haystack、LevelDB等,具有很好的適應性。

作者簡介:歐陽劍,百度基礎結構部高級架構師,負責數據中心體系結構等工作,包括計算、存儲、通信、低功耗等軟硬件協同系統。

關鍵字:SSDFlashPCIE

本文摘自:《程序員》

x 百度面向大規模存儲系統的軟件定義Flash 掃一掃
分享本文到朋友圈
當前位置:存儲企業動態 → 正文

百度面向大規模存儲系統的軟件定義Flash

責任編輯:editor005 |來源:企業網D1Net  2014-11-07 16:18:09 本文摘自:《程序員》

百度是國內最早大規模使用SSD/Flash的互聯網公司之一,早在2007年,就開始在搜索引擎中大規模使用SSD。在過去的幾年中,百度數據中心部署了數以十萬計的SSD,支撐了每天60億次的搜索請求及其背后的廣告、大數據實時分析處理、CDN等系統。在百度多年部署使用SSD的過程中,積累了很多經驗,也發現了傳統SSD的一些缺陷。在實際系統中,傳統SSD只能為上層軟件或存儲系統提供硬件裸帶寬(raw bandwidth)的40%左右,甚至更低。因為Flash必須先擦除再寫入的特性(Out-of-place Update)以及需要7%~50%的預留空間(over-provisioning space)來處理隨機寫,傳統SSD還需要提供10%左右的空間來做Flash通道之間的奇偶校驗,因此,傳統SSD只能提供硬件裸容量(raw capacity)的50%~70%給上層應用或存儲系統。另外,傳統SSD的性能往往會在使用過程中出現抖動,或隨著剩余空間變小而降低。考慮到百度大規模的數據中心和大規模的SSD部署,傳統SSD的不足給我們帶來了巨大的成本和效率開銷。

我們認為非常有必要按照大規模存儲系統的需求重新設計SSD的軟硬件架構,以徹底解決其不足。于是我們提出“軟件定義Flash”(SDF,Software–Defined Flash)的概念。SDF是一個軟件硬件協同的系統,把底層Flash通道的接口暴露給上層軟件,軟件可以管理數據的分布,以充分挖掘硬件的并發性;同時針對大規模存儲系統的特性設計軟硬件架構,消除了傳統SSD的冗余空間和奇偶校驗空間,使得幾乎所有的Flash空間都能提供給上層軟件使用。百度自行實現了SDF所有的軟件和硬件設計,并部署在內部存儲系統上,實現了99%的容量利用率和95%的帶寬利用率。相對于傳統同配置的PCIE SSD,性能提高了3倍,成本降低了50%。

傳統SSD的特性與不足

SSD是采用NAND為介質的存儲設備,與機械硬盤不同,它不需要任何機械操作,因而功耗很低,帶寬比機械硬盤高1個數量級,IOPS高兩個數量級。隨著NAND顆粒不斷降價,SSD應用更加廣泛,基本成為數據中心的標準配置之一。但其每GB成本仍然比機械硬盤貴1個量級以上,因此,充分發揮SSD的潛能就顯得非常重要。

NAND有如下兩個特性,決定了SSD的一切設計取舍。

先擦除才能寫(Out-of-place Update):一個物理塊必須先擦除才能寫入新數據。

該特性會影響隨機寫性能,因為更新的數據不能直接覆蓋舊數據,而是必須先寫到一塊已擦除過的新塊中,等寫到一定程度,需要把老的、無用的數據統一刪除,以騰出空間給新數據。這個過程需要merge操作,非常耗時。因此傳統SSD必須預留很大容量(一般為7%~50%),作為寫緩存,以降低merge的代價。一般越高端、性能越好的SSD冗余空間就越大。也就是說,一個本來有1TB空間的SSD,為了確保高效,用戶只能使用500GB。這意味著落到用戶的每GB成本就更高,但如果冗余空間較小,往往性能也沒法滿足用戶的需求。

我們選擇一款SATA接口的SSD硬盤,通過調節冗余空間,在不同比例下做隨機寫測試,可以看到,冗余空間為7%時相對于0%有接近4倍的性能提升,冗余空間為50%相對于7%有40%多的性能提升(如圖1所示)。

Out-of-place Update還會導致一個問題是寫放大系數(Amplification Factor)。SSD在做垃圾回收的過程中要做merge操作,會把一些有效數據搬移到新塊,并把原來的塊擦掉,導致了額外的擦除。如果寫放大系數太大,會大大降低SSD的使用壽命,一般寫放大系數都在2~3之間。

傳統SSD的大部分設計努力,都是在保證一定性能的前提下,盡量降低冗余空間的比例和寫放大系數。

單個NAND的性能非常有限,必須利用多個NAND并發操作來達到較高的性能。

一般一個頁的讀延時是幾十μs,寫延時是ms量級,一個NAND芯片內部會有多個plane,一個SSD會有多個NAND通道。SSD控制器會把數據盡量strip到多個通道中的多個plane中,以通過并發訪問提高總性能。傳統SSD的硬件架構如圖2。

一個SSD控制器包含十個到幾十個Flash通道,每個通道一般包含1~2個NAND顆粒,每個NAND顆粒有數個到十幾個Flash plane。如果用戶要寫一塊數據到SSD,這時SSD控制器會負責把數據拆成小塊,并發寫到多個通道中,以充分利用硬件的并發性。如果要讀數據,SSD也會根據之前寫的映射關系找到對應的通道,將數據讀出來。傳統SSD的控制器需要承擔數據stripping、layout和mapping管理等策略,很難針對不同應用需求、不同訪問模式做到最優,而且會增加硬件復雜度,提升成本。

NAND還有一些其他特點,如讀寫以為頁單位,擦除以塊為單位,數據必須經過BCH校驗,使用過程中會出現壞塊,每個塊都有固定的使用壽命等,這導致了SSD設計還有其他一些妥協,如磨損平衡、地址映射等。

軟件定義硬件原則

所謂軟件定義硬件,從系統角度來看,有兩個原則。

應用驅動。

軟硬件協同系統。

從實現的角度,有如下三個設計原則。

硬件要簡單,可控性大于智能化。

盡可能暴露硬件底層接口。

軟件從層次化變成豎井化。

軟件定義Flash

基于這樣的設計原則,在2011年初,我們開始著手設計面向大規模存儲需求的下一代SSD——SDF。

SDF擁有與傳統SSD完全不一樣的架構和設計,我們針對海量存儲系統的數據訪問模式設計,底層硬件接口暴露給上層軟件,取消了傳統的Linux文件系統和I/O棧,主要創新包括以下幾點。

全新的硬件架構

底層Flash通道暴露給上層軟件,軟件可直接管理數據的layout以充分挖掘硬件的并發能力。SDF的架構如圖3所示,可以看到,其架構和SSD有明顯不同。在SDF中,每個Flash通道對于上層軟件來說都是一個獨立的小SSD,軟件通過自己定義的調度器來管理數據的布局,使得多個通道能比較容易同時工作,這樣實際帶寬可以在不同場景下都能達到硬件裸帶寬的極限。

每個Flash通道具有一個獨立的FTL(Flash Translation Layer)控制器,實現了簡單的地址映射、壞塊管理等功能。

全新的軟件架構

消除了傳統的Linux文件系統和I/O棧,我們自行研發了輕量級的用戶態文件系統,大大降低了I/O請求延時。SDF的軟件架構如圖4所示。

基于從層次到豎井的設計原則,我們可以看到,SDF的軟件棧,只保留了最底層的硬件驅動,其他層次都沒有了,Linux的文件系統也變成了用戶態的一個輕量級文件系統。

不對稱的讀寫粒度,寫單位是2MB,剛好是一個擦除塊的大??;讀單位是8KB,剛好是一個頁的大小。在互聯網大規模存儲系統中,為了提高I/O性能,一般都會在內存中把隨機寫合并成順序寫,典型系統包括Google的LevelDB,Facebook的Haystack,以及百度的新存儲體系??梢园殉志没瘜懙牧6仍O置成NAND的擦除塊大小,并且硬件不做stripping,這樣就不需要預留冗余空間,也不需要垃圾回收,因此寫放大系數恒為1。

全新的系統視角

通過軟硬件結合的辦法保證系統的可靠性。因為存儲系統本身已對數據進行了3副本備份或做了Erasure Code,因此并不需要硬件提供非??量痰目煽啃员U稀6鴤鹘ySSD除了對數據做了必須的BCH校驗,還在通道之間做了橫向的奇偶校驗,奇偶校驗數據存儲在一個獨立的通道,相當于消耗了一個通道的容量。SDF取消通道間的奇偶校驗,把之前存放奇偶校驗數據的通道用來存放數據,相當于多增加了10%的存儲空間。

具體的設計細節和設計原則,可以參考百度發表在ASPLOS 2014上的論文《SDF: Software-Defined Flash for Web-scale Internet Storage Systems》。

SDF性能數據

2011年設計的SDF采用25nm的Micron MLC NAND,控制器采用Xilinx的FPGA,硬件板卡由第三方ODM提供,百度自行設計了Verilog RTL代碼、驅動代碼和用戶態文件系統代碼。

在大壓力測試時,性能數據如表1。

百度SDF和“市場某主流PCIE SSD”采用同樣的硬件配置,但性能更好。SDF的讀帶寬達到1.59GB/s,是PCIE 1.1 x8實際性能的上限,帶寬利用率99%;寫性能達到0.96GB/s,是44個Flash通道寫聚合性能的上限,寫帶寬利用率達到96%。

我們可以通過定義不同的軟件調度策略來激活不同的Flash通道,通過不斷增加工作的通道數量,可以看到,其讀寫性能也線性提高(如圖5),可見SDF的設計具有非常良好的擴展性。

  結論

百度提出軟件定義硬件的概念,并依此原則設計了軟件定義Flash(SDF),我們將SDF部署在實際生產環境,每GB成本比市場上主流的PCIE SSD降低了50%,性能提高了3倍。同時在ASPLOS、EUROSYS、ISLPED等全球頂級計算機系統和體系結構會議發表論文3篇,發明專利9個,取得了良好的應用效果和學術成果。

SDF除了可以應用在百度的大規模存儲系統中,也可以用在其他基于LSM-tree的存儲系統,如Haystack、LevelDB等,具有很好的適應性。

作者簡介:歐陽劍,百度基礎結構部高級架構師,負責數據中心體系結構等工作,包括計算、存儲、通信、低功耗等軟硬件協同系統。

關鍵字:SSDFlashPCIE

本文摘自:《程序員》

電子周刊
回到頂部

關于我們聯系我們版權聲明隱私條款廣告服務友情鏈接投稿中心招賢納士

企業網版權所有 ©2010-2024 京ICP備09108050號-6 京公網安備 11010502049343號

^
  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 蕉岭县| 保靖县| 饶阳县| 富源县| 乡宁县| 庐江县| 阜平县| 北辰区| 通渭县| 牡丹江市| 彭泽县| 鹤庆县| 壶关县| 友谊县| 涟源市| 许昌县| 静安区| 海城市| 正定县| 固阳县| 班玛县| 太和县| 佛坪县| 白山市| 临沂市| 仁寿县| 浏阳市| 房产| 祁门县| 会宁县| 长岭县| 灵山县| 镇康县| 镇巴县| 德昌县| 绥德县| 临湘市| 兰考县| 沽源县| 万年县| 双柏县|