用于數(shù)據(jù)存儲系統(tǒng)的垃圾收集和數(shù)據(jù)重定位的制作方法
【專利摘要】在包括至少一個數(shù)據(jù)存儲設(shè)備(DSD)和主機的數(shù)據(jù)存儲系統(tǒng)中管理數(shù)據(jù)?;谟芍鳈C定義的至少一個屬性,確定將存儲于至少一個DSD中的數(shù)據(jù)的初始位置?;谟伤鲋鳈C定義的至少一個屬性,從至少一個DSD中的多個來源部分識別用于垃圾收集操作的來源部分。基于由所述主機定義的至少一個屬性,識別至少一個DSD中的用于存儲由垃圾收集操作獲得的數(shù)據(jù)的目的地部分。執(zhí)行將在所述來源部分中的數(shù)據(jù)向所述目的地部分的垃圾收集;并且在完成垃圾收集之后,將來源部分指定為用于新的垃圾收集操作的新的目的地部分。
【專利說明】
用于數(shù)據(jù)存儲系統(tǒng)的垃圾收集和數(shù)據(jù)重定位
【背景技術(shù)】
[0001]數(shù)據(jù)存儲設(shè)備(DSD)通常與數(shù)據(jù)存儲系統(tǒng)中的主機一起使用來在記錄介質(zhì)上記錄數(shù)據(jù)或從記錄介質(zhì)復制數(shù)據(jù)。作為一種DSD,磁盤驅(qū)動器可以包括旋轉(zhuǎn)磁盤和在磁盤上開動的磁頭以磁性地將數(shù)據(jù)寫入到磁盤或從磁盤讀取數(shù)據(jù)。這種磁盤包括用于記錄數(shù)據(jù)的多個徑向間隔的同心軌道。
[0002]已經(jīng)引入了疊瓦式磁記錄(SMR)作為通過增加每英寸軌道(TPI)數(shù)量而增加可以存儲于磁盤上的給定區(qū)域中的數(shù)據(jù)量的方式。SMR通過使用相對寬的疊瓦式寫入磁頭來如屋頂疊瓦那樣重疊軌道而增加了 TPI。非重疊的部分然后用作可以由較窄讀取磁頭讀取的窄軌道。
[0003]雖然對于SMR較大數(shù)量的TPI通常是可能的,但是當寫輸入時軌道的重疊可能會引起問題,這是因為對先前重疊的軌道的新寫入會影響在重疊軌道中寫入的數(shù)據(jù)。為此,對軌道進行順序?qū)懭胍员苊庥绊懴惹皩懭氲臄?shù)據(jù)。
[0004]針對SMR介質(zhì)管理順序?qū)懭氲臄?shù)據(jù)通常包括DSD使用間接系統(tǒng)來在不同的尋址方案之間進行轉(zhuǎn)換以確保數(shù)據(jù)被順序?qū)懭?。當針對特定的邏輯塊地址(LBS)修改數(shù)據(jù)時,間接系統(tǒng)允許DSD將修改后的數(shù)據(jù)順序?qū)懭氲叫碌奈恢?,并將?shù)據(jù)的LBS重新映射到新的位置。在先前位置的老版本數(shù)據(jù)將變成過時的或無效的數(shù)據(jù)。
[0005]為了釋放磁盤上的空間,可以執(zhí)行垃圾收集(GC)過程以使得磁盤中存儲無效或過時數(shù)據(jù)的部分可用于存儲有效數(shù)據(jù)。這可以在GC過程期間通過對來自磁盤上特定區(qū)域的有效數(shù)據(jù)重定位并使得無效數(shù)據(jù)被覆寫而完成。使用間接的其它類型的存儲介質(zhì)(例如固態(tài)存儲器)也可以使用GC來釋放存儲器中存儲無效數(shù)據(jù)的部分。
【附圖說明】
[0006]根據(jù)以下結(jié)合附圖闡述的詳細描述,本公開的實施例的特征和優(yōu)點將變得更清晰。提供附圖和相關(guān)聯(lián)的描述以說明本公開的實施例,且不限制所要求保護的范圍。
[0007]圖1是根據(jù)實施例描繪數(shù)據(jù)存儲系統(tǒng)的框圖。
[0008]圖2是根據(jù)實施例的包括圖1的數(shù)據(jù)存儲設(shè)備(DSD)的框圖。
[0009]圖3A是根據(jù)實施例的用于垃圾收集(GC)過程的流程圖。
[0010]圖3B是根據(jù)實施例的在數(shù)據(jù)重定位期間用于數(shù)據(jù)一致性過程的流程圖。
[0011]圖4是根據(jù)實施例的實現(xiàn)環(huán)境。
[0012]圖5是根據(jù)實施例的另一實現(xiàn)環(huán)境。
[0013]圖6A是根據(jù)實施例的用于GC過程的流程圖。
[0014]圖6B是根據(jù)實施例的在數(shù)據(jù)重定位期間用于數(shù)據(jù)一致性過程的流程圖。
[0015]圖7是根據(jù)實施例示出將各區(qū)分配給不同邏輯卷以及將區(qū)分配作為目的地部分的概念圖。
[0016]圖8是根據(jù)實施例示出將多個區(qū)分配給邏輯卷以及將區(qū)分配作為目的地部分的概念圖。
【具體實施方式】
[0017]在后續(xù)詳細描述中,闡述了多個具體細節(jié)以提供對本公開的全面理解。然而,可以理解的是,對于本領(lǐng)域普通技術(shù)人員而言,可以在不具有一些這種具體細節(jié)的情況下實踐所公開的各個實施例。在其它實例中,未詳細示出公知的結(jié)構(gòu)和技術(shù),以避免不必要地模糊各個實施例。
[0018]系統(tǒng)概述
[0019]圖1示出了根據(jù)實施例的數(shù)據(jù)存儲系統(tǒng)100,其包括主機101和數(shù)據(jù)存儲設(shè)備(DSD)107、108和109。系統(tǒng)100例如可以包括計算機系統(tǒng)(例如,服務(wù)器、臺式計算機、云存儲設(shè)備、數(shù)據(jù)歸檔系統(tǒng)等)或其它電子設(shè)備(例如,數(shù)字錄像機)。就此,系統(tǒng)100可以是獨立系統(tǒng)或網(wǎng)絡(luò)(例如,網(wǎng)絡(luò)122)的一部分。本領(lǐng)域的普通技術(shù)人員將理解系統(tǒng)100和DSD 106可以包括比圖1所示的那些部件更多或更少的部件,并且可以在其它環(huán)境中實現(xiàn)所公開的過程。
[0020]在圖1的示例性實施例中,DSD 106、107、108和109可以位于同一位置或可以分離在不同位置。如圖1所示,DSD 106是主機101的一部分,并存儲用于在主機101上執(zhí)行的應用,而DSD 107、108和109主要存儲主機101的用戶數(shù)據(jù)。
[0021]輸入設(shè)備102可以是鍵盤、滾動輪或定位設(shè)備,其允許系統(tǒng)100的用戶向系統(tǒng)100輸入信息和命令,或者允許用戶操縱在顯示器設(shè)備104上顯示的對象。在其它實施例中,輸入設(shè)備102和顯示器設(shè)備104可以組合成單個部件,例如顯示對象并接收用戶輸入的觸摸屏。
[0022]在圖1的實施例中,主機101包括中央處理單元(CPU)llO,可以使用用于執(zhí)行指令的一個或多個處理器實現(xiàn)所述CPU 110,所述一個或多個處理器包括微控制器、數(shù)字信號處理器(DSP)、專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)、硬連線邏輯、模擬電路和/或其組合。如下文所提及的主機101的處理器可以是上述處理器中的一個或多個、或者是被配置為執(zhí)行本文描述的功能的其它處理器。CPU 110與主機總線113以接口連接。與主機總線113以接口連接的還有隨機存取存儲器(RAM)112、用于輸入設(shè)備102的輸入接口 114、用于顯示設(shè)備104的顯示接口 116、只讀存儲器(ROM) 118、以及用于與網(wǎng)絡(luò)122以接口連接的網(wǎng)絡(luò)接P120o
[0023]RAM 112是主機101的易失性存儲器,其與主機總線113以接口連接以在執(zhí)行軟件程序(例如,設(shè)備驅(qū)動器14或操作系統(tǒng)(OS) 20)中的指令期間向CPU 110提供存儲于RAM 112中的信息。更具體地,CPU 110首先將來自DSD 106的計算機可執(zhí)行指令加載到RAM 112的區(qū)域中。CPU 110然后可以執(zhí)行來自RAM 112的所存儲的過程指令。數(shù)據(jù)(諸如將存儲于DSD106、107、108或109中的數(shù)據(jù),或從DSD 106、107、108和109取回的數(shù)據(jù))也可以存儲于RAM112中,使得在執(zhí)行軟件程序期間如果這種軟件程序需要訪問和/或修改該數(shù)據(jù)的話,可以通過CPU 110訪問該數(shù)據(jù)。
[0024]如圖1所示,DSD106可以配置為存儲以下各項中的一個或多個:垃圾收集(GC)管理器10、應用12、設(shè)備驅(qū)動器14、文件系統(tǒng)16、轉(zhuǎn)換模塊18、0S 20和映射表28AC管理器10包括用于DSD 106、107、108和109的計算機可執(zhí)行指令,用于執(zhí)行如下文更詳細討論的垃圾收集過程。
[0025]在其它實施例中,GC管理器10、應用12、設(shè)備驅(qū)動器14、文件系統(tǒng)16、轉(zhuǎn)換模塊18、OS 20或映射表28中的任一個或多個可以駐留在DSD 106、107、108或109中。在一個這種例子中,GC管理器10可以駐留在DSD 106、107、108和109中的每個處,以便遍及系統(tǒng)100分布執(zhí)行GC管理器10。
[0026]應用12例如可以包括主機101可以執(zhí)行例如數(shù)據(jù)歸檔程序或多媒體程序的程序,其可以請求或修改存儲于DSD 107、108或109中的用戶數(shù)據(jù)。設(shè)備驅(qū)動器14在主機101上提供用于設(shè)備的軟件接口,所述設(shè)備例如是輸入設(shè)備102、顯示器設(shè)備104或DSD 106、107、108和109。另外,DSD 106可以存儲操作系統(tǒng)(0S)20,其包括內(nèi)核22、文件系統(tǒng)(FS)攔截24以及存儲棧26 ASD 106的內(nèi)容可以加載到主機101的常駐存儲器(例如,RAM 112),用于在操作主機1I期間執(zhí)行和/或狀態(tài)跟蹤。
[0027]文件系統(tǒng)(FS)16可以是在具有轉(zhuǎn)換模塊18的主機101的用戶空間中實現(xiàn)的文件系統(tǒng),以與FS攔截24以接口連接,如下文參考圖5的示例性實現(xiàn)環(huán)境更詳細討論的。
[0028]DSD 106還可以存儲映射表28,其可以用于在主機101所使用的邏輯地址(例如,邏輯塊地址)之間進行轉(zhuǎn)換或映射,以指代數(shù)據(jù)和對應的指示在DSD 106、107、108或109中的數(shù)據(jù)位置的物理地址(例如,物理塊地址)。如下文參考圖2更詳細討論的,映射表28可以用作用于疊瓦式磁記錄(SMR)介質(zhì)或固態(tài)介質(zhì)的間接系統(tǒng)的一部分,以允許將邏輯地址重新分配到DSD 106、107、108或109中的不同的物理位置。
[0029]如圖1所示,DSD 107、108和109分別存儲用戶數(shù)據(jù)30、33和34。用戶數(shù)據(jù)是主機101存儲或訪問的數(shù)據(jù)。
[0030]圖2描繪了根據(jù)實施例的DSD107的框圖。在圖2的實施例中,DSD 107包括用于存儲數(shù)據(jù)的固態(tài)存儲器130和磁盤138。對此,DSD 107可以被視為固態(tài)混合驅(qū)動器(SSHD ),因為其包括固態(tài)非易失性存儲器(NVM)介質(zhì)和磁盤NVM介質(zhì)。在其它實施例中,磁盤138或固態(tài)存儲器130中的每一個可以由多個硬盤驅(qū)動器(HDD)或多個固態(tài)驅(qū)動器(SSD)所分別替代,從而DSD 107包括HDD或SSD池。
[0031]DSD 107包括控制器124,其包括例如用于執(zhí)行指令的一個或多個處理器的電路,并且可以包括微控制器、數(shù)字信號處理器(DSP)、專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)、硬連線邏輯、模擬電路和/或其組合。在一種實現(xiàn)方式中,控制器124可以包括片上系統(tǒng)(SoC)。
[0032]主機接口 128配置為使得DSD 107與主機101以接口連接,并可以根據(jù)標準(例如,快速PCI (PCIe )、串行高級連接技術(shù)(SATA)或串行連接SCSI (SAS))進行接口連接。如本領(lǐng)域普通技術(shù)人員可以理解地,主機接口 128可以作為控制器124的一部分被包含。
[0033]傳感器141也連接到控制器124上。傳感器141可以向控制器124提供表明例如DSD17的高溫度或高振動條件的環(huán)境條件的輸入。
[0034]在圖2的例子中,通過主軸電動機(未示出)旋轉(zhuǎn)磁盤138 ASD 107還包括與致動器132的遠端連接的磁頭136,所述致動器132由音圈電動機(VCM) 134旋轉(zhuǎn)以相對磁盤138定位磁頭136。控制器124可以使用VCM控制信號36控制磁頭136的位置。
[0035]如本領(lǐng)域普通技術(shù)人員可以理解地,磁盤138可以以在磁盤138下徑向地對準的額外的磁盤形成磁盤組的部分。另外,磁頭136可以形成磁頭棧組件的包括額外的磁頭的部分,每個磁頭布置為從磁盤組中的磁盤的對應表面讀取數(shù)據(jù)或?qū)?shù)據(jù)寫入其中。
[0036]磁盤138包括用于在磁盤138的表面上存儲數(shù)據(jù)的多個徑向間隔的同心軌道(未示出)。磁盤138上的軌道可以被一起分組到軌道區(qū)中,其中每個軌道被劃分為沿著軌道在周向間隔的多個扇區(qū)。在圖2的例子中,磁盤138針對數(shù)據(jù)的重分配或垃圾收集(GC)包括可以用作來源部分的區(qū)140以及可以用作目的地部分的區(qū)142。
[0037]磁盤138可以包括具有由SMR導致的重疊軌道的一個或多個區(qū),以增加可以在磁盤的給定區(qū)域中存儲的數(shù)據(jù)量。如上所述,SMR軌道通常被順序?qū)懭胍员苊庥绊懴惹皩懭氲臄?shù)據(jù),并可以涉及使用間接系統(tǒng)來確保數(shù)據(jù)被順序?qū)懭?。當針對特定邏輯塊地址(LBA)修改數(shù)據(jù)時,間接系統(tǒng)允許DSD將修改后的數(shù)據(jù)順序?qū)懭氲叫挛恢?,并將該?shù)據(jù)的LBA從先前位置重新映射到新的位置。
[0038]在使用間接的SMR存儲系統(tǒng)中,GC可以用于再捕捉過時的數(shù)據(jù)所使用的空間。然而,執(zhí)行GC和重定位數(shù)據(jù)可以減少系統(tǒng)100的可以以其它方式用于主機101的性能帶寬。
[0039]考慮到上述情況,本公開提供了一種用于改善控制對數(shù)據(jù)的GC和重定位的可調(diào)諧方法。根據(jù)另一方面,本公開的一些實施例還包括數(shù)據(jù)管理過程和系統(tǒng),用于減少重定位數(shù)據(jù)的性能影響。
[0040]除了磁盤138外,DSD106的NVM介質(zhì)還包括具有塊131的固態(tài)存儲器130用于存儲數(shù)據(jù)。雖然本文的描述一般涉及固態(tài)存儲器,但可以理解地是,固態(tài)存儲器可以包括各種類型的存儲器設(shè)備中的一個或多個,例如,閃速集成電路、硫?qū)賀AM( C-RAM)、相變存儲器(PC-RAM或PRAM)、可編程金屬化單元RAM(PMC-RAM或PMCm)、雙向聯(lián)合存儲器(0UM)、阻抗RAM(RRAM)、NAND存儲器(例如,單層單元(SLC)存儲器、多層單元(MLC)存儲器或其任意組合)、NOR存儲器、EEPR0M、鐵電存儲器(FeRAM)、磁阻RAM(MRAM)、其它離散NVM芯片或其任意組合。
[0041]固態(tài)存儲器130可以使用間接系統(tǒng)來允許將LBA映射到不同的物理位置,作為用于更均勻使用塊132的損耗均衡過程的一部分。在一種實現(xiàn)方式中,將修改后的數(shù)據(jù)寫入到固態(tài)存儲器130中的新物理位置,并將數(shù)據(jù)的LBA從先前的物理位置重新映射到新的物理位置。至于SMR介質(zhì),固態(tài)存儲器130也可以使用GC過程來重新捕捉過時的或不再有效的數(shù)據(jù)所使用的空間。固態(tài)存儲器130可以包括在下文討論的GC和數(shù)據(jù)重定位過程中的來源或目的地部分。在一些實施例中,DSD 107可以包括固態(tài)存儲器130、包括磁盤138的旋轉(zhuǎn)磁介質(zhì)、和/或兩種非易失性存儲設(shè)備的組合。
[0042]在圖2中,易失性存儲器139例如可以包括動態(tài)隨機存取存儲器(DRAM),其可以由DSD 107用于臨時存儲數(shù)據(jù)。在易失性存儲器139中存儲的數(shù)據(jù)可以包括從NVM介質(zhì)(例如,磁盤138或固態(tài)存儲器130)中讀取出的數(shù)據(jù)、將寫入到NVM介質(zhì)中的數(shù)據(jù)、從DSD 107的固件40加載以由控制器124執(zhí)行的指令、或用于執(zhí)行固件40的數(shù)據(jù)。對此,圖2的易失性存儲器139示出為存儲固件40,其可以包括由控制器124執(zhí)行以實現(xiàn)如下所討論的數(shù)據(jù)重新分配和垃圾收集過程的指令。固件可以存儲于示出的非易失性存儲設(shè)備(例如,固態(tài)存儲器130和/或包括磁盤138的旋轉(zhuǎn)磁介質(zhì))之一中。
[0043]在操作中,DSD 107經(jīng)由主機接口 128從主機101接收讀取和寫入命令,用于從DSD107的NVM介質(zhì)讀取數(shù)據(jù)和寫入數(shù)據(jù)到DSD 107的NVM介質(zhì)。響應于來自主機101的寫入命令,控制器124可以在易失性存儲器139中緩沖針對寫入命令將寫入的數(shù)據(jù)。
[0044]對于將存儲于固態(tài)存儲器130內(nèi)的數(shù)據(jù),控制器124從主機接口128接收數(shù)據(jù),并可以在易失性存儲器139中緩沖該數(shù)據(jù)。在一種實現(xiàn)方式中,該數(shù)據(jù)隨后被編碼為電荷值,用于對固態(tài)存儲器130中的單元充電以存儲數(shù)據(jù)。
[0045]響應于對存儲于固態(tài)存儲器130中的數(shù)據(jù)的讀取命令,在一種實現(xiàn)方式中,控制器124讀取固態(tài)存儲器130中單元的當前值,并將當前值解碼為可以被轉(zhuǎn)移到主機101的數(shù)據(jù)。在經(jīng)由主機接口 128將數(shù)據(jù)轉(zhuǎn)移到主機101之前,可以通過控制器124緩沖這種數(shù)據(jù)。
[0046]對于將寫入到磁盤138中的數(shù)據(jù),控制器124可以將緩沖的數(shù)據(jù)編碼為寫入信號38,其被提供給磁頭136以將數(shù)據(jù)磁性地寫入到磁盤138的表面。
[0047]響應于針對存儲于磁盤138上的數(shù)據(jù)的讀取命令,控制器124經(jīng)由VCM控制信號36定位磁頭136,以磁性地讀取存儲于磁盤138的表面上的數(shù)據(jù)。磁頭136將作為讀取信號38的讀取數(shù)據(jù)發(fā)送到控制器124以供解碼,并且在易失性存儲器139中緩沖該數(shù)據(jù)以供轉(zhuǎn)移到主機 1010
[0048]示例性垃圾收集和數(shù)據(jù)重定位過程
[0049]圖3A是根據(jù)實施例的由主機101或DSD(例如,DSD107)執(zhí)行的垃圾收集過程的流程圖。在框302中,基于主機101定義的至少一個屬性,確定針對要存儲的數(shù)據(jù)的初始位置。主機101可以使用GC管理器10來定義至少一個屬性或GC策略,以調(diào)諧或控制應該在何處執(zhí)行垃圾收集(即,來源部分)、應該何時執(zhí)行GC、應該在何處重定位由GC獲得的有效數(shù)據(jù)(SP,目的地部分)、如何組織在目的地部分中的重定位的數(shù)據(jù)、或者在文件創(chuàng)建期間在何處初始存儲數(shù)據(jù)。
[0050]主機101可以定義的屬性可以包括數(shù)據(jù)的屬性,例如,數(shù)據(jù)的有效日期、數(shù)據(jù)的訪問頻率、數(shù)據(jù)的所有權(quán)或者數(shù)據(jù)的碎片化程度。主機101還可以定義作為垃圾收集的來源部分的條件或者用于存儲由GC操作獲得的有效數(shù)據(jù)的目的地部分的條件的屬性。
[0051]例如,主機101定義的屬性可以包括用于確定特定數(shù)據(jù)是否已經(jīng)到期的“數(shù)據(jù)年齡”或有效日期。數(shù)據(jù)年齡或有效日期可以基于諸如用以便移除超過特定年齡的所有或基本所有文件、或移除在特定時間段內(nèi)標記為刪除的文件的數(shù)據(jù)保持策略。在這種例子中,可以通過有效日期將數(shù)據(jù)分組到一起,使得具有相同有效日期的數(shù)據(jù)被一起分組到系統(tǒng)100的一部分(例如,特定邏輯卷、DSD或DSD的部分)中,使得整個部分被同時棄用,而無需重定位大量有效數(shù)據(jù)。
[0052]在另一例子中,主機101可以基于數(shù)據(jù)的訪問頻率定義屬性(即,“熱/7令”屬性),使得可以將被較不頻繁訪問的數(shù)據(jù)(即,“冷數(shù)據(jù)”)一起分組到系統(tǒng)100的部分中,或者使得可以將被較頻繁訪問的數(shù)據(jù)(即,“熱數(shù)據(jù)”)一起分組到系統(tǒng)100的部分中。較頻繁訪問的數(shù)據(jù)通常導致相比較不頻繁訪問的數(shù)據(jù)而言較多的數(shù)據(jù)用于GC或?qū)е滦枰l繁地進行重定位的數(shù)據(jù)。將頻繁訪問的數(shù)據(jù)分組到一個來源部分中可以因此普通地增強單個GC操作的效果,這是因為在頻繁訪問的數(shù)據(jù)中的來源部分中的單個GC操作相比在不包含同樣多的無效數(shù)據(jù)的來源部分中的多個GC操作將釋放較多的空間。換句話說,通過將較頻繁訪問的數(shù)據(jù)分組到一起,通常可以預處理系統(tǒng)100的特定部分以供數(shù)據(jù)重定位,并因此減少GC或數(shù)據(jù)重定位操作的總次數(shù)。
[0053]對此,主機101還可以定義屬性來包括在識別用于GC的來源部分時的碎片化級別的考慮,例如,通過在特定來源部分中執(zhí)行GC以提供最大的容量增益利用而獲得的容量或性能量。
[0054]主機101還可以基于數(shù)據(jù)的所有權(quán)來定義GC的屬性,使得特定用戶所擁有的數(shù)據(jù)被一起分組到系統(tǒng)100的部分中。如果該用戶的數(shù)據(jù)隨后需要被刪除或重定位,則對該用戶的數(shù)據(jù)的GC或重定位被更加隔離到系統(tǒng)100的特定部分,并且對系統(tǒng)的廣泛的性能具有較少影響。
[0055]如上所述,執(zhí)行GC管理器10的主機101還可以基于來源或目的地部分的條件來定義屬性。來源或目的地部分的這種條件可以例如包括:可靠性條件、環(huán)境條件、損耗級別、可用數(shù)據(jù)容量、距數(shù)據(jù)的先前用戶的距離、在來源和目的地部分之間可用的網(wǎng)絡(luò)帶寬、來源或目的地部分的可用性、或者在操作來源或目的地部分時的能量成本。
[0056]在一個例子中,屬性可以包括來源部分或目的地部分的可靠性條件,例如,磁頭136的狀態(tài)(例如,需要禁用的磁頭)或者當在磁盤138上寫入數(shù)據(jù)時遇到的錯誤級別。在另一例子中,主機101所定義的屬性可以識別遇到高級別錯誤的用于垃圾收集的來源部分,使得可以將數(shù)據(jù)重定位到具有較低級別錯誤的目的地部分。
[0057]在其它例子中,主機101可以定義屬性,使得將數(shù)據(jù)從已較經(jīng)常使用的來源部分重定位到較少使用的目的地部分(例如,基于損耗級別)。這通??梢栽试S介質(zhì)(例如,固態(tài)介質(zhì))有更長的壽命,或能夠減少重復向磁盤介質(zhì)的同一位置寫入的負面影響,如下文更詳細討論地。主機101還可以基于可用的數(shù)據(jù)容量來定義屬性,使得將數(shù)據(jù)重定位到具有較大可用數(shù)據(jù)容量的目的地部分。
[0058]在另一例子中,主機101可以定義環(huán)境條件,例如溫度或振動條件,使得將數(shù)據(jù)從經(jīng)歷高溫或高震動條件的來源部分重定位到經(jīng)歷較低溫或較低震動條件的目的地部分。
[0059]—個或多個屬性也可以考慮網(wǎng)絡(luò)考量,使得可以越快地訪問重定位的數(shù)據(jù),越有效地重定位數(shù)據(jù),或者使得數(shù)據(jù)重定位對系統(tǒng)性能具有較小的影響。在一個這種例子中,主機101基于數(shù)據(jù)的先前用戶的位置來定義至少一個屬性,使得將數(shù)據(jù)定位到離數(shù)據(jù)的先前用戶較近的物理位置。主機101還可以定義屬性,使得在來源部分和目的地部分存在最小的網(wǎng)絡(luò)帶寬,以改善在系統(tǒng)100中重定位數(shù)據(jù)的效率。
[0060]也可以考慮來源或目的地部分的可用性。在這種例子中,主機101可以基于來源或目的地部分的可用性來定義屬性,使得在來源或目的地部分處執(zhí)行較少的活動或操作。
[0061]在另一實現(xiàn)方式中,主機101可以定義關(guān)于對于操作來源和目的地部分的成本的屬性,使得例如將數(shù)據(jù)從具有較高操作成本的來源部分重定位到具有較低操作成本的目的地部分。
[0062]返回圖3A的過程,在框304中,基于至少一個屬性,從多個來源部分中識別用于GC操作的來源部分。在GC管理器10識別來源部分的實施例中,來源部分可以是系統(tǒng)100中特定的邏輯卷、DSD、或DSD的一部分。在DSD的控制器(例如,DSD 107的控制器124)識別來源部分的實施例中,來源部分可以是DSD 107的一部分,例如磁盤138上的區(qū)140。
[0063]在框306中,基于至少一個屬性,識別用于存儲由對來源部分進行垃圾收集而獲得的數(shù)據(jù)的目的地部分。在GC管理器10識別目的地部分的實施例中,目的地部分可以是系統(tǒng)100中特定的邏輯卷、DSD或DSD的一部分。在DSD的控制器識別目的地部分的實施例中,目的地部分可以是DSD的一部分,例如磁盤138上的區(qū)142。
[0064]在框308中,在來源部分中執(zhí)行向目的地部分的GC。如上所討論的,可以通過從來源部分向目的地部分拷貝有效數(shù)據(jù)并釋放來源部分中將被覆寫的無效或過時區(qū)域來執(zhí)行GC0
[0065]在框310中,將來源部分指定為用于新的GC操作的新的目的地部分。通過旋轉(zhuǎn)目的地部分,通常可以減少系統(tǒng)100的被重復用作目的地部分的特定部分上的不均勻損耗的可能性。對目的地部分的這種旋轉(zhuǎn)還可以幫助減輕與重復寫入磁盤介質(zhì)上的同一位置相關(guān)聯(lián)的問題,例如,鄰道干擾(AT I)或者寬域軌道擦除(WATER)。
[0066]圖3B是根據(jù)實施例的可以由主機101或由DSD(例如,DSD 107)執(zhí)行的數(shù)據(jù)一致性過程的流程圖。該過程可以結(jié)合圖3A的GC過程執(zhí)行,或者可以作為另一數(shù)據(jù)重定位過程的一部分執(zhí)行,以確保來自來源部分的被重定位的數(shù)據(jù)與目的地部分中的被重定位的數(shù)據(jù)之間的一致性,且減少對來源部分中性能的影響。
[0067]在框312中,基于由主機101定義的屬性來識別將被重定位的數(shù)據(jù)和/或目的地部分。如結(jié)合圖3A在上文討論的,屬性可以包括數(shù)據(jù)的屬性或系統(tǒng)100的條件。
[0068]在框314中,根據(jù)在框312中對數(shù)據(jù)和/或目的地部分的位置的識別,將數(shù)據(jù)從來源部分重定位到目的地部分。來源部分和目的地部分可以在例如具有圖2中的區(qū)140和142的同一DSD中,或者來源和目的地部分可以駐留在或包括不同的DSD,例如DSD 107和DSD 108。
[0069]在框316中,確定在框314中重定位數(shù)據(jù)時,是否對來源部分中的相關(guān)數(shù)據(jù)做出了改變。相關(guān)數(shù)據(jù)可以包括在框314中已經(jīng)以其它方式重定位的數(shù)據(jù)。例如,基于至少一個屬性未識別出用于框312中的重定位的、來源部分中的數(shù)據(jù)的改變,將不被認為是對相關(guān)數(shù)據(jù)的改變。在一些實現(xiàn)方式中,可以基于比較在框314中重定位數(shù)據(jù)之前和之后的元數(shù)據(jù)來確定改變。可以由使用基于寫入時拷貝(COW)的文件系統(tǒng)而獲得所述元數(shù)據(jù),所述文件系統(tǒng)在文件中有改變時生成元數(shù)據(jù)中的改變。掃描文件系統(tǒng)的元數(shù)據(jù),然后可以顯示是否發(fā)生了改變以及在何處改變。
[0070]如果在重定位期間改變了來源部分中的相關(guān)數(shù)據(jù),則在框318中將經(jīng)改變的相關(guān)數(shù)據(jù)從來源部分重定位到目的地部分,并在框320中結(jié)束過程。
[0071]圖3B的過程通常提供在來源和目的地部分之間的一致性,同時仍允許在框314中重定位數(shù)據(jù)時改變來源部分中的數(shù)據(jù)這一行為。在一些實施例中,改變來源部分中的相關(guān)數(shù)據(jù)可能在框318中被阻止,以進一步確保在來自來源部分的重定位的數(shù)據(jù)與在目的地部分中的重定位的數(shù)據(jù)之間的一致性。如果在重定位期間沒有改變相關(guān)數(shù)據(jù),則過程在框320中結(jié)束,而不執(zhí)行框318。
[0072]在其它實施例中,控制器124或主機101可以重復執(zhí)行框316和318,直到不存在對相關(guān)數(shù)據(jù)的改變。在對框316和318的每次迭代時,期望的是較少的改變,這是因為應該降低用于重定位數(shù)據(jù)的時間。一旦在來源部分中不再存在對相關(guān)數(shù)據(jù)的改變,則過程可以結(jié)束。
[0073]圖4根據(jù)實施例,描繪了包括主機101和DSD 106、107、108和109的示例性實現(xiàn)環(huán)境。如圖4所示,主機101包括用戶空間和內(nèi)核空間。
[0074]用戶空間包括GC管理器10、應用12以及用于在錯誤之后重構(gòu)文件系統(tǒng)的恢復模塊
19。恢復模塊19可以包括類似于檢查磁盤(CKDSK)或文件系統(tǒng)一致性檢查(FSCK)的恢復工具,但是在全系統(tǒng)級別上處理跨不同文件系統(tǒng)和/或系統(tǒng)100的DSD識別出的不一致性或錯誤。另外,恢復模塊19可以與GC管理器10協(xié)商以在重定位數(shù)據(jù)時確定來源或目的地部分。
[0075]如圖4所示,GC管理器10接受至少一個屬性或策略,其可以包括用于控制GC或DSD中的數(shù)據(jù)重定位的用戶可調(diào)諧參數(shù)。如上所討論的,至少一個屬性可以包括系統(tǒng)100的條件或存儲于系統(tǒng)100中的數(shù)據(jù)的屬性。至少一個屬性可以用于識別系統(tǒng)100的來源部分、目的地部分、執(zhí)行GC或數(shù)據(jù)重定位的時間、或?qū)⒈恢囟ㄎ坏奶囟〝?shù)據(jù)。
[0076]在確定何時或何處執(zhí)行GC時,GC策略或?qū)傩钥梢园ㄡ槍SD的期望的輸入輸出(1)使用,從而當期望具有較少的1使用時在驅(qū)動器上執(zhí)行GC,以便對系統(tǒng)性能具有較小的影響。1使用的歷史可以來自由主機101提供的信息或來自系統(tǒng)100中的DSD。在另一例子中,主機101可以基于與當日時間相關(guān)聯(lián)的1使用來定義屬性,從而在對系統(tǒng)性能具有較小影響時發(fā)生GC。
[0077]至少一個屬性還可以考慮系統(tǒng)資源(例如,處理、存儲或帶寬)的可用性,其可以包括評估系統(tǒng)100中的主機101的活動級別。在一個例子中,至少一個屬性可以指定在來源部分和目的地部分之間的連接資源的級別,以便減少用于重定位數(shù)據(jù)的時間。
[0078]參考圖4,GC管理器10可以將數(shù)據(jù)從目的地部分重定位到來源部分,并還可以影響文件系統(tǒng)的數(shù)據(jù)布置策略,如從GC管理器10到FS 32的虛線所指示的,其可以例如包括文件系統(tǒng)(如,在內(nèi)核空間中的Ext4或NILFS)。這可以允許基于由主機101定義的至少一個屬性來確定將存儲于系統(tǒng)100內(nèi)的數(shù)據(jù)的初始位置。通過基于至少一個屬性來對數(shù)據(jù)進行初始分組或合并,通常使得重定位數(shù)據(jù)更有效,這是因為數(shù)據(jù)是更少地跨系統(tǒng)100的不同部分來分散的。
[0079]在示出的實施例中,GC管理器10位于文件系統(tǒng)層之上,并可以查詢系統(tǒng)100的一部分以確定用于基于至少一個屬性來執(zhí)行GC的時間或部分。GC管理器10還可以包括較低級別的模塊,其可以執(zhí)行圖3A和3B的過程。在GC管理器10位于文件系統(tǒng)層之上的該例子中,可以識別有效的與到期的/刪除的數(shù)據(jù),而不依賴于SCSI/ΑΤΑ暗示或通知(例如,TR頂或UNMAP命令)。
[0080]內(nèi)核空間可以是由主機101執(zhí)行的OS20的一部分,并包括用于與DSD 106、107、108和109接口和聯(lián)網(wǎng)的存儲棧26AS 32通過與存儲棧26接口來組織存儲于系統(tǒng)100中的數(shù)據(jù)。另外,應用12可以使用FS 32來取回DSD 106、107、108和109中的作為用戶數(shù)據(jù)的數(shù)據(jù)或在DSD 106、107、108和109中將數(shù)據(jù)作為用戶數(shù)據(jù)來存儲。
[0081 ] 圖5描繪了根據(jù)實施例的包括主機101和DSD 106、107、108和109的另一實現(xiàn)環(huán)境。在圖5的例子中,主機101執(zhí)行GC管理器10、應用12和恢復模塊19,如圖4的示例性實現(xiàn)環(huán)境一樣。不像圖4的實現(xiàn)環(huán)境,圖5的例子還包括在用戶空間中的FS 16和轉(zhuǎn)換模塊18以及在內(nèi)核空間中的FS攔截24。
[0082]FS攔截24與應用12接口,并可以攔截讀取和寫入命令,并將命令傳遞給用戶空間中的FS 16oFS 16可以包括實現(xiàn)COW的文件系統(tǒng),例如線性磁帶文件系統(tǒng)(LTFS)。如上所述,基于COW的文件系統(tǒng)可以允許在數(shù)據(jù)重定位期間通過針對改變來掃描文件系統(tǒng)的元數(shù)據(jù)而相對快速地識別相關(guān)數(shù)據(jù)的改變。
[0083]對其本身,F(xiàn)S16生成包括塊地址的命令,所述塊地址表示與該命令相關(guān)聯(lián)的元數(shù)據(jù)或數(shù)據(jù)的邏輯地址。轉(zhuǎn)換模塊18接受所述命令,并可以將邏輯地址轉(zhuǎn)換為針對特定DSD的設(shè)備地址和/或在不同接口協(xié)議(例如,ATA、SCSI)之間進行轉(zhuǎn)換。設(shè)備地址還可以識別在存儲介質(zhì)的區(qū)(例如,DSD 107的區(qū)142)中的位置。
[0084]轉(zhuǎn)換模塊18利用針對存儲介質(zhì)的相應的讀取或?qū)懭朊顏韺⒔?jīng)轉(zhuǎn)換的設(shè)備地址傳遞給存儲棧26。實際上,轉(zhuǎn)換模塊18可以是插件式(plug-1n)驅(qū)動器,而不需要修改FS16。
[0085]其它實施例可以包括不同于圖4和5所示的例子的系統(tǒng)實現(xiàn)方式。例如,在其它實施例中,轉(zhuǎn)換模塊18可以反而是內(nèi)核空間的一部分。對此,可以將一些模塊分配給與所示不同的層/空間,并且可以將一些分裂成額外的模塊或組合成較少的模塊。
[0086]圖6A是根據(jù)實施例的可以由主機1I或由DSD(例如,DSD 107)執(zhí)行的GC過程的流程圖。在框602中,基于由主機101定義的至少一個屬性,確定將存儲于系統(tǒng)100中的數(shù)據(jù)的初始位置。如上所述,基于該至少一個屬性的數(shù)據(jù)的該初始布置稍后可以提高基于該至少一個屬性的GC或數(shù)據(jù)重定位的效率,這是因為用于重定位的相關(guān)數(shù)據(jù)不是跨系統(tǒng)100中的不同位置散布的。
[0087]在框604中,確定用于執(zhí)行GC的時間。可以確定用于GC的時間,以便減少對系統(tǒng)1性能的影響。因此,主機101或DSD控制器(例如,控制器124)可以基于處理資源的可用性、來源部分或目的地部分的可用性、當日時間或主機101的活動級別來確定何時執(zhí)行GC。對此,可以在期望在服務(wù)(serving)其它主機命令中存在較少的活動時發(fā)生GC,從而在服務(wù)主機命令時GC對系統(tǒng)100的性能具有較少影響。例如,用于GC的時間可以是歷史上具有較少活動的當日時間,從而GC并不干擾從主機101服務(wù)命令。1使用模式可以由DSD控制器學習或可以由主機101觀察/提供。另外,如果修改了來源部分中的相關(guān)數(shù)據(jù),則主機101或DSD控制器可以將針對來源部分的GC延期。
[0088]在框606中,基于至少一個屬性,從多個來源部分識別用于GC操作的來源部分。在GC管理器10識別來源部分的實施例中,來源部分可以是系統(tǒng)100中的特定邏輯卷、DSD或DSD的一部分。在DSD的控制器(例如,DSD 1 7的控制器124)識別來源部分的實施例中,來源部分可以是DSD 107的一部分,例如磁盤138上的區(qū)140。
[0089]在框608中,基于至少一個屬性,識別用于存儲由對來源部分進行垃圾收集而獲得的數(shù)據(jù)的目的地部分。在GC管理器10識別目的地部分的實施例中,目的地部分可以是系統(tǒng)100中的特定邏輯卷、DSD或DSD的一部分。因此,來源和目的地部分可以位于同一卷/DSD/DSD的一部分上或位于不同的卷/DSD/DSD的一部分上。在DSD 107的控制器124識別目的地部分的實施例中,目的地部分可以是DSD 107的一部分,例如磁盤138上的區(qū)142。
[0090]在框610中,通過識別來源部分中的有效數(shù)據(jù)來執(zhí)行GC。有效數(shù)據(jù)是尚未過時的、數(shù)據(jù)的最近版本。在框612中,將有效數(shù)據(jù)復制到目的地部分,并根據(jù)至少一個屬性對所述有效數(shù)據(jù)進行組織。在一個例子中,可以對有效數(shù)據(jù)進行組織,從而通過到期日期、訪問頻率或數(shù)據(jù)所有權(quán)來對目的地部分中的復制的數(shù)據(jù)進行組織。
[0091]在框614中,來源部分被指定為用于新的GC操作的新的目的地部分。如上結(jié)合圖3A所述,旋轉(zhuǎn)目的地部分可以減少系統(tǒng)100的可能被重復用作目的地部分的特定部分上的不均勻損耗。對目的地部分的這種旋轉(zhuǎn)還可以有助于減少與在磁盤介質(zhì)上的同一位置重復地寫入相關(guān)聯(lián)的問題,例如,鄰道干擾(ATI)或者寬域軌道擦除(WATER)。
[0092]在框616中,在完成GC之后將目的地部分設(shè)置為可用于存儲數(shù)據(jù)。這允許目的地部分除了用于存儲來自上述GC過程的復制的數(shù)據(jù)外,還用于存儲用戶數(shù)據(jù)。在將來的GC操作中,目的地部分隨后可以用作用于執(zhí)行GC的來源部分。
[0093]圖6B是根據(jù)實施例,可以由主機101或由DSD(例如,DSD107)執(zhí)行的數(shù)據(jù)一致性過程的流程圖。該過程可以結(jié)合圖3A或6A的GC過程執(zhí)行,或者可以作為另一數(shù)據(jù)重定位過程的一部分執(zhí)行,以在對來源部分的性能具有減少的影響的情況下,確保在來自來源部分的重定位的數(shù)據(jù)與在目的地部分中的重定位的數(shù)據(jù)之間的一致性。
[0094]在框618中,確定用于重定位數(shù)據(jù)的時間。如上所述,可以確定用于數(shù)據(jù)重定位的時間,從而減少對系統(tǒng)1性能的影響。因此,主機101或DSD控制器(例如,控制器124)可以基于處理資源的可用性、來源部分或目的地部分的可用性、當日時間或主機101的活動級別來確定何時重定位數(shù)據(jù)。對此,可以在期望在服務(wù)(serving)其它主機命令中存在較少的活動時發(fā)生數(shù)據(jù)重定位,從而在服務(wù)主機命令時數(shù)據(jù)重定位對系統(tǒng)100的性能具有較少影響。例如,用于數(shù)據(jù)重定位的時間可以是歷史上具有較少活動的當日時間,從而數(shù)據(jù)重定位并不干擾從主機101服務(wù)命令。1使用模式可以由DSD控制器學習或可以由主機101提供。另外,如果修改了來源部分中的相關(guān)數(shù)據(jù),則主機101或DSD控制器可以將針對來源部分的GC延期。
[0095]在框62 O中,基于由主機1I定義的屬性,識別要被重定位的數(shù)據(jù)和/或目的地部分。如上所討論的,屬性可以包括數(shù)據(jù)的屬性或系統(tǒng)100的條件。
[0096]在框622中,根據(jù)在框620中對數(shù)據(jù)和/或目的地部分的位置的識別,將數(shù)據(jù)從來源部分重定位到目的地部分。來源部分和目的地部分可以位于例如具有圖2中的區(qū)140和142的同一DSD中,或者來源或目的地部分可以駐留在不同的DSD中或包括不同的DSD (例如,DSD107和108)。
[0097]在框624中,確定在框622中重定位數(shù)據(jù)時是否對來源部分中的相關(guān)數(shù)據(jù)做出了改變。相關(guān)數(shù)據(jù)可以包括在框622中已經(jīng)以其它方式重定位的數(shù)據(jù)。例如,基于至少一個屬性未識別出用于框620中的重定位的、來源部分中的數(shù)據(jù)的改變,可以不被認為是對相關(guān)數(shù)據(jù)的改變。在一些實現(xiàn)方式中,可以基于比較在重定位數(shù)據(jù)之前和之后的元數(shù)據(jù)來確定改變。通過不在重定位數(shù)據(jù)期間阻礙來源部分中的改變,則重定位數(shù)據(jù)不會妨礙向來源部分寫入命令的動作。
[0098]如果在框622中在重定位期間沒有改變相關(guān)數(shù)據(jù),則過程進行到框632以將目的地部分設(shè)置為可用于存儲數(shù)據(jù)。
[0099]在另一方面,如果在框622中重定位期間改變了來源部分中的相關(guān)數(shù)據(jù),則在框626中將經(jīng)改變的相關(guān)數(shù)據(jù)從來源部分重定位到目的地部分。關(guān)于框622,重定位經(jīng)改變的相關(guān)數(shù)據(jù)不能防止在來源部分中寫入命令的動作。由于在框626中對任何經(jīng)改變的相關(guān)數(shù)據(jù)進行重定位的時間可能小于在框622中初始地重定位數(shù)據(jù)的時間,因此在框626中重定位經(jīng)改變的相關(guān)數(shù)據(jù)時,不太可能對該相關(guān)數(shù)據(jù)做出額外的改變。
[0100]在框628中執(zhí)行另一檢查,以確定在框626中重定位經(jīng)改變的相關(guān)數(shù)據(jù)時是否對額外的相關(guān)數(shù)據(jù)做出了任何改變。如果是,則在框630中將額外改變的相關(guān)數(shù)據(jù)從來源部分重定位到目的地部分,同時阻止對來源部分的進一步的改變。
[0101]在其它實施例中,可以對框624和626進行更多次迭代,或者可以重復執(zhí)行框624和626,直到在不阻止改變的情況下,在來源部分不再改變相關(guān)數(shù)據(jù)。這通常允許在數(shù)據(jù)重定位期間來源部分的1性能維持基本不變,同時維持在存儲于來源部分和目的地部分的相關(guān)數(shù)據(jù)之間的一致性。在對框624和626的每次迭代時,期望的是較少的改變,這是因為應該降低用于重定位數(shù)據(jù)的時間。
[0102]在框632中,將目的地部分設(shè)置為可用于存儲數(shù)據(jù)。這允許目的地部分除了用于存儲來自上述數(shù)據(jù)重定位過程的重定位的數(shù)據(jù)外,還用于存儲用戶數(shù)據(jù)。在將來的數(shù)據(jù)重定位操作中,目的地部分隨后可以用作來源部分。
[0103]在框634中,識別用于進一步重定位數(shù)據(jù)的、新的目的地部分。識別新的目的地部分可以基于由主機101定義的至少一個屬性,而不考慮先前使用的目的地部分,從而目的地部分在系統(tǒng)100中旋轉(zhuǎn)。
[0104]圖7是根據(jù)實施例,示出了將區(qū)分配作為用于GC的目的地部分以及將剩余區(qū)中的每個分配作為由主機101用于存儲數(shù)據(jù)的邏輯卷的概念圖。在圖7中,區(qū)0、1和2中的每個經(jīng)由針對所述區(qū)的文件系統(tǒng)和映射表28分別映射至卷B、C和A。在其它實施例中,不同的區(qū)中的每個皆可以使用不同的文件系統(tǒng)。
[0105]在圖7中的單個區(qū)可以包括磁盤的特定物理部分,例如磁盤138的區(qū)140或區(qū)142;或者單個區(qū)可以包括固態(tài)存儲器的一部分,例如固態(tài)存儲器130中的一個或多個塊131。在其它實施例中,單個區(qū)可以包括整個磁盤表面或整個DSD。
[0106]卷的陰影以及區(qū)的對應陰影示出了映射對應性以及每個卷/區(qū)的碎片化級別。卷/區(qū)的較暗陰影表示卷/區(qū)的碎片化級別較高。
[0107]區(qū)N是圖7中的漂浮備用區(qū),用于存儲從另一區(qū)的GC而獲得的數(shù)據(jù)。例如,按照以上針對圖3A或6A描述的GC過程,可以對區(qū)I進行垃圾收集,將其收集到區(qū)N中或者一組漂浮備用區(qū)中的任意一個或多個中。在完成GC之后,區(qū)N被作為新的卷C,并且區(qū)1(先前映射到卷C)被分配為用于后續(xù)GC操作的新的區(qū)N。通過旋轉(zhuǎn)目的地部分,通??梢詼p少用于存儲由GC獲得的數(shù)據(jù)的特定區(qū)域上的損耗。另外,將具有較少使用的特定區(qū)作為目標或識別為目的地部分。然后,主機定義的屬性可以基于對目的地部分的先前使用,從而具有較低使用或損耗的區(qū)被識別為目的地部分。在其它實施例中,區(qū)N可以包括用于存儲從GC獲得的數(shù)據(jù)的多個區(qū)。
[0108]圖8是根據(jù)實施例,示出了將多個區(qū)分配給邏輯卷以及將一個區(qū)分配為用于GC的目的地部分的概念圖。在圖8中,區(qū)O到N-1被映射到單個邏輯卷。將多個區(qū)映射或分配到單個邏輯卷可以用于容納尺寸可能超過區(qū)的尺寸的大文件。這種大文件例如可以覆蓋磁盤板表面,并具有上千兆字節(jié)的尺寸。
[0109]在其它實施例中,將較少數(shù)量的區(qū)映射到單個邏輯卷。例如,第一對區(qū)可以映射到第一邏輯卷,且第二對區(qū)可以映射到第二邏輯卷。另外,其它實現(xiàn)方式可以包括多個區(qū)到單個區(qū)的CG或者單個區(qū)到多個區(qū)的GC。
[0110]與圖7—樣,圖8中的單個區(qū)可以包括磁盤的特定物理部分,例如,磁盤138的區(qū)140或區(qū)142;或者單個區(qū)可以包括固態(tài)存儲器的一部分,例如,固態(tài)存儲器130中的一個或多個塊131。在其它實施例中,單個區(qū)可以包括整個磁盤表面或整個DSD。
[0111]與圖7的實現(xiàn)方式形成對比的是,在圖8中描繪的實現(xiàn)方式可以允許向用戶級別隱藏GC過程,因為其在映射表28外并駐留在比文件系統(tǒng)低的級別。
[0112]灰色陰影指示整個卷的碎片化級別是對應區(qū)的碎片化級別的平均。利用具有用作漂浮備份區(qū)或可以旋轉(zhuǎn)的目的地部分的區(qū)N,以區(qū)的級別來執(zhí)行如圖3A或6A中的GC過程。當完成GC過程時,可以經(jīng)由文件系統(tǒng)和映射表28將區(qū)N映射到卷,并且將先前映射到邏輯卷的區(qū)之一制定為用作新的漂浮備份區(qū)或目的地部分。
[0113]其它實施例
[0114]本領(lǐng)域普通技術(shù)人員將理解的是,結(jié)合本文公開的例子來描述的各種說明性邏輯塊、模塊和過程可以實現(xiàn)為電子硬件、計算機軟件或兩者的組合。此外,上述過程可以具體實現(xiàn)于使得處理器或計算機完成或執(zhí)行某些功能的計算機可讀介質(zhì)上。
[0115]為了清楚地說明硬件和軟件的可交換性,上面對各種說明性部件、塊和模塊均圍繞其功能進行了總體描述。至于這種功能是實現(xiàn)為硬件還是軟件,取決于具體的應用和對整個系統(tǒng)所施加的設(shè)計約束條件。本領(lǐng)域普通技術(shù)人員可以針對每個特定應用以變通的方式實現(xiàn)所描述的功能,但是這種實現(xiàn)決策不應該被解釋為導致背離本公開的范圍。
[0116]可以利用被設(shè)計為執(zhí)行本文中所描述功能的通用處理器、數(shù)字信號處理器(DSP)、專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)或其它可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件或者其任意組合,來實現(xiàn)或執(zhí)行結(jié)合本文所公開的示例所描述的各種示例性的邏輯框、單元、模塊和控制器。通用處理器可以是微處理器,或者,該處理器也可以是任何常規(guī)的處理器、控制器、微控制器或者狀態(tài)機。處理器還可以實現(xiàn)為計算設(shè)備的組合,例如,DSP和微處理器的組合、多個微處理器、一個或多個微處理器與DSP內(nèi)核的結(jié)合,或者任何其它此種結(jié)構(gòu)。
[0117]結(jié)合本文公開的例子所描述的方法或過程的活動可以直接實現(xiàn)在硬件中、由處理器執(zhí)行的軟件模塊中、或兩者的組合中。方法或算法的步驟還可以以例子中提供的次序的替代次序來執(zhí)行。軟件模塊可以駐留在RAM存儲器、閃存、ROM存儲器、EPROM存儲器、EEPROM存儲器、寄存器、硬盤、可移除介質(zhì)、光介質(zhì)或本領(lǐng)域已知的任意其它形式的存儲介質(zhì)中。示例性存儲介質(zhì)耦合到處理器上,從而處理器可以從存儲介質(zhì)讀取信息以及將信息寫入到存儲介質(zhì)中。在可替代方案中,存儲介質(zhì)可以集成到處理器。處理器和存儲介質(zhì)可以駐留在專用集成電路(ASIC)上。
[0118]提供對所公開的示例性實施例的上述描述,以使得本領(lǐng)域任何普通技術(shù)人員能夠利用或使用本公開內(nèi)容的實施例。對這些例子的各種修改對本領(lǐng)域普通技術(shù)人員而言將是顯而易見的,并且在不背離本公開內(nèi)容的精神或范圍的情況下,本文公開的原理可以應用于其它例子。在所有方面講,所描述的實施例認為是僅是說明性的而非限制性的,并且因此,本公開內(nèi)容的范圍由后續(xù)權(quán)利要求而不是前述描述指示。落入權(quán)利要求的等同物的含義和范圍內(nèi)的所有改變將被涵括于權(quán)利要求的范圍內(nèi)。
【主權(quán)項】
1.一種用于在包括至少一個數(shù)據(jù)存儲設(shè)備(DSD)和主機的數(shù)據(jù)存儲系統(tǒng)中管理數(shù)據(jù)的方法,所述方法包括: 基于由所述主機定義的至少一個屬性,確定將存儲于所述至少一個DSD中的數(shù)據(jù)的初始位置; 基于由所述主機定義的所述至少一個屬性,從所述至少一個DSD中的多個來源部分識別用于垃圾收集操作的來源部分; 基于由所述主機定義的所述至少一個屬性,識別所述至少一個DSD中的用于存儲由垃圾收集操作獲得的數(shù)據(jù)的目的地部分; 執(zhí)行將在所述來源部分中的數(shù)據(jù)向所述目的地部分的垃圾收集;以及 在完成垃圾收集之后,將所述來源部分指定為用于新的垃圾收集操作的新的目的地部分。2.根據(jù)權(quán)利要求1所述的方法,還包括: 在所述垃圾收集期間識別在所述來源部分中的有效數(shù)據(jù);以及 根據(jù)所述至少一個屬性,在所述目的地部分中組織所述有效數(shù)據(jù)。3.根據(jù)權(quán)利要求1所述的方法,還包括:基于所述至少一個屬性,在所述垃圾收集期間識別在所述來源部分中的有效數(shù)據(jù),從而將所述有效數(shù)據(jù)與在所述目的地部分中具有所述至少一個屬性的其它數(shù)據(jù)分組到一起。4.根據(jù)權(quán)利要求1所述的方法,其中,所述至少一個屬性包括以下各項中的至少一項:所述數(shù)據(jù)的到期日期、對所述數(shù)據(jù)的訪問頻率、所述數(shù)據(jù)的所有權(quán)、或所述數(shù)據(jù)的碎片化級別。5.根據(jù)權(quán)利要求1所述的方法,其中,所述至少一個屬性包括:所述來源部分或所述目的地部分的可靠性條件、所述來源部分或所述目的地部分的環(huán)境條件、所述來源部分或所述目的地部分的損耗級別、所述來源部分或所述目的地部分的可用數(shù)據(jù)容量、所述來源部分或所述目的地部分距所述數(shù)據(jù)的先前用戶的距離、所述來源部分和所述目的地部分之間的可用的網(wǎng)絡(luò)帶寬、所述來源部分或所述目的地部分的可用性、或者操作所述來源部分或所述目的地部分的能量成本。6.根據(jù)權(quán)利要求5所述的方法,其中,所述來源部分或所述目的地部分的所述環(huán)境條件包括:溫度條件或振動條件。7.根據(jù)權(quán)利要求5所述的方法,其中,所述來源部分或所述目的地部分的可靠性條件包括:用于寫入數(shù)據(jù)的磁頭的狀態(tài)或者當寫入數(shù)據(jù)時遇到的錯誤級別。8.根據(jù)權(quán)利要求1所述的方法,還包括:確定用于執(zhí)行垃圾收集的時間。9.根據(jù)權(quán)利要求8所述的方法,其中,確定用于垃圾收集的時間是基于以下各項中的至少一項的:處理資源的可用性、所述目的地部分或所述來源部分的可用性、當日時間、或者所述主機的活動級別。10.根據(jù)權(quán)利要求1所述的方法,其中,在完成垃圾收集之后,所述方法還包括將所述目的地部分設(shè)置為可用于存儲數(shù)據(jù)。11.根據(jù)權(quán)利要求1所述的方法,其中,所述來源部分和所述目的地部分位于所述至少一個DSD中的分別的DSD中。12.根據(jù)權(quán)利要求1所述的方法,其中,所述來源部分和所述目的地部分位于所述至少一個DSD的同一DSD中。13.根據(jù)權(quán)利要求1所述的方法,其中,所述至少一個DSD包括用于存儲數(shù)據(jù)的多個區(qū),并且其中,所述方法還包括: 將所述多個區(qū)中的一個區(qū)分配為所述目的地部分;以及 將所述多個區(qū)中的每個剩余區(qū)分配為由所述主機用于存儲數(shù)據(jù)的邏輯卷。14.根據(jù)權(quán)利要求1所述的方法,其中,所述至少一個DSD包括用于存儲數(shù)據(jù)的多個區(qū),并且其中,所述方法還包括: 將所述多個區(qū)中的一個區(qū)分配為所述目的地部分;以及 將所述多個區(qū)中的多個剩余區(qū)分配為由所述主機用于存儲數(shù)據(jù)的邏輯卷。15.一種用于存儲數(shù)據(jù)的數(shù)據(jù)存儲系統(tǒng),所述數(shù)據(jù)存儲系統(tǒng)包括: 主機,其包括處理器;以及 至少一個數(shù)據(jù)存儲設(shè)備(DSD ),其與所述主機通信; 其中,所述處理器被配置為進行以下操作: 定義用于在所述至少一個DSD中執(zhí)行垃圾收集操作的至少一個屬性; 基于所述至少一個屬性,確定將存儲于所述至少一個DSD中的數(shù)據(jù)的初始位置; 基于所述至少一個屬性,從所述至少一個DSD中的多個來源部分識別用于垃圾收集操作的來源部分; 基于所述至少一個屬性,識別所述至少一個DSD中的用于存儲由所述垃圾收集操作獲得的數(shù)據(jù)的目的地部分; 執(zhí)行將在所述來源部分中的數(shù)據(jù)向所述目的地部分的垃圾收集;以及在完成所述垃圾收集之后,將所述來源部分指定為用于新的垃圾收集操作的新的目的地部分。16.根據(jù)權(quán)利要求15所述的數(shù)據(jù)存儲系統(tǒng),其中,所述處理器還配置為: 在所述垃圾收集期間識別在所述來源部分中的有效數(shù)據(jù);以及 根據(jù)所述至少一個屬性,在所述目的地部分中組織所述有效數(shù)據(jù)。17.根據(jù)權(quán)利要求15所述的數(shù)據(jù)存儲系統(tǒng),其中,所述處理器還配置為:基于所述至少一個屬性,在所述垃圾收集期間識別在所述來源部分中的有效數(shù)據(jù),從而將所述有效數(shù)據(jù)與在所述目的地部分中具有所述至少一個屬性的其它數(shù)據(jù)分組到一起。18.根據(jù)權(quán)利要求15所述的數(shù)據(jù)存儲系統(tǒng),其中,所述至少一個屬性包括以下各項中的至少一項:所述數(shù)據(jù)的到期日期、對所述數(shù)據(jù)的訪問頻率、所述數(shù)據(jù)的所有權(quán)、或所述數(shù)據(jù)的碎片化級別。19.根據(jù)權(quán)利要求15所述的數(shù)據(jù)存儲系統(tǒng),其中,所述至少一個屬性包括:所述來源部分或所述目的地部分的可靠性條件、所述來源部分或所述目的地部分的環(huán)境條件、所述來源部分或所述目的地部分的損耗級別、所述來源部分或所述目的地部分的可用數(shù)據(jù)容量、所述來源部分或所述目的地部分距所述數(shù)據(jù)的先前用戶的距離、所述來源部分和所述目的地部分之間的可用的網(wǎng)絡(luò)帶寬、所述來源部分或所述目的地部分的可用性、或者操作所述來源部分或所述目的地部分的能量成本。20.根據(jù)權(quán)利要求19所述的數(shù)據(jù)存儲系統(tǒng),其中,所述來源部分或所述目的地部分的所述環(huán)境條件包括:溫度條件或振動條件。21.根據(jù)權(quán)利要求19所述的數(shù)據(jù)存儲系統(tǒng),其中,所述來源部分或所述目的地部分的所述可靠性條件包括:用于寫入數(shù)據(jù)的磁頭的狀態(tài)或者當寫入數(shù)據(jù)時遇到的錯誤級別。22.根據(jù)權(quán)利要求15所述的數(shù)據(jù)存儲系統(tǒng),其中,所述處理器還配置為確定用于執(zhí)行垃圾收集的時間。23.根據(jù)權(quán)利要求22所述的數(shù)據(jù)存儲系統(tǒng),其中,所述處理器還配置為基于以下各項中的至少一項確定用于垃圾收集的所述時間:處理資源的可用性、所述目的地部分或所述來源部分的可用性、當日時間、或者所述主機的活動級別。24.根據(jù)權(quán)利要求15所述的數(shù)據(jù)存儲系統(tǒng),其中,所述處理器還配置為:在完成所述垃圾收集之后,將所述目的地部分設(shè)置為可用于存儲數(shù)據(jù)。25.根據(jù)權(quán)利要求15所述的數(shù)據(jù)存儲系統(tǒng),其中,所述來源部分和所述目的地部分位于所述至少一個DSD的分別的DSD中。26.根據(jù)權(quán)利要求15所述的數(shù)據(jù)存儲系統(tǒng),其中,所述來源部分和所述目的地部分位于所述至少一個DSD的同一DSD中。27.根據(jù)權(quán)利要求15所述的數(shù)據(jù)存儲系統(tǒng),其中,所述至少一個DSD包括用于存儲數(shù)據(jù)的多個區(qū),并且其中,所述處理器還配置為: 將所述多個區(qū)中的一個區(qū)分配為所述目的地部分;以及 將所述多個區(qū)中的每個剩余區(qū)分配為由所述主機用于存儲數(shù)據(jù)的邏輯卷。28.根據(jù)權(quán)利要求15所述的數(shù)據(jù)存儲系統(tǒng),其中,所述至少一個DSD包括用于存儲數(shù)據(jù)的多個區(qū),并且其中,所述處理器還配置為: 將所述多個區(qū)中的一個區(qū)分配為所述目的地部分;以及 將所述多個區(qū)中的多個剩余區(qū)分配為由所述主機用于存儲數(shù)據(jù)的邏輯卷。29.—種與主機通信的數(shù)據(jù)存儲設(shè)備(DSD),所述DSD包括: 非易失性存儲器,其用于存儲數(shù)據(jù);以及 控制器,其配置為: 接收由所述主機定義的用于在所述非易失性存儲器中執(zhí)行垃圾收集操作的至少一個屬性; 基于由所述主機定義的所述至少一個屬性,在所述非易失性存儲器中確定將存儲于所述DSD中的數(shù)據(jù)的初始位置; 基于由所述主機定義的所述至少一個屬性,從所述非易失性存儲器中的多個來源部分識別用于垃圾收集操作的來源部分; 基于由所述主機定義的所述至少一個屬性,識別在所述非易失性存儲器中的用于存儲由所述垃圾收集操作獲得的數(shù)據(jù)的目的地部分; 執(zhí)行將在所述來源部分中的數(shù)據(jù)向所述目的地部分的垃圾收集;以及 在完成垃圾收集之后,將所述來源部分指定為用于新的垃圾收集操作的新的目的地部分。30.根據(jù)權(quán)利要求29所述的DSD,其中,所述控制器還配置為: 在所述垃圾收集期間識別在所述來源部分中的有效數(shù)據(jù);以及 根據(jù)所述至少一個屬性,在所述目的地部分中組織所述有效數(shù)據(jù)。31.根據(jù)權(quán)利要求29所述的DSD,其中,所述控制器還配置為:基于所述至少一個屬性,在所述垃圾收集期間識別在所述來源部分中的有效數(shù)據(jù),從而將所述有效數(shù)據(jù)與在所述目的地部分中具有所述至少一個屬性的其它數(shù)據(jù)分組到一起。32.根據(jù)權(quán)利要求29所述的DSD,其中,所述至少一個屬性包括以下各項中的至少一項:所述數(shù)據(jù)的到期日期、對所述數(shù)據(jù)的訪問頻率、所述數(shù)據(jù)的所有權(quán)、或所述數(shù)據(jù)的碎片化級別。33.根據(jù)權(quán)利要求29所述的DSD,其中,所述至少一個屬性包括:來所述源部分或所述目的地部分的可靠性條件、所述來源部分或所述目的地部分的可用數(shù)據(jù)容量、所述來源部分或所述目的地部分的可用性、或者所述來源部分或所述目的地部分的損耗級別。34.根據(jù)權(quán)利要求33所述的DSD,其中,所述來源部分或所述目的地部分的所述可靠性條件包括:用于寫入數(shù)據(jù)的磁頭的狀態(tài)或者當寫入數(shù)據(jù)時遇到的錯誤級別。35.根據(jù)權(quán)利要求29所述的DSD,其中,所述控制器還配置為:確定用于執(zhí)行垃圾收集的時間。36.根據(jù)權(quán)利要求35所述的DSD,其中,所述控制器還配置為基于以下各項中的至少一項來確定用于垃圾收集的所述時間:處理資源的可用性、所述目的地部分或所述來源部分的可用性、當日時間、或者所述主機的活動級別。37.根據(jù)權(quán)利要求29所述的DSD,其中,所述控制器還配置為:在完成所述垃圾收集之后,將所述目的地部分設(shè)置為可用于存儲數(shù)據(jù)。38.根據(jù)權(quán)利要求29所述的DSD,其中,所述非易失性存儲器包括用于存儲數(shù)據(jù)的多個區(qū),并且其中,所述控制器還配置為: 將所述多個區(qū)中的一個區(qū)分配為所述目的地部分;以及 將所述多個區(qū)中的每個剩余區(qū)分配為由所述主機用于存儲數(shù)據(jù)的邏輯卷。39.根據(jù)權(quán)利要求29所述的DSD,其中,所述非易失性存儲器包括用于存儲數(shù)據(jù)的多個區(qū),并且其中,所述控制器還配置為: 將所述多個區(qū)中的一個區(qū)分配為所述目的地部分;以及 將所述多個區(qū)中的多個剩余區(qū)分配為由所述主機用于存儲數(shù)據(jù)的邏輯卷。40.—種用于在包括多個數(shù)據(jù)存儲設(shè)備(DSD)和主機的數(shù)據(jù)存儲系統(tǒng)中管理數(shù)據(jù)的方法,所述方法包括: 基于由所述主機定義的至少一個屬性,識別將從所述多個DSD的來源部分重定位到所述多個DSD的目的地部分的數(shù)據(jù)和/或針對所述目的地部分的位置; 根據(jù)對將重定位的所述數(shù)據(jù)和/或針對所述目的地部分的所述位置的所述識別,將所述數(shù)據(jù)從所述來源部分重定位到所述目的地部分; 確定在將所述數(shù)據(jù)從所述來源部分重定位到所述目的地部分時,是否對存儲于所述來源部分中的相關(guān)數(shù)據(jù)做出了改變;以及 如果在將所述數(shù)據(jù)重定位到所述目的地部分時對存儲于所述來源部分中的相關(guān)數(shù)據(jù)做出了改變,則將經(jīng)改變的相關(guān)數(shù)據(jù)從所述來源部分重定位到所述目的地部分。41.根據(jù)權(quán)利要求40所述的方法,還包括:通過比較在重定位所述數(shù)據(jù)之前和之后所述來源部分的元數(shù)據(jù),來確定是否對存儲于所述來源部分中的相關(guān)數(shù)據(jù)做出了改變。42.根據(jù)權(quán)利要求40所述的方法,還包括: 確定在將經(jīng)改變的相關(guān)數(shù)據(jù)從所述來源部分重定位到所述目的地部分時,是否對所述來源部分中的額外的相關(guān)數(shù)據(jù)做出了進一步的改變;以及 如果在將經(jīng)改變的相關(guān)數(shù)據(jù)重定位到所述目的地部分時,對所述來源部分中的額外的相關(guān)數(shù)據(jù)做出了進一步的改變,則: 將由所述進一步的改變所獲得的額外的經(jīng)改變的相關(guān)數(shù)據(jù)從所述來源部分重定位到所述目的地部分;以及 在重定位所述額外的經(jīng)改變的相關(guān)數(shù)據(jù)時,阻止對所述來源部分的進一步的改變。43.—種數(shù)據(jù)存儲系統(tǒng),包括: 主機,其包括處理器;以及 至少一個數(shù)據(jù)存儲設(shè)備(DSD ),其與所述主機通信; 其中,所述處理器配置為: 基于由所述主機定義的至少一個屬性,識別將從所述多個DSD的來源部分重定位到所述多個DSD的目的地部分的數(shù)據(jù)和/或針對所述目的地部分的位置; 根據(jù)對將重定位的所述數(shù)據(jù)和/或針對所述目的地部分的所述位置的所述識別,將所述數(shù)據(jù)從所述來源部分重定位到所述目的地部分; 確定在將所述數(shù)據(jù)從所述來源部分重定位到所述目的地部分時,是否對存儲于所述來源部分中的相關(guān)數(shù)據(jù)做出了改變;以及 如果在將所述數(shù)據(jù)重定位到所述目的地部分時對存儲于所述來源部分中的相關(guān)數(shù)據(jù)做出了改變,則將經(jīng)改變的相關(guān)數(shù)據(jù)從所述來源部分重定位到所述目的地部分。44.根據(jù)權(quán)利要求43所述的數(shù)據(jù)存儲系統(tǒng),其中,所述處理器還配置為:通過比較在重定位所述數(shù)據(jù)之前和之后所述來源部分的元數(shù)據(jù),來確定是否對存儲于所述來源部分中的相關(guān)數(shù)據(jù)做出了改變。45.根據(jù)權(quán)利要求43所述的數(shù)據(jù)存儲系統(tǒng),其中,所述處理器還配置為: 確定在將經(jīng)改變的相關(guān)數(shù)據(jù)從所述來源部分重定位到所述目的地部分時,是否對所述來源部分中的額外的相關(guān)數(shù)據(jù)做出了進一步的改變;以及 如果在將經(jīng)改變的相關(guān)數(shù)據(jù)重定位到所述目的地部分時,在所述來源部分中對額外的相關(guān)數(shù)據(jù)做出了進一步的改變,則: 將由所述進一步的改變所獲得的額外的經(jīng)改變的相關(guān)數(shù)據(jù)從所述來源部分重定位到所述目的地部分;以及 在重定位所述額外的經(jīng)改變的相關(guān)數(shù)據(jù)時,阻止對所述來源部分的進一步的改變。
【文檔編號】G06F12/02GK105934749SQ201580006048
【公開日】2016年9月7日
【申請日】2015年1月23日
【發(fā)明人】A·H·陳, J·N·馬利納
【申請人】西部數(shù)據(jù)技術(shù)公司