一種ssd盤片內(nèi)部raid組建方法及系統(tǒng)的制作方法【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明涉及一種SSD盤片內(nèi)部RAID組建方法及系統(tǒng)?!?br>背景技術(shù):
】[0002]SSDCSolidStateDrive,固態(tài)硬盤)是一種由固態(tài)電子存儲芯片陣列作為存儲介質(zhì)、控制芯片進行數(shù)據(jù)讀寫、存儲介質(zhì)管理的數(shù)據(jù)存儲設(shè)備,由于其具有讀寫速度快、功耗低、無噪音、抗震性好等特點而廣泛應(yīng)用于消費電子、數(shù)據(jù)中心、軍事、車載等領(lǐng)域,呈現(xiàn)出替代機械硬盤的趨勢。[0003]NANDFlash作為當(dāng)前主流SSD所采用的存儲介質(zhì),其所存儲數(shù)據(jù)由于顆粒磨損(PECycle)、數(shù)據(jù)存儲時間(DataRetent1n)、高溫環(huán)境等原因會發(fā)生比特翻轉(zhuǎn)。因此,SSD控制器內(nèi)部都設(shè)計了錯誤糾正算法,在翻轉(zhuǎn)比特數(shù)較少時通過BCH或LDPC等錯誤糾正算法對錯誤數(shù)據(jù)進行糾正;如果翻轉(zhuǎn)比特數(shù)超過錯誤糾正極限則會發(fā)生不可糾錯誤(UncorrectableError)。[0004]獨立冗余磁盤陣列(RedundantArraysofIndependentDisks,RAID)由于其在容量、性能、冗余數(shù)據(jù)保護上的優(yōu)勢而廣泛應(yīng)用于存儲系統(tǒng)中。為了解決SSD中NANDFlash比特翻轉(zhuǎn)不可糾錯誤導(dǎo)致的數(shù)據(jù)丟失問題,申請?zhí)枮?01210038141.1的發(fā)明專利將RAID技術(shù)引入到SSD中,通過將閃存頁組成RAID條帶以達到數(shù)據(jù)保護的目的;但該發(fā)明中未說明RAID條帶的具體組織形式。申請?zhí)枮?01210481988.9和申請?zhí)枮?01310746661.4的發(fā)明專利將主機數(shù)據(jù)按照主機邏輯地址組成RAID條帶,通過將主機數(shù)據(jù)按照固定大小切片后再映射到不同的NANDFlash通道上以提高后端并發(fā)度;在條帶更新時根據(jù)主機數(shù)據(jù)切片數(shù)量以區(qū)分條帶大寫和小寫,進而確定更新RAID校驗值所需讀取的條帶成員,以達到減小條帶更新的讀操作、提升性能的目的。[0005]上述基于主機邏輯地址的SSD盤片內(nèi)部RAID組建方案存在以下缺點:I)DRAM資源增加、成本上升、效率降低;SSD的數(shù)據(jù)讀取主要依靠映射表,而基于主機邏輯地址的RAID組建方法由于需要映射表對條帶校驗數(shù)據(jù)進行物理尋址,因此其映射表需要在原有主機容量尋址空間基礎(chǔ)上添加RAID校驗數(shù)據(jù)尋址部分;對于外置DRAM的SSD而言,將導(dǎo)致系統(tǒng)所需的DRAM資源增加、成本上升;對于無外置DRAM的SSD而言,由于需要從NandFIash中加載RAID校驗數(shù)據(jù)的映射表,從而導(dǎo)致性能降低。[0006]2)盤片隨機寫性能下降:對于基于主機邏輯地址的RAID組建方法,主機隨機寫業(yè)務(wù)引起條帶內(nèi)成員數(shù)據(jù)更新時,需要讀取條帶成員數(shù)據(jù)并重新計算該條帶的RAID校驗值,而讀取條帶成員數(shù)據(jù)需要占用NANDFlash帶寬、重新計算條帶RAID校驗值將占用CPU的調(diào)度時間;此外,為了保證數(shù)據(jù)一致性,條帶內(nèi)任一成員的數(shù)據(jù)更新都將導(dǎo)致整個條帶所包含的主機邏輯地址添加互斥鎖。以上缺陷都將大大降低盤片的隨機寫性能(4K隨機寫1PS下降80%)。雖然申請?zhí)枮?01210481988.9的發(fā)明通過區(qū)分條帶更新大小寫以減少所需讀取的條帶成員數(shù),但該方法仍然不可避免地需要讀取條帶成員數(shù)據(jù)。[0007]3)盤片寫放大增加:對于基于主機邏輯地址的RAID組建方法,條帶內(nèi)任一成員的數(shù)據(jù)更新都需要更新RAID校驗值(重新計算并寫到NANDFlash中),這必然導(dǎo)致盤片的寫放大增加、NANDFlash磨損加劇?!?br/>發(fā)明內(nèi)容】[0008]本發(fā)明所要解決的技術(shù)問題是,針對現(xiàn)有技術(shù)不足,提供一種SSD盤片內(nèi)部RAID組建方法及系統(tǒng)。[0009]為解決上述技術(shù)問題,本發(fā)明所采用的技術(shù)方案如下:一種SSD盤片內(nèi)部RAID組建方法,該方法主要實現(xiàn)過程如下:將SSD盤片上所有通道內(nèi)所有die上塊號相同的物理塊抽象為邏輯塊SuperBlock;將SuperBlock內(nèi)所有頁號相同的物理頁抽象為邏輯頁SuperPage;以SuperPage作為RAID條帶,在SuperPage上進行RAID組建;對于每個SuperBlock,FTL轉(zhuǎn)換層記錄其中的baddie和RAIDdie,在RAID組建寫入數(shù)據(jù)時跳過baddie;在RAID條帶內(nèi)所有用戶數(shù)據(jù)寫入完成后,確定最終的RAID校驗數(shù)據(jù)并寫入到RAIDdie上;所述RAID組建原則為:SSD盤片內(nèi)部的FTL轉(zhuǎn)換層將SuperBlock內(nèi)的各個物理塊等效為NandFlashBlock:在寫入操作時按照SuperPage號從小到大依次進行數(shù)據(jù)寫入,在擦除操作時對SuperBlock內(nèi)的各個NandFlashBlock同時擦除;FTL轉(zhuǎn)換層將SuperPage內(nèi)的各個物理頁等效為NandFlashPage:在寫入操作時按照die號從小到大對SuperPage內(nèi)的各個NandFlashPage依次進行數(shù)據(jù)寫入。[0010]確定最終的RAID校驗數(shù)據(jù)并寫入到RAIDdie上的具體實現(xiàn)過程包括以下步驟:1)確定RAID計算閾值;2)SuperPage內(nèi)每寫入一個用戶數(shù)據(jù)物理頁后,將該用戶數(shù)據(jù)物理頁所對應(yīng)的用戶數(shù)據(jù)緩沖區(qū)添加到RAID計算任務(wù)的buffer列表中;3)SuperPage內(nèi)寫入的用戶數(shù)據(jù)物理頁數(shù)量達到RAID計算閾值后,啟動RAID異或引擎進行一次RAID校驗數(shù)據(jù)計算,將計算結(jié)果保留在RAID校驗數(shù)據(jù)緩沖區(qū)中,并在RAID計算任務(wù)的buffer列表中將相應(yīng)用戶數(shù)據(jù)緩沖區(qū)刪除;如果SuperPage內(nèi)所有的用戶數(shù)據(jù)物理頁都已經(jīng)被寫入,但RAID計算任務(wù)的buffer列表中的用戶數(shù)據(jù)緩沖區(qū)數(shù)未達到RAID計算閾值,則繼續(xù)進行RAID校驗數(shù)據(jù)計算;4)當(dāng)SuperPage內(nèi)所有用戶數(shù)據(jù)物理頁都完成寫入、RAID校驗數(shù)據(jù)計算完成后,將最終的RAID校驗數(shù)據(jù)寫入到RAIDdie上。[0011]上述組建過程簡單,容易實現(xiàn)。[0012]本發(fā)明還提供了一種SSD盤片內(nèi)部RAID組建系統(tǒng),包括:邏輯塊SuperBlock:由SSD盤片上所有通道內(nèi)所有die上塊號相同的物理塊抽象而成;邏輯頁SuperPage:由SuperBlock內(nèi)所有頁號相同的物理頁抽象而成,并用于進行RAID組建;FTL轉(zhuǎn)換層:記錄SuperBlock中的baddie和RAIDdie,在RAID組建寫入數(shù)據(jù)時跳過baddie;用于在RAID條帶內(nèi)所有用戶數(shù)據(jù)寫入完成后,確定最終的RAID校驗數(shù)據(jù)并寫入到RAIDdie上。[0013]與現(xiàn)有技術(shù)相比,本發(fā)明所具有的有益效果為:I)本發(fā)明所需DRAM資源減少、成本低、效率高:相較于基于主機邏輯地址的RAID組建方案,本發(fā)明不需要映射表單元對RAID校驗數(shù)據(jù)進行映射管理,每個SuperBlock只需兩個字節(jié)以記錄其RAIDDie;對于外置DRAM的SSD,以主機容量為256GB的盤片、Die中Block數(shù)為1024的NandFlash顆粒為例,對于基于主機邏輯地址的RAID組建方案,假設(shè)其對主機數(shù)據(jù)以4KB為單位進行切片、在條帶深度為16的情況下,其RAID校驗數(shù)據(jù)的映射所需DRAM空間為256GB/4KB/16*4Byte=16MB,而本發(fā)明所需DRAM空間僅為1024*2Byte=2048KB;對于無外置DRAM的SSD,在條帶更新及數(shù)據(jù)恢復(fù)時不需讀取映射表,因而效率提高;2)RAID對盤片隨機性能影響減小:由于是基于SuperPage組建條帶,條帶的組成單元不是主機邏輯地址,而是NANDFlash物理頁;并且在本發(fā)明中,盤片所接收的主機數(shù)據(jù)在NANDFlash中依次存放,因此對本發(fā)明的SuperPageRAID條帶而言,只有RAID條帶的組建而沒有條帶的更新:當(dāng)一個條帶組建完成后,如果接收到新的主機數(shù)據(jù)則直接在下一SuperPage中組建新的RAID條帶,因此本發(fā)明在主機邏輯地址數(shù)據(jù)更新時,不需要對條帶添加互斥鎖、不需要讀取相應(yīng)的用戶數(shù)據(jù)單元數(shù)據(jù)和RAID校驗單元數(shù)據(jù)來更新RAID校驗數(shù)據(jù),并且無論主機是順序?qū)戇€是隨機寫,盤片內(nèi)處于組建狀態(tài)的條帶只有一個,因而本發(fā)明RAID組建對盤片隨機性能無影響;3)盤片寫放大減小:相較于基于主機邏輯地址的RAID組建方案,其條帶的每次更新都涉及到RAID校驗數(shù)據(jù)的下刷,而本發(fā)明僅在每個條帶構(gòu)建完成后才寫一次RAID校驗數(shù)據(jù),因而校驗數(shù)據(jù)的寫次數(shù)減少,盤片寫放大減小,NANDFlash磨損減小?!靖綀D說明】[0014]圖1為本發(fā)明實施例NANDFlash物理組織結(jié)構(gòu)圖;圖2為本發(fā)明實施例SuperBlock抽象示意圖;圖3為本發(fā)明實施例SuperPage抽象示意圖;圖4為本發(fā)明實施例SuperPageRAID條帶示意圖;圖5為本發(fā)明實施例SuperPage、SuperBlock使用順序圖;圖6為本發(fā)明實施例SuperBlock的壞塊和RAID塊記錄示意圖;圖7為本發(fā)明實施例SuperPageRAID校驗數(shù)據(jù)計算與寫入過程圖;圖8為本發(fā)明實施例RAID異或引擎結(jié)構(gòu)圖?!揪唧w實施方式】[0015]以下結(jié)合【附圖說明】本發(fā)明的具體實施過程。[0016]在以NANDFlash為存儲介質(zhì)的SSD盤片中,為了提高對存儲介質(zhì)的訪問帶寬都會將NANDFlash訪問控制器設(shè)計為支持一定數(shù)量的NANDFlash通道,并在每個通道上掛接一定數(shù)量的NANDFlash顆粒,從而提高盤片對NANDFlash的訪問并發(fā)度。由當(dāng)前第1頁1 2 3