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