一種基于精簡配置技術(shù)的存儲空間回收方法及其裝置制造方法
【專利摘要】本申請公開了一種基于精簡配置技術(shù)的存儲空間回收方法及其裝置,其中,所述方法由位于文件系統(tǒng)與存儲設(shè)備之間的支持精簡配置技術(shù)的中間設(shè)備執(zhí)行,其中,所述文件系統(tǒng)支持Trim指令,所述方法包括:與文件系統(tǒng)進行交互,使得文件系統(tǒng)感知到所述中間設(shè)備為支持Trim指令的設(shè)備;接收所述文件系統(tǒng)在刪除文件后發(fā)送的用于回收存儲空間的第一Trim指令,所述第一Trim指令包括需要回收的邏輯塊地址信息;根據(jù)所述第一Trim指令執(zhí)行精簡配置技術(shù)中的存儲空間回收方法回收所述邏輯塊地址信息對應(yīng)的存儲空間。通過上述方式,本申請能夠?qū)崿F(xiàn)存儲空間回收時,無需耗費大量資源。
【專利說明】—種基于精簡配置技術(shù)的存儲空間回收方法及其裝置
【技術(shù)領(lǐng)域】
[0001]本申請涉及存儲【技術(shù)領(lǐng)域】,特別是涉及一種基于精簡配置技術(shù)的存儲空間回收方法及其裝置。
【背景技術(shù)】
[0002]自動精簡配置(英文:Thin-Probisioning)技術(shù)是一項容量分配技術(shù),其按照實際需求分配存儲資源。當應(yīng)用程序或者文件系統(tǒng)釋放申請的空間,存儲系統(tǒng)應(yīng)回收釋放的空間。
[0003]現(xiàn)有對自動精簡配置的存儲空間回收的技術(shù)中,一般采用以下兩種方法:(1)零頁回收,在應(yīng)用程序或者文件系統(tǒng)釋放空間時,將存儲設(shè)備上需要釋放的空間中寫入0x0。當存儲設(shè)備對存儲空間進行檢測,當檢測到某個頁面(英文:page)的內(nèi)容全為0x0時,則將該頁面進行回收。(2)通過應(yīng)用數(shù)據(jù)的在線遷移和整理實現(xiàn)空間回收,通過對文件系統(tǒng)中的有效數(shù)據(jù)進行遷移,并整理到連續(xù)的存儲空間中,實現(xiàn)同步的空間回收。
[0004]然而,上述方法(I)在釋放空間時,對釋放的空間均寫入零數(shù)據(jù),造成極大的輸入/輸出(英文:Input/Output,簡稱10)資源的耗費;上述方法(2)要實現(xiàn)空間回收,則需要對存儲空間中的數(shù)據(jù)進行大量遷移,同樣也存在資源的大量耗費。故,現(xiàn)有空間回收方法均存在需要耗費大量資源的問題。
【發(fā)明內(nèi)容】
[0005]本申請主要解決的技術(shù)問題是提供一種基于精簡配置技術(shù)的存儲空間回收方法及其裝置,能夠?qū)崿F(xiàn)存儲空間回收時,無需耗費大量資源。
[0006]第一方面,本發(fā)明實施例提供了一種基于精簡配置技術(shù)的存儲空間回收方法,由位于文件系統(tǒng)與存儲設(shè)備之間的支持精簡配置技術(shù)的中間設(shè)備執(zhí)行,其中,所述文件系統(tǒng)支持Trim指令,所述方法包括:
[0007]與所述文件系統(tǒng)進行交互,使得所述文件系統(tǒng)感知到所述中間設(shè)備為支持Trim指令的設(shè)備;
[0008]接收所述文件系統(tǒng)在刪除文件后發(fā)送的用于回收存儲空間的第一 Trim指令,所述第一 Trim指令包括需要回收的邏輯塊地址信息;
[0009]根據(jù)所述第一 Trim指令執(zhí)行精簡配置技術(shù)中的存儲空間回收方法回收所述邏輯塊地址信息對應(yīng)的存儲空間。
[0010]在第一方面的第一種可能的實現(xiàn)方式中,所述根據(jù)所述第一 Trim指令執(zhí)行精簡配置技術(shù)中的存儲空間回收方法回收所述邏輯塊地址信息對應(yīng)的存儲空間的步驟包括:
[0011]從所述Trim指令中獲得需回收的邏輯塊地址信息;
[0012]刪除所述需回收的邏輯塊地址在邏輯-物理地址映射表中的映射關(guān)系,其中,所述邏輯-物理地址映射表用于記錄存儲數(shù)據(jù)的邏輯塊地址與在所述存儲設(shè)備的物理塊地址之間的映射關(guān)系。[0013]結(jié)合第一方面第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述從所述Trim指令中獲得需回收的邏輯塊地址信息的步驟之后還包括:
[0014]根據(jù)所述邏輯-物理地址映射表中的映射關(guān)系,查找到所述需回收的邏輯塊地址映射的物理塊地址;
[0015]判斷所述物理塊地址是否屬于所述存儲設(shè)備中的固態(tài)硬盤SSD的地址;
[0016]如果屬于,則將所述物理塊地址發(fā)送給所述固態(tài)硬盤SSD,以使所述固態(tài)硬盤SSD擦除所述物理塊地址指向的物理塊。
[0017]結(jié)合第一方面,或者第一方面第一至第二種任意一種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述接收所述文件系統(tǒng)在刪除文件后發(fā)送的用于回收存儲空間的第一Trim指令的步驟包括:
[0018]接收所述文件系統(tǒng)在刪除文件后發(fā)送的塊的輸入和輸出ΒΙ0,獲得所述BIO中用于回收存儲空間的第一 Trim指令。
[0019]結(jié)合第一方面,或者第一方面第一至第三種任意一種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,使得文件系統(tǒng)感知到所述中間設(shè)備為支持Trim指令的設(shè)備的步驟包括:
[0020]接收所述文件系統(tǒng)發(fā)送的詢問是否支持Trim指令的指令;
[0021]根據(jù)所述指令向所述文件系統(tǒng)發(fā)送提示支持Trim指令的應(yīng)答,使得文件系統(tǒng)感知到所述中間設(shè)備為支持Trim指令的設(shè)備。
[0022]第二方面,本發(fā)明實施例提供了一種中間設(shè)備,設(shè)置在文件系統(tǒng)與存儲設(shè)備之間,并支持精簡配置技術(shù),其中,所述文件系統(tǒng)支持Trim指令,
[0023]所述中間設(shè)備包括交互模塊、接收模塊和回收模塊,
[0024]所述交互模塊用于與文件系統(tǒng)進行交互,使得文件系統(tǒng)感知到所述中間設(shè)備為支持Trim指令的設(shè)備;
[0025]所述接收模塊用于接收所述文件系統(tǒng)在刪除文件后發(fā)送的用于回收存儲空間的第一 Trim指令,并將所述第一 Trim指令發(fā)送給回收模塊,所述第一 Trim指令包括需要回收的邏輯塊地址信息;
[0026]所述回收模塊用于根據(jù)所述第一 Trim指令執(zhí)行精簡配置技術(shù)中的存儲空間回收方法回收所述邏輯塊地址信息對應(yīng)的存儲空間。
[0027]在第二方面的第一種可能的實現(xiàn)方式中,
[0028]所述獲得單元用于從所述Trim指令中獲得需回收的邏輯塊地址信息,并將所述需回收的邏輯塊地址信息發(fā)送給刪除單元;
[0029]所述刪除單元用于刪除所述需回收的邏輯塊地址在邏輯-物理地址映射表中的映射關(guān)系,其中,所述邏輯-物理地址映射表用于記錄存儲數(shù)據(jù)的邏輯塊地址與在所述存儲設(shè)備的物理塊地址之間的映射關(guān)系。
[0030]結(jié)合第二方面第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述存儲設(shè)備包括固態(tài)硬件SSD,
[0031]所述查找單元用于根據(jù)所述邏輯-物理地址映射表中的映射關(guān)系,查找到所述需回收的邏輯塊地址映射的物理塊地址,并將所述物理塊地址發(fā)送給所述判斷單元;
[0032]所述判斷單元用于判斷所述物理塊地址是否屬于所述存儲設(shè)備中的固態(tài)硬盤SSD的地址,并將判斷結(jié)果發(fā)送給第一發(fā)送單元;
[0033]所述第一發(fā)送單元用于在所述物理塊地址屬于固態(tài)硬盤SSD的地址時,將所述物理塊地址發(fā)送給所述固態(tài)硬盤SSD,以使所述固態(tài)硬盤SSD擦除所述物理塊地址指向的物理塊。
[0034]結(jié)合第二方面,或者第二方面第一至第二種任意一種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,獲得所述BIO中用于回收存儲空間的第一 Trim指令。
[0035]結(jié)合第二方面,或者第二方面第一至第三種任意一種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,
[0036]所述接收單元用于接收所述文件系統(tǒng)發(fā)送的詢問是否支持Trim指令的指令,并將所述指令發(fā)送給所述第二發(fā)送單元;
[0037]所述第二發(fā)送單元用于根據(jù)所述指令向所述文件系統(tǒng)發(fā)送提示支持Trim指令的應(yīng)答,使得文件系統(tǒng)感知到所述中間設(shè)備為支持Trim指令的設(shè)備。
[0038]第三方面,本發(fā)明實施例提供了一種計算機系統(tǒng),包括處理器、內(nèi)存以及存儲設(shè)備,所述內(nèi)存用于存儲從所述存儲設(shè)備中加載進來的程序,所述處理器用于讀取所述內(nèi)存中的程序來運行操作系統(tǒng),所述操作系統(tǒng)包括支持Trim指令的文件系統(tǒng),所述處理器還用于運行位于所述操作系統(tǒng)中的驅(qū)動層中的中間設(shè)備模塊,通過所述中間設(shè)備模塊來執(zhí)行以下方法:
[0039]與所述文件系統(tǒng)進行交互,使得所述文件系統(tǒng)感知到所述中間設(shè)備模塊為支持Trim指令的設(shè)備;
[0040]接收所述文件系統(tǒng)在刪除文件后發(fā)送的用于回收存儲空間的第一 Trim指令,所述第一 Trim指令包括需要回收的邏輯塊地址信息;
[0041]根據(jù)所述第一 Trim指令執(zhí)行精簡配置技術(shù)中的存儲空間回收方法回收所述邏輯塊地址信息對應(yīng)的存儲空間。
[0042]在第三方面的第一種可能的實現(xiàn)方式中,所述根據(jù)所述第一 Trim指令執(zhí)行精簡配置技術(shù)中的存儲空間回收方法回收所述邏輯塊地址信息對應(yīng)的存儲空間的步驟包括:
[0043]從所述Trim指令中獲得需回收的邏輯塊地址信息;
[0044]刪除所述需回收的邏輯塊地址在邏輯-物理地址映射表中的映射關(guān)系,其中,所述邏輯-物理地址映射表用于記錄存儲數(shù)據(jù)的邏輯塊地址與在所述存儲設(shè)備的物理塊地址之間的映射關(guān)系。
[0045]結(jié)合第三方面第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述存儲設(shè)備包括固態(tài)硬件SSD,所述從所述Trim指令中獲得需回收的邏輯塊地址信息的步驟之后還包括:
[0046]根據(jù)所述邏輯-物理地址映射表中的映射關(guān)系,查找到所述需回收的邏輯塊地址映射的物理塊地址;
[0047]判斷所述物理塊地址是否屬于所述存儲設(shè)備中的固態(tài)硬盤SSD的地址;
[0048]如果屬于,則將所述物理塊地址發(fā)送給所述固態(tài)硬盤SSD,以使所述固態(tài)硬盤SSD擦除所述物理塊地址指向的物理塊。
[0049]結(jié)合第三方面,或者第三方面第一至第二種任意一種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述接收所述文件系統(tǒng)在刪除文件后發(fā)送的用于回收存儲空間的第一Trim指令的步驟包括:
[0050]接收所述文件系統(tǒng)在刪除文件后發(fā)送的塊的輸入和輸出ΒΙ0,獲得所述BIO中用于回收存儲空間的第一 Trim指令。
[0051]結(jié)合第三方面,或者第三方面第一至第三種任意一種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,使得文件系統(tǒng)感知到所述中間設(shè)備模塊為支持Trim指令的設(shè)備的步驟包括:
[0052]接收所述文件系統(tǒng)發(fā)送的詢問是否支持Trim指令的指令;
[0053]根據(jù)所述指令向所述文件系統(tǒng)發(fā)送提示支持Trim指令的應(yīng)答,使得文件系統(tǒng)感知到所述中間設(shè)備模塊為支持Trim指令的設(shè)備。
[0054]區(qū)別于現(xiàn)有技術(shù),本申請先虛擬出一個能夠支持Trim指令的中間設(shè)備,在需要對存儲空間進行回收時,通過Trim指令,將需要回收的邏輯塊地址信息發(fā)送給中間設(shè)備,使得管理存儲空間的中間設(shè)備能夠直接根據(jù)邏輯塊地址信息,對相應(yīng)的邏輯塊進行回收,進而實現(xiàn)對存儲設(shè)備相應(yīng)存儲空間的回收,中間設(shè)備直接根據(jù)邏輯塊地址對存儲空間回收,無需對存儲空間寫入數(shù)據(jù)以提示回收,也不無對存儲空間上的數(shù)據(jù)進行遷移,故避免了耗費大量資源。
【專利附圖】
【附圖說明】
[0055]圖1是本申請基于精簡配置技術(shù)的存儲空間回收方法一實施方式的流程圖;
[0056]圖2是本申請基于精簡配置技術(shù)的存儲空間回收方法另一實施方式的流程圖;
[0057]圖3是本申請計算機系統(tǒng)一實施方式的結(jié)構(gòu)示意圖;
[0058]圖4是本申請計算機系統(tǒng)另一實施方式的結(jié)構(gòu)示意圖;
[0059]圖5是本申請計算機系統(tǒng)再一實施方式的結(jié)構(gòu)示意圖。
【具體實施方式】
[0060]下面結(jié)合附圖和具體的實施方式進行說明。
[0061]請參閱圖1,圖1是本申請基于精簡配置技術(shù)的存儲空間回收方法一實施方式的流程圖。本實施方式中,所述方法由位于文件系統(tǒng)與存儲設(shè)備之間的支持精簡配置技術(shù)的中間設(shè)備執(zhí)行,其中,所述文件系統(tǒng)支持Trim指令,具體所述方法包括:
[0062]SlOl:中間設(shè)備與文件系統(tǒng)進行交互,使得文件系統(tǒng)感知到所述中間設(shè)備為支持Trim指令的設(shè)備。
[0063]本申請方法可用于基于精簡配置技術(shù)的裝置。本實施方式以基于精簡配置技術(shù)的計算機系統(tǒng)為例,所述計算機系統(tǒng)可以包括位于硬件層的存儲設(shè)備、位于操作系統(tǒng)中的文件系統(tǒng)以及位于操作系統(tǒng)中的驅(qū)動層中的中間設(shè)備,中間設(shè)備在系統(tǒng)中的層次位于文件系統(tǒng)與存儲設(shè)備之間。所述存儲設(shè)備為用于存儲數(shù)據(jù)且速度相對于內(nèi)存較慢的非易失性存儲設(shè)備,典型的如基于磁技術(shù)進行數(shù)據(jù)保存的傳統(tǒng)硬盤以及新興的固態(tài)硬盤(Solid StateDisk,簡稱SSD)等。存儲設(shè)備可以只包括傳統(tǒng)硬盤或者SSD,或者也可以兩者混用。另外,存儲設(shè)備未必設(shè)置在計算機系統(tǒng)內(nèi)部,還可為外部設(shè)備,并通過接口接入計算機系統(tǒng)。所述文件系統(tǒng)用于管理存儲數(shù)據(jù)的邏輯塊的地址,以對所述數(shù)據(jù)的存儲進行組織和分配。所述中間設(shè)備處于塊設(shè)備層,支持精簡配置技術(shù),用于將所述存儲設(shè)備的物理存儲空間對應(yīng)映射在邏輯塊上,形成虛擬的資源池,通過管理所述資源池的邏輯塊來管理所述存儲設(shè)備的存儲空間,并為位于上層的文件系統(tǒng)的數(shù)據(jù)按需分配存儲空間。
[0064]中間設(shè)備在執(zhí)行回收存儲空間前,先與文件系統(tǒng)進行交互,以使文件系統(tǒng)會檢測到中間設(shè)備是否支持Trim指令。例如,文件系統(tǒng)向中間設(shè)備發(fā)送預設(shè)的Trim指令以詢問是否支持Trim指令,中間設(shè)備接收該詢問指令,如果自身支持Trim指令,則根據(jù)該詢問指令向文件系統(tǒng)作發(fā)送應(yīng)答消息,文件系統(tǒng)如果收到該應(yīng)答則確定所述中間設(shè)備為支持Trim指令的設(shè)備。
[0065]其中,所述Trim為數(shù)據(jù)管理指令集(DATA MANAGEMENT SET,簡稱DMS)命令的子命令,當所述DMS的feature屬性的最低位置I時,即為Trim指令。
[0066]S102:中間設(shè)備接收所述文件系統(tǒng)在刪除文件后發(fā)送的用于回收存儲空間的第一Trim指令,所述第一 Trim指令包括需要回收的邏輯塊地址信息。
[0067]例如,文件系統(tǒng)在在刪除文件時,獲取刪除的文件的邏輯塊地址作為需回收的邏輯塊地址,并根據(jù)所述邏輯塊地址生成并下發(fā)出第一 Trim指令,以提示回收存儲空間。中間設(shè)備在檢測到所述文件系統(tǒng)下發(fā)用于回收存儲空間的第一 Trim指令時,獲取所述第一Trim指令。其中,所述第一 Trim指令包括需回收的邏輯塊地址(Logic Block Address,簡稱LBA)信息,如刪除文件所在扇區(qū)起始地址和扇區(qū)數(shù)目。
[0068]S103:中間設(shè)備根據(jù)所述第一 Trim指令執(zhí)行精簡配置技術(shù)中的存儲空間回收方法回收所述邏輯塊地址信息對應(yīng)的存儲空間。
[0069]例如,所述中間設(shè)備對所述第一 Trim指令進行解析,得到所述第一 Trim指令中的邏輯塊地址信息,并根據(jù)該邏輯塊地址信息執(zhí)行精簡配置技術(shù)中的存儲空間回收,如回收所述邏輯塊地址指向的邏輯塊,具體如刪除所述邏輯塊地址指向的邏輯塊與存儲設(shè)備的存儲空間之間的映射關(guān)系,實現(xiàn)邏輯塊的回收。由于文件系統(tǒng)中文件的存儲地址信息為邏輯塊地址信息,經(jīng)由中間設(shè)備根據(jù)對應(yīng)邏輯塊與存儲設(shè)備的存儲空間之間的映射關(guān)系,實現(xiàn)對文件的實際存儲空間的分配,故在回收對應(yīng)邏輯塊后,存儲在所述邏輯塊映射的存儲空間中的數(shù)據(jù)即為無效數(shù)據(jù),即所述存儲空間處于空閑狀態(tài),使得文件系統(tǒng)根據(jù)所述映射表后可知所述存儲空間可再使用,即實現(xiàn)了存儲空間的回收。
[0070]本實施方式,文件系統(tǒng)在獲得回收指令時,發(fā)送包括需回收對的邏輯塊地址的第一 Trim指令,使得中間設(shè)備能夠根據(jù)Trim指令中的邏輯塊地址回收邏輯塊,實現(xiàn)存儲空間的回收,所述中間設(shè)備直接獲取需回收的邏輯塊地址以實現(xiàn)回收,無需對需回收的存儲空間寫入數(shù)據(jù)、或進行數(shù)據(jù)遷移,故避免了耗費大量資源,且保證了回收空間的準確性,同時,文件系統(tǒng)在刪除文件后,即下發(fā)Trim指令實現(xiàn)回收,具有很高的實時性。另外,由于文件系統(tǒng)均支持Trim指令,故無需針對文件系統(tǒng)進行特別的設(shè)計支持。而且,本實施方式通過驅(qū)動層的中間設(shè)備進行識別Trim指令,實現(xiàn)利用Trim指令進行存儲空間的回收,無需受到存儲設(shè)備是否能夠識別Trim指令的限制,保證了該回收方法兼容性高,具有普遍適用性。
[0071]請參閱圖2,圖2是本申請存儲空間回收的方法另一實施方式的流程圖。本實施方式中,所述方法由位于文件系統(tǒng)與存儲設(shè)備之間的支持精簡配置技術(shù)的中間設(shè)備執(zhí)行,其中,所述文件系統(tǒng)支持Trim指令,中間設(shè)備設(shè)置在如上面實施方式所述的計算機系統(tǒng)中。具體所述方法包括:
[0072]S201:中間設(shè)備接收所述文件系統(tǒng)發(fā)送的詢問是否支持Trim指令的指令。[0073]具體,在中間設(shè)備執(zhí)行存儲空間回收前,文件系統(tǒng)先向中間設(shè)備發(fā)送詢問指令,以詢問中間設(shè)備是否支持Trim指令。中間設(shè)備接收所述文件系統(tǒng)發(fā)送的詢問指令。
[0074]S202:中間設(shè)備根據(jù)所述指令向所述文件系統(tǒng)發(fā)送提示支持Trim指令的應(yīng)答,使得文件系統(tǒng)感知到所述中間設(shè)備為支持Trim指令的設(shè)備。
[0075]例如,中間設(shè)備在接收到文件系統(tǒng)發(fā)送的詢問指令后,如果確定自身支持Trim指令,則向文件系統(tǒng)做出應(yīng)答,以提示支持Trim指令。文件系統(tǒng)接收到中間設(shè)備發(fā)送的應(yīng)答后,則確定中間設(shè)備支持Trim指令,并啟動在刪除文件時,可向中間設(shè)備發(fā)送Trim指令以回收存儲空間的機制。如果中間設(shè)備不支持Trim指令,則提醒用戶不支持Trim指令進行回收,或者采用其他存儲空間回收機制,如零頁回收、通過應(yīng)用數(shù)據(jù)的在線遷移和整理實現(xiàn)空間回收方法等。
[0076]S203:中間設(shè)備接收所述文件系統(tǒng)在刪除文件后發(fā)送的塊的輸入和輸出ΒΙ0,獲得所述BIO中用于回收存儲空間的第一 Trim指令。
[0077]例如,文件系統(tǒng)在檢測到刪除文件時,獲取所述數(shù)據(jù)的邏輯塊地址信息,如刪除的文件所在的起始扇區(qū)地址和扇區(qū)大小,或刪除的文件所在的起始扇區(qū)地址和結(jié)束扇區(qū)地址,作為需回收的邏輯塊地址信息,并將所述邏輯塊地址信息記載在Trim指令中。文件系統(tǒng)將包括邏輯塊地址信息的第一 Trim指令打包成輸入和輸出(Block Input Output,簡稱BIO)結(jié)構(gòu),通過所述下發(fā)所述ΒΙ0,實現(xiàn)下發(fā)所述第一 Trim指令,其中,所述BIO設(shè)置有回收標記,以表示所述BIO為回收類ΒΙ0,且所述BIO攜帶包括回收信息的第一 Trim指令。
[0078]中間設(shè)備接收到文件系統(tǒng)下發(fā)的BIO后,判斷所述BIO是否有回收標記,如果沒有,則表示所述BIO不為回收類ΒΙ0,并結(jié)束流程。如果有,則表示所述BIO為回收類ΒΙ0,所述中間設(shè)備從BIO中獲取到第一 Trim指令。
[0079]需要說明的是,文件系統(tǒng)并不限定Trim指令打包成ΒΙ0,在其他實施方式中,文件系統(tǒng)還可將Trim指令打包成其他結(jié)構(gòu)進行下發(fā),在此不作限定。
[0080]S204:中間設(shè)備從所述Trim指令中獲得需回收的邏輯塊地址信息。
[0081 ] 所述中間設(shè)備獲取到BIO中的第一 Trim指令后,對所述第一 Trim指令進行解析,獲得需要回收的邏輯塊地址信息,如被刪除文件所在的起始扇區(qū)地址和扇區(qū)大小,根據(jù)所述扇區(qū)與邏輯塊間的大小關(guān)系,計算得到需回收的邏輯塊起始地址和邏輯塊數(shù)。
[0082]S205:中間設(shè)備根據(jù)所述邏輯-物理地址映射表中的映射關(guān)系,查找到所述需回收的邏輯塊地址映射的物理塊地址(Physics Block Address,簡稱PBA)。
[0083]所述中間設(shè)備中設(shè)置有邏輯-物理地址映射表,如哈希表,所述邏輯-物理地址映射表記錄了文件的邏輯塊地址與存儲設(shè)備的物理塊地址(即存儲空間在存儲設(shè)備中的實際地址)間的映射關(guān)系,通過所述映射關(guān)系實現(xiàn)對文件的實際存儲空間的分配。
[0084]本實施方式中,所述存儲設(shè)備包括SSD,由于SSD本身具有識別Trim指令,并根據(jù)Trim指令回收存儲空間的特性。故為了實現(xiàn)不但回收邏輯存儲空間,還回收實際物理存儲空間,中間設(shè)備在獲取需回收的邏輯塊地址信息后,根據(jù)所述邏輯-物理地址映射表中的映射關(guān)系,即可查找到所述需回收的邏輯塊地址映射的物理塊地址。
[0085]S206:所述中間設(shè)備判斷所述物理塊地址是否屬于所述存儲設(shè)備中的SSD的地址。
[0086]優(yōu)化地,在查找到需回收的邏輯塊地址指向的物理塊地址后,所述中間設(shè)備判斷查找到的物理塊地址是否屬于所述存儲設(shè)備中SSD的存儲空間地址,如果屬于,則執(zhí)行S207,如果不屬于則直接執(zhí)行S208。
[0087]S207:中間設(shè)備將所述物理塊地址發(fā)送給所述SSD,以使所述SSD擦除所述物理塊地址指向的物理塊。
[0088]由于SSD本身具有識別Trim指令,并根據(jù)Trim指令回收存儲空間的特性,故在判斷查找到的物理塊地址屬于SSD的存儲空間地址時,所述中間設(shè)備將所述查找到的物理塊地址通過Trim指令發(fā)送給SSD,SSD在獲得所述Trim指令后,解析出所要回收的物理塊地址,并將所述物理塊地址指向的存儲空間進行回收,實現(xiàn)對存儲空間中存儲的數(shù)據(jù)的真正清除。
[0089]S208:中間設(shè)備刪除所述需回收的邏輯塊地址在邏輯-物理地址映射表中的映射關(guān)系,其中,所述邏輯-物理地址映射表用于記錄存儲數(shù)據(jù)的邏輯塊地址與在所述存儲設(shè)備的物理塊地址之間的映射關(guān)系。
[0090]在判斷查找到的物理塊地址不屬于SSD的存儲空間地址,如所述物理塊地址屬于傳統(tǒng)硬盤設(shè)備時,或者查找到的物理塊地址屬于SSD的存儲空間地址,且SSD執(zhí)行物理塊擦除后,中間設(shè)備調(diào)用相關(guān)函數(shù)將邏輯-物理映射表中記錄需要回收的邏輯塊地址與物理塊地址的映射關(guān)系的表項刪除,以表示刪除的物理塊地址指向的存儲空間處于空閑狀態(tài),提示上層系統(tǒng)所述存儲空間可被再使用,進而實現(xiàn)所述存儲空間的回收。
[0091]需要說明的是S208不限定在S206-S207之后執(zhí)行,在其他實施方式中,中間設(shè)備在獲取需回收的邏輯塊地址和物理塊地址后,先執(zhí)行S208實現(xiàn)邏輯塊回收后,在判斷物理塊地址是否屬于SSD,并在屬于時指示SSD對相應(yīng)物理塊進行擦除。
[0092]本實施方式利用Trim指令攜帶需回收的邏輯塊地址,實現(xiàn)存儲空間回收,保證了存儲空間回收的實時性、準確性,且無需耗費大量資源。同時,在需回收的存儲空間屬于SSD時,還將SSD的存儲空間進行真正的數(shù)據(jù)清除,優(yōu)化了 SSD的效能。同時,由于自動精簡配置模塊工作在驅(qū)動層,不用受到存儲設(shè)備限制,保證了對Trim指令的兼容性。
[0093]請參閱圖3,圖3是本申請計算機系統(tǒng)一實施方式的結(jié)構(gòu)示意圖。本申請的中間設(shè)備用于基于精簡配置技術(shù)的裝置如本實施方式的計算機系統(tǒng)中,具體設(shè)置在支持Trim指令的文件系統(tǒng)與存儲設(shè)備之間,并支持精簡配置技術(shù)。
[0094]本實施方式以基于精簡配置技術(shù)的計算機系統(tǒng)為例,所述計算機系統(tǒng)300包括位于硬件層的存儲設(shè)備310、位于操作系統(tǒng)中的文件系統(tǒng)330以及位于驅(qū)動層的中間設(shè)備320,中間設(shè)備在系統(tǒng)中的層次位于文件系統(tǒng)與存儲設(shè)備之間。所述存儲設(shè)備310為用于存儲數(shù)據(jù)且速度相對于內(nèi)存較慢的非易失性存儲設(shè)備,典型的如基于磁技術(shù)進行數(shù)據(jù)保存的傳統(tǒng)硬盤以及新興的SSD等。存儲設(shè)備可以只包括傳統(tǒng)硬盤或者SSD,或者也可以兩者混用。另外,存儲設(shè)備310未必設(shè)置在計算機系統(tǒng)300內(nèi)部,還可為外部設(shè)備,并通過接口接入計算機系統(tǒng)300。所述文件系統(tǒng)330用于管理存儲數(shù)據(jù)的邏輯塊的地址,以對所述數(shù)據(jù)的存儲進行組織和分配。中間設(shè)備320處于文件系統(tǒng)330與存儲設(shè)備310之間,支持精簡配置技術(shù),用于將所述存儲設(shè)備310的物理存儲空間對應(yīng)映射在邏輯塊上,形成虛擬的資源池,通過管理所述資源池的邏輯塊來管理所述存儲設(shè)備310的存儲空間,并為位于上層的文件系統(tǒng)330的數(shù)據(jù)按需分配存儲空間。
[0095]具體,所述中間設(shè)備320包括交互模塊321、接收模塊322和回收模塊323。[0096]交互模塊321用于與文件系統(tǒng)330進行交互,使得文件系統(tǒng)330感知到所述中間設(shè)備320為支持Trim指令的設(shè)備。
[0097]中間設(shè)備320在執(zhí)行回收存儲空間前,先與文件系統(tǒng)330進行交互,以使文件系統(tǒng)330會檢測到中間設(shè)備320是否支持Trim指令。例如,文件系統(tǒng)330向中間設(shè)備320的交互模塊321發(fā)送預設(shè)的Trim指令以詢問是否支持Trim指令,中間設(shè)備320的交互模塊321接收該詢問指令,如果自身支持Trim指令,則根據(jù)該詢問指令向文件系統(tǒng)330作發(fā)送應(yīng)答消息,文件系統(tǒng)330如果收到該應(yīng)答則確定所述中間設(shè)備320為支持Trim指令的設(shè)備。
[0098]其中,所述Trim為DMS命令的子命令,當所述DMS的feature屬性的最低位置I時,即為Trim指令。
[0099]接收模塊322用于接收所述文件系統(tǒng)330在刪除文件后發(fā)送的用于回收存儲空間的第一 Trim指令,并將所述第一 Trim指令發(fā)送給回收模塊323,所述第一 Trim指令包括需要回收的邏輯塊地址信息。
[0100]例如,文件系統(tǒng)330在刪除文件時,獲取刪除的文件的邏輯塊地址作為需回收的邏輯塊地址,并根據(jù)所述邏輯塊地址生成并下發(fā)出第一 Trim指令,以提示回收存儲空間。中間設(shè)備320的接收模塊322在檢測到所述文件系統(tǒng)下發(fā)用于回收存儲空間的第一 Trim指令時,獲取所述第一 Trim指令。其中,所述第一 Trim指令包括需回收的邏輯塊地址信息,如刪除文件所在扇區(qū)起始地址和扇區(qū)數(shù)目。
[0101]回收模塊323用于根據(jù)所述第一Trim指令執(zhí)行精簡配置技術(shù)中的存儲空間回收方法回收所述邏輯塊地址信息對應(yīng)的存儲空間。
[0102]例如,所述中間設(shè)備320的回收模塊323對所述第一 Trim指令進行解析,得到所述第一 Trim指令中的邏輯塊地址信息,并根據(jù)該邏輯塊地址信息執(zhí)行精簡配置技術(shù)中的存儲空間回收,如回收所述邏輯塊地址指向的邏輯塊,具體如刪除所述邏輯塊地址指向的邏輯塊與存儲設(shè)備310的存儲空間之間的映射關(guān)系,實現(xiàn)邏輯塊的回收。由于文件系統(tǒng)330中文件的存儲地址信息為邏輯塊地址信息,經(jīng)由中間設(shè)備320根據(jù)對應(yīng)邏輯塊與存儲設(shè)備310的存儲空間之間的映射關(guān)系,實現(xiàn)對文件的實際存儲空間的分配,故在回收對應(yīng)邏輯塊后,存儲在所述邏輯塊映射的存儲空間中的數(shù)據(jù)即為無效數(shù)據(jù),即所述存儲空間處于空閑狀態(tài),使得文件系統(tǒng)330根據(jù)所述映射表后可知所述存儲空間可再使用,即實現(xiàn)了存儲空間的回收。
[0103]本實施方式,文件系統(tǒng)在獲得回收指令時,發(fā)送包括需回收對的邏輯塊地址的第一 Trim指令,使得中間設(shè)備能夠根據(jù)Trim指令中的邏輯塊地址回收邏輯塊,實現(xiàn)存儲空間的回收,所述中間設(shè)備直接獲取需回收的邏輯塊地址以實現(xiàn)回收,無需對需回收的存儲空間寫入數(shù)據(jù)、或進行數(shù)據(jù)遷移,故避免了耗費大量資源,且保證了回收空間的準確性,同時,文件系統(tǒng)在刪除文件后,即下發(fā)Trim指令實現(xiàn)回收,具有很高的實時性。另外,由于文件系統(tǒng)均支持Trim指令,故無需針對文件系統(tǒng)進行特別的設(shè)計支持。而且,本實施方式通過驅(qū)動層的中間設(shè)備進行識別Trim指令,實現(xiàn)利用Trim指令進行存儲空間的回收,無需受到存儲設(shè)備是否能夠識別Trim指令的限制,保證了該回收方法兼容性高,具有普遍適用性。
[0104]請參閱圖4,圖4是本申請計算機系統(tǒng)另一實施方式的結(jié)構(gòu)示意圖。與上一實施方式相比,本實施方式中,計算機系統(tǒng)400的中間設(shè)備420包括交互模塊421、接收模塊422和回收模塊423。其中,交互模塊421包括接收單元4211和第二發(fā)送單元4212,回收模塊423包括獲得單元4231、刪除單元4232、查找單元4233、判斷單元4234和第一發(fā)送單元4235。
[0105]接收單元4211用于接收所述文件系統(tǒng)430發(fā)送的詢問是否支持Trim指令的指令,并將所述指令發(fā)送給所述第二發(fā)送單元4212。
[0106]具體,在中間設(shè)備420執(zhí)行存儲空間回收前,文件系統(tǒng)430先向中間設(shè)備420發(fā)送詢問指令,以詢問中間設(shè)備420是否支持Trim指令。中間設(shè)備420的接收單元4211接收所述文件系統(tǒng)430發(fā)送的詢問指令。
[0107]第二發(fā)送單元4212用于根據(jù)所述指令向所述文件系統(tǒng)430發(fā)送提示支持Trim指令的應(yīng)答,使得文件系統(tǒng)430感知到所述中間設(shè)備420為支持Trim指令的設(shè)備。
[0108]例如,在中間設(shè)備420的接收單元4211接收到文件系統(tǒng)430發(fā)送的詢問指令后,第二發(fā)送單元4212如果確定中間設(shè)備420自身支持Trim指令,則向文件系統(tǒng)430做出應(yīng)答,以提不支持Trim指令。文件系統(tǒng)430接收到中間設(shè)備420發(fā)送的應(yīng)答后,則確定中間設(shè)備420支持Trim指令,并啟動在刪除文件時,可向中間設(shè)備420發(fā)送Trim指令以回收存儲空間的機制。如果中間設(shè)備不支持Trim指令,則提醒用戶不支持Trim指令進行回收,或者采用其他存儲空間回收機制,如零頁回收、通過應(yīng)用數(shù)據(jù)的在線遷移和整理實現(xiàn)空間回收方法等。
[0109]接收模塊422用于接收所述文件系統(tǒng)430在刪除文件后發(fā)送的塊的輸入和輸出ΒΙ0,獲得所述BIO中用于回收存儲空間的第一 Trim指令。
[0110]例如,文件系統(tǒng)430在檢測到刪除文件時,獲取所述數(shù)據(jù)的邏輯塊地址信息,如刪除的文件所在的起始扇區(qū)地址和扇區(qū)大小,或刪除的文件所在的起始扇區(qū)地址和結(jié)束扇區(qū)地址,作為需回收的邏輯塊地址信息,并將所述邏輯塊地址信息記載在Trim指令中。文件系統(tǒng)430將包括邏輯塊地址信息的第一 Trim指令打包成BIO結(jié)構(gòu),通過所述下發(fā)所述ΒΙ0,實現(xiàn)下發(fā)所述第一 Trim指令,其中,所述BIO設(shè)置有回收標記,以表示所述BIO為回收類ΒΙ0,且所述BIO攜帶包括回收信息的第一 Trim指令。
[0111]中間設(shè)備420的接收模塊422接收到文件系統(tǒng)430下發(fā)的BIO后,判斷所述BIO是否有回收標記,如果沒有,則表示所述BIO不為回收類ΒΙ0,并結(jié)束流程。如果有,則表示所述BIO為回收類ΒΙ0,所述中間設(shè)備從BIO中獲取到第一 Trim指令。
[0112]需要說明的是,文件系統(tǒng)并不限定Trim指令打包成ΒΙ0,在其他實施方式中,文件系統(tǒng)還可將Trim指令打包成其他結(jié)構(gòu)進行下發(fā),在此不作限定。
[0113]獲得單元4231用于從所述Trim指令中獲得需回收的邏輯塊地址信息,并將所述需回收的邏輯塊地址信息發(fā)送給刪除單元4232和查找單元4233。
[0114]中間設(shè)備420的獲得單元4231獲取到BIO中的第一 Trim指令后,對所述第一 Trim指令進行解析,獲得需要回收的邏輯塊地址信息,如被刪除文件所在的起始扇區(qū)地址和扇區(qū)大小,根據(jù)所述扇區(qū)與邏輯塊間的大小關(guān)系,計算得到需回收的邏輯塊起始地址和邏輯塊數(shù)。
[0115]查找單元4233用于根據(jù)所述邏輯-物理地址映射表中的映射關(guān)系,查找到所述需回收的邏輯塊地址映射的物理塊地址,并將所述物理塊地址發(fā)送給所述判斷單元4234。
[0116]中間設(shè)備420中設(shè)置有邏輯-物理地址映射表,如哈希表,所述邏輯-物理地址映射表記錄了文件的邏輯塊地址與存儲設(shè)備的物理塊地址(即存儲空間在存儲設(shè)備中的實際地址)間的映射關(guān)系,通過所述映射關(guān)系實現(xiàn)對文件的實際存儲空間的分配。[0117]本實施方式中,所述存儲設(shè)備410包括SSD,由于SSD本身具有識別Trim指令,并根據(jù)Trim指令回收存儲空間的特性。故為了實現(xiàn)不但回收邏輯存儲空間,還回收實際物理存儲空間,中間設(shè)備420的查找單元4233在獲取需回收的邏輯塊地址信息后,根據(jù)所述邏輯-物理地址映射表中的映射關(guān)系,即可查找到所述需回收的邏輯塊地址映射的物理塊地址。
[0118]判斷單元4234用于判斷所述物理塊地址是否屬于所述存儲設(shè)備410中的SSD的地址,并將判斷結(jié)果發(fā)送給第一發(fā)送單元4235。
[0119]優(yōu)化地,在中間設(shè)備420的查找單元4233查找到需回收的邏輯塊地址指向的物理塊地址后,判斷單元4234判斷查找到的物理塊地址是否屬于所述存儲設(shè)備中的SSD的存儲空間地址。
[0120]第一發(fā)送單元4235用于在所述物理塊地址屬于SSD的地址時,將所述物理塊地址發(fā)送給SSD,以使SSD擦除所述物理塊地址指向的物理塊。
[0121]由于SSD本身具有識別Trim指令,并根據(jù)Trim指令回收存儲空間的特性,故在中間設(shè)備420的判斷單元4234判斷查找到的物理塊地址屬于SSD的存儲空間地址時,第一發(fā)送單元4235將所述查找到的物理塊地址通過Trim指令發(fā)送給SSD,SSD在獲得所述Trim指令后,解析出所要回收的物理塊地址,并將所述物理塊地址指向的存儲空間進行回收,實現(xiàn)對存儲空間中存儲的數(shù)據(jù)的真正清除。
[0122]刪除單元4232用于刪除所述需回收的邏輯塊地址在邏輯-物理地址映射表中的映射關(guān)系,其中,所述邏輯-物理地址映射表用于記錄存儲數(shù)據(jù)的邏輯塊地址與在存儲設(shè)備410的物理塊地址之間的映射關(guān)系。
[0123]在中間設(shè)備420的判斷單元4234判斷查找到的物理塊地址不屬于SSD的存儲空間地址,如所述物理塊地址屬于傳統(tǒng)硬盤設(shè)備時,或者查找單元4233查找到的物理塊地址屬于SSD的存儲空間地址,且SSD執(zhí)行物理塊擦除后,刪除單元4232調(diào)用相關(guān)函數(shù)將邏輯-物理映射表中記錄需要回收的邏輯塊地址與物理塊地址的映射關(guān)系的表項刪除,以表示刪除的物理塊地址指向的存儲空間處于空閑狀態(tài),提示上層系統(tǒng)所述存儲空間可被再使用,進而實現(xiàn)所述存儲空間的回收。
[0124]本實施方式利用Trim指令攜帶需回收的邏輯塊地址,實現(xiàn)存儲空間回收,保證了存儲空間回收的實時性、準確性,且無需耗費大量資源。同時,在需回收的存儲空間屬于SSD時,還將SSD的存儲空間進行真正的數(shù)據(jù)清除,優(yōu)化了 SSD的效能。同時,由于自動精簡配置模塊工作在驅(qū)動層,不用受到存儲設(shè)備限制,保證了對Trim指令的兼容性。
[0125]請參閱圖5,圖5是本申請計算機系統(tǒng)再一實施方式的結(jié)構(gòu)示意圖。本實施方式中,計算機系統(tǒng)500包括處理器510、內(nèi)存520以及存儲設(shè)備530和總線540,處理器510、內(nèi)存520以及存儲設(shè)備530通過總線540連接。
[0126]存儲設(shè)備530為用于存儲數(shù)據(jù)且速度相對于內(nèi)存520較慢的非易失性存儲設(shè)備,典型的如基于磁技術(shù)進行數(shù)據(jù)保存的傳統(tǒng)硬盤以及新興的SSD等。存儲設(shè)備530可以只包括傳統(tǒng)硬盤或者SSD,或者也可以兩者混用。另外,存儲設(shè)備530未必設(shè)置在計算機系統(tǒng)500內(nèi)部,還可為外部設(shè)備,并通過接口與計算機系統(tǒng)500的總線540連接。
[0127]內(nèi)存520用于存儲從存儲設(shè)備530中加載進來的程序。
[0128]處理器510用于讀取內(nèi)存520中的程序來運行操作系統(tǒng),所述操作系統(tǒng)包括支持Trim指令的文件系統(tǒng),所述處理器510還用于運行位于所述操作系統(tǒng)中的驅(qū)動層中的中間設(shè)備模塊,通過所述中間設(shè)備模塊來執(zhí)行:與文件系統(tǒng)進行交互,使得文件系統(tǒng)感知到所述中間設(shè)備模塊為支持Trim指令的設(shè)備,接收所述文件系統(tǒng)在刪除文件后發(fā)送的用于回收存儲空間的第一 Trim指令,所述第一 Trim指令包括需要回收的邏輯塊地址信息,根據(jù)所述第一 Trim指令執(zhí)行精簡配置技術(shù)中的存儲空間回收方法回收所述邏輯塊地址信息對應(yīng)的存儲空間。
[0129]本實施方式中,在執(zhí)行回收存儲空間前,處理器510先使所述中間設(shè)備模塊與文件系統(tǒng)進行交互,以使文件系統(tǒng)會檢測到中間設(shè)備模塊是否支持Trim指令。例如,處理器510運行文件系統(tǒng)向中間設(shè)備模塊發(fā)送預設(shè)的Trim指令以詢問是否支持Trim指令,中間設(shè)備模塊接收該詢問指令,如果自身支持Trim指令,則處理器510運行中間設(shè)備模塊執(zhí)行根據(jù)該詢問指令向文件系統(tǒng)作發(fā)送應(yīng)答消息,文件系統(tǒng)如果收到該應(yīng)答則確定所述中間設(shè)備模塊為支持Trim指令的設(shè)備。
[0130]處理器510運行文件系統(tǒng)執(zhí)行在刪除文件時,獲取刪除的文件的邏輯塊地址作為需回收的邏輯塊地址,并根據(jù)所述邏輯塊地址生成并下發(fā)出第一 Trim指令,以提示回收存儲空間。處理器510運行中間設(shè)備模塊執(zhí)行在檢測到所述文件系統(tǒng)下發(fā)用于回收存儲空間的第一 Trim指令時,獲取所述第一 Trim指令。其中,所述第一 Trim指令包括需回收的邏輯塊地址信息,如刪除文件所在扇區(qū)起始地址和扇區(qū)數(shù)目。
[0131]處理器510運行中間設(shè)備模塊執(zhí)行對所述第一 Trim指令進行解析,得到所述第一Trim指令中的邏輯塊地址信息,并根據(jù)該邏輯塊地址信息執(zhí)行精簡配置技術(shù)中的存儲空間回收,如回收所述邏輯塊地址指向的邏輯塊,具體如刪除所述邏輯塊地址指向的邏輯塊與存儲設(shè)備的存儲空間之間的映射關(guān)系,實現(xiàn)邏輯塊的回收,即實現(xiàn)了存儲空間的回收。
[0132]優(yōu)選地,處理器510還用于運行中間設(shè)備模塊執(zhí)行:接收所述文件系統(tǒng)發(fā)送的詢問是否支持Trim指令的指令,根據(jù)所述指令向所述文件系統(tǒng)發(fā)送提示支持Trim指令的應(yīng)答,使得文件系統(tǒng)感知到所述中間設(shè)備為支持Trim指令的設(shè)備。
[0133]具體,在中間設(shè)備執(zhí)行存儲空間回收前,處理器510運行文件系統(tǒng)先向中間設(shè)備發(fā)送詢問指令,以詢問中間設(shè)備是否支持Trim指令。處理器510運行中間設(shè)備模塊接收所述文件系統(tǒng)發(fā)送的詢問指令。如果確定中間設(shè)備模塊自身支持Trim指令,則處理器510運行中間設(shè)備模塊向文件系統(tǒng)做出應(yīng)答,以提示支持Trim指令。處理器510運行文件系統(tǒng)執(zhí)行在接收到中間設(shè)備模塊發(fā)送的應(yīng)答后,則確定中間設(shè)備模塊支持Trim指令,并啟動在刪除文件時,可向中間設(shè)備模塊發(fā)送Trim指令以回收存儲空間的機制。
[0134]優(yōu)選地,處理器510還用于運行中間設(shè)備模塊執(zhí)行:接收所述文件系統(tǒng)在刪除文件后發(fā)送的塊的輸入和輸出ΒΙ0,獲得所述BIO中用于回收存儲空間的第一 Trim指令。
[0135]例如,處理器510運行文件系統(tǒng)在檢測到刪除文件時,獲取所述數(shù)據(jù)的邏輯塊地址信息,如刪除的文件所在的起始扇區(qū)地址和扇區(qū)大小,或刪除的文件所在的起始扇區(qū)地址和結(jié)束扇區(qū)地址,作為需回收的邏輯塊地址信息,并將所述邏輯塊地址信息記載在Trim指令中。處理器510運行文件系統(tǒng)將包括邏輯塊地址信息的第一 Trim指令打包成BIO結(jié)構(gòu),通過所述下發(fā)所述ΒΙ0,實現(xiàn)下發(fā)所述第一 Trim指令,其中,所述BIO設(shè)置有回收標記,以表示所述BIO為回收類ΒΙ0,且所述BIO攜帶包括回收信息的第一 Trim指令。
[0136]處理器510運行中間設(shè)備模塊執(zhí)行在接收到文件系統(tǒng)下發(fā)的BIO后,判斷所述BIO是否有回收標記,如果沒有,則表示所述BIO不為回收類ΒΙ0,并結(jié)束流程。如果有,則表示所述BIO為回收類ΒΙ0,所述中間設(shè)備從BIO中獲取到第一 Trim指令。
[0137]需要說明的是,處理器510并不限定運行文件系統(tǒng)將Trim指令打包成ΒΙ0,在其他實施方式中,處理器510還可運行文件系統(tǒng)將Trim指令打包成其他結(jié)構(gòu)進行下發(fā),在此不
作限定。
[0138]優(yōu)選地,處理器510還用于運行中間設(shè)備模塊執(zhí)行:從所述Trim指令中獲得需回收的邏輯塊地址信息,根據(jù)所述邏輯-物理地址映射表中的映射關(guān)系,查找到所述需回收的邏輯塊地址映射的物理塊地址,并刪除所述需回收的邏輯塊地址在邏輯-物理地址映射表中的映射關(guān)系,判斷所述物理塊地址是否屬于所述存儲設(shè)備中的SSD的地址,在所述物理塊地址屬于SSD的地址時,將所述物理塊地址發(fā)送給所述SSD,以使所述SSD擦除所述物理塊地址指向的物理塊,其中,所述邏輯-物理地址映射表用于記錄存儲數(shù)據(jù)的邏輯塊地址與在所述存儲設(shè)備的物理塊地址之間的映射關(guān)系。
[0139]例如,內(nèi)存520中設(shè)置有邏輯-物理地址映射表,如哈希表,所述邏輯-物理地址映射表記錄了文件的邏輯塊地址與存儲設(shè)備的物理塊地址(即存儲空間在存儲設(shè)備中的實際地址)間的映射關(guān)系,通過所述映射關(guān)系實現(xiàn)對文件的實際存儲空間的分配。
[0140]處理器510運行中間設(shè)備模塊執(zhí)行在獲取到BIO中的第一 Trim指令后,對所述第一 Trim指令進行解析,獲得需要回收的邏輯塊地址信息,如被刪除文件所在的起始扇區(qū)地址和扇區(qū)大小,根據(jù)所述扇區(qū)與邏輯塊間的大小關(guān)系,計算得到需回收的邏輯塊起始地址和邏輯塊數(shù)。
[0141]本實施方式中,存儲設(shè)備530包括SSD,由于SSD本身具有識別Trim指令,并根據(jù)Trim指令回收存儲空間的特性。故為了實現(xiàn)不但回收邏輯存儲空間,還回收實際物理存儲空間,處理器510運行中間設(shè)備模塊執(zhí)行在獲取需回收的邏輯塊地址信息后,根據(jù)所述邏輯-物理地址映射表中的映射關(guān)系,即可查找到所述需回收的邏輯塊地址映射的物理塊地址。
[0142]處理器510運行中間設(shè)備模塊判斷查找到的物理塊地址是否屬于所述存儲設(shè)備中SSD的存儲空間地址。在判斷查找到的物理塊地址屬于SSD的存儲空間地址時,處理器510運行中間設(shè)備模塊將所述查找到的物理塊地址通過Trim指令發(fā)送給SSD,SSD在獲得所述Trim指令后,解析出所要回收的物理塊地址,并將所述物理塊地址指向的存儲空間進行回收,實現(xiàn)對存儲空間中存儲的數(shù)據(jù)的真正清除。
[0143]同時,在判斷查找到的物理塊地址不屬于SSD的存儲空間地址,如所述物理塊地址屬于傳統(tǒng)硬盤設(shè)備時,或者查找到的物理塊地址屬于SSD的存儲空間地址,且SSD執(zhí)行物理塊擦除后,處理器510運行中間設(shè)備模塊調(diào)用相關(guān)函數(shù)將邏輯-物理映射表中記錄需要回收的邏輯塊地址與物理塊地址的映射關(guān)系的表項刪除,以表示刪除的物理塊地址指向的存儲空間處于空閑狀態(tài),提示上層系統(tǒng)所述存儲空間可被再使用,進而實現(xiàn)所述存儲空間的回收。
[0144]本申請還提供一種中間設(shè)備的實施方式,所述中間設(shè)備具體如上面實施方式的中間設(shè)備或中間設(shè)備模塊,其中,中間設(shè)備為如圖5所示實施方式所述的中間設(shè)備模塊時,其硬件載體即為如圖5所示的處理器。具體請參閱圖3-5所示和上述實施方式的文字說明,在此不作贅述。[0145]通過上述方案,本申請先虛擬出一個能夠支持Trim指令的中間設(shè)備,在需要對存儲空間進行回收時,通過Trim指令,將需要回收的邏輯塊地址信息發(fā)送給中間設(shè)備,使得管理存儲空間的中間設(shè)備能夠直接根據(jù)邏輯塊地址信息,對相應(yīng)的邏輯塊進行回收,進而實現(xiàn)對存儲設(shè)備相應(yīng)存儲空間的回收,中間設(shè)備直接根據(jù)邏輯塊地址對存儲空間回收,無需對存儲空間寫入數(shù)據(jù)以提示回收,也不無對存儲空間上的數(shù)據(jù)進行遷移,故避免了耗費大量資源。同時,在該技術(shù)方案中,需要回收的數(shù)據(jù)塊是由文件系統(tǒng)通過trim指令發(fā)送,保證了回收數(shù)據(jù)的準確性,以及實時性,也不會造成大量數(shù)據(jù)的遷移,和讀寫操作。另外,自動精簡配置模塊工作在驅(qū)動層,不用受到存儲設(shè)備的限制,保證了兼容性。同時目前主流的文件系統(tǒng)均對trim指令支持。因此基本不用針對文件系統(tǒng)進行特別的設(shè)計支持,進一步保證了兼容性。
[0146]在本申請所提供的幾個實施方式中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施方式僅僅是示意性的,例如,所述模塊或單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
[0147]所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施方式方案的目的。
[0148]另外,在本申請各個實施方式中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。
[0149]所述集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機可讀取存儲介質(zhì)中?;谶@樣的理解,本申請的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)或處理器(processor)執(zhí)行本申請各個實施方式所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(ROM, Read-Only Memory)、隨機存取存儲器(RAM, Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
【權(quán)利要求】
1.一種基于精簡配置技術(shù)的存儲空間回收方法,其特征在于,由位于文件系統(tǒng)與存儲設(shè)備之間的支持精簡配置技術(shù)的中間設(shè)備執(zhí)行,其中,所述文件系統(tǒng)支持Trim指令,所述方法包括: 與所述文件系統(tǒng)進行交互,使得所述文件系統(tǒng)感知到所述中間設(shè)備為支持Trim指令的設(shè)備; 接收所述文件系統(tǒng)在刪除文件后發(fā)送的用于回收存儲空間的第一 Trim指令,所述第一 Trim指令包括需要回收的邏輯塊地址信息; 根據(jù)所述第一 Trim指令執(zhí)行精簡配置技術(shù)中的存儲空間回收方法回收所述邏輯塊地址信息對應(yīng)的存儲空間。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述第一Trim指令執(zhí)行精簡配置技術(shù)中的存儲空間回收方法回收所述邏輯塊地址信息對應(yīng)的存儲空間的步驟包括: 從所述Trim指令中獲得需回收的邏輯塊地址信息; 刪除所述需回收的邏輯塊地址在邏輯-物理地址映射表中的映射關(guān)系,其中,所述邏輯-物理地址映射表用于記錄存儲數(shù)據(jù)的邏輯塊地址與在所述存儲設(shè)備的物理塊地址之間的映射關(guān)系。
3.根據(jù)權(quán)利要求2所述的方 法,其特征在于,所述存儲設(shè)備包括固態(tài)硬件SSD,所述從所述Trim指令中獲得需回收的邏輯塊地址信息的步驟之后還包括: 根據(jù)所述邏輯-物理地址映射表中的映射關(guān)系,查找到所述需回收的邏輯塊地址映射的物理塊地址; 判斷所述物理塊地址是否屬于所述存儲設(shè)備中的固態(tài)硬盤SSD的地址; 如果屬于,則將所述物理塊地址發(fā)送給所述固態(tài)硬盤SSD,以使所述固態(tài)硬盤SSD擦除所述物理塊地址指向的物理塊。
4.根據(jù)權(quán)利要求1至3任一項所述的方法,其特征在于,所述接收所述文件系統(tǒng)在刪除文件后發(fā)送的用于回收存儲空間的第一 Trim指令的步驟包括: 接收所述文件系統(tǒng)在刪除文件后發(fā)送的塊的輸入和輸出BIO,獲得所述BIO中用于回收存儲空間的第一 Trim指令。
5.根據(jù)權(quán)利要求1至4任一項所述的方法,其特征在于,所述與文件系統(tǒng)進行交互,使得文件系統(tǒng)感知到所述中間設(shè)備為支持Trim指令的設(shè)備的步驟包括: 接收所述文件系統(tǒng)發(fā)送的詢問是否支持Trim指令的指令; 根據(jù)所述指令向所述文件系統(tǒng)發(fā)送提示支持Trim指令的應(yīng)答,使得文件系統(tǒng)感知到所述中間設(shè)備為支持Trim指令的設(shè)備。
6.一種中間設(shè)備,其特征在于,所述中間設(shè)備設(shè)置在文件系統(tǒng)與存儲設(shè)備之間,并支持精簡配置技術(shù),其中,所述文件系統(tǒng)支持Trim指令, 所述中間設(shè)備包括交互模塊、接收模塊和回收模塊, 所述交互模塊用于與所述文件系統(tǒng)進行交互,使得所述文件系統(tǒng)感知到所述中間設(shè)備為支持Trim指令的設(shè)備; 所述接收模塊用于接收所述文件系統(tǒng)在刪除文件后發(fā)送的用于回收存儲空間的第一Trim指令,并將所述第一Trim指令發(fā)送給回收模塊,所述第一Trim指令包括需要回收的邏輯塊地址信息;所述回收模塊用于根據(jù)所述第一 Trim指令執(zhí)行精簡配置技術(shù)中的存儲空間回收方法回收所述邏輯塊地址信息對應(yīng)的存儲空間。
7.根據(jù)權(quán)利要求6所述的中間設(shè)備,其特征在于,所述回收模塊包括獲得單元和刪除單元, 所述獲得單元用于從所述Trim指令中獲得需回收的邏輯塊地址信息,并將所述需回收的邏輯塊地址信息發(fā)送給刪除單元; 所述刪除單元用于刪除所述需回收的邏輯塊地址在邏輯-物理地址映射表中的映射關(guān)系,其中,所述邏輯-物理地址映射表用于記錄存儲數(shù)據(jù)的邏輯塊地址與在所述存儲設(shè)備的物理塊地址之間的映射關(guān)系。
8.根據(jù)權(quán)利要求7所述的中間設(shè)備,其特征在于,所述存儲設(shè)備包括固態(tài)硬件SSD,所述回收模塊還包括查找單元、判斷 單元和第一發(fā)送單元, 所述查找單元用于根據(jù)所述邏輯-物理地址映射表中的映射關(guān)系,查找到所述需回收的邏輯塊地址映射的物理塊地址,并將所述物理塊地址發(fā)送給所述判斷單元; 所述判斷單元用于判斷所述物理塊地址是否屬于所述存儲設(shè)備中的固態(tài)硬盤SSD的地址,并將判斷結(jié)果發(fā)送給第一發(fā)送單元; 所述第一發(fā)送單元用于在所述物理塊地址屬于固態(tài)硬盤SSD的地址時,將所述物理塊地址發(fā)送給所述固態(tài)硬盤SSD,以使所述固態(tài)硬盤SSD擦除所述物理塊地址指向的物理塊。
9.根據(jù)權(quán)利要求6至8任一項所述的中間設(shè)備,其特征在于,所述接收模塊具體用于接收所述文件系統(tǒng)在刪除文件后發(fā)送的塊的輸入和輸出BIO,獲得所述BIO中用于回收存儲空間的第一 Trim指令。
10.根據(jù)權(quán)利要求6至9任一項所述的中間設(shè)備,其特征在于,所述交互模塊包括接收單元和第二發(fā)送單元, 所述接收單元用于接收所述文件系統(tǒng)發(fā)送的詢問是否支持Trim指令的指令,并將所述指令發(fā)送給所述第二發(fā)送單元; 所述第二發(fā)送單元用于根據(jù)所述指令向所述文件系統(tǒng)發(fā)送提示支持Trim指令的應(yīng)答,使得文件系統(tǒng)感知到所述中間設(shè)備為支持Trim指令的設(shè)備。
11.一種計算機系統(tǒng),其特征在于,包括處理器、內(nèi)存以及存儲設(shè)備,所述內(nèi)存用于存儲從所述存儲設(shè)備中加載進來的程序,所述處理器用于讀取所述內(nèi)存中的程序來運行操作系統(tǒng),所述操作系統(tǒng)包括支持Trim指令的文件系統(tǒng),所述處理器還用于運行位于所述操作系統(tǒng)中的驅(qū)動層中的中間設(shè)備模塊,通過所述中間設(shè)備模塊來執(zhí)行以下方法: 與所述文件系統(tǒng)進行交互,使得所述文件系統(tǒng)感知到所述中間設(shè)備模塊為支持Trim指令的設(shè)備; 接收所述文件系統(tǒng)在刪除文件后發(fā)送的用于回收存儲空間的第一 Trim指令,所述第一 Trim指令包括需要回收的邏輯塊地址信息; 根據(jù)所述第一 Trim指令執(zhí)行精簡配置技術(shù)中的存儲空間回收方法回收所述邏輯塊地址信息對應(yīng)的存儲空間。
12.根據(jù)權(quán)利要求11所述的計算機系統(tǒng),其特征在于,所述根據(jù)所述第一Trim指令執(zhí)行精簡配置技術(shù)中的存儲空間回收方法回收所述邏輯塊地址信息對應(yīng)的存儲空間的步驟包括:從所述Trim指令中獲得需回收的邏輯塊地址信息; 刪除所述需回收的邏輯塊地址在邏輯-物理地址映射表中的映射關(guān)系,其中,所述邏輯-物理地址映射表用于記錄存儲數(shù)據(jù)的邏輯塊地址與在所述存儲設(shè)備的物理塊地址之間的映射關(guān)系。
13.根據(jù)權(quán)利要求12所述的計算機系統(tǒng),其特征在于,所述存儲設(shè)備包括固態(tài)硬件SSD,所述從所述Trim指令中獲得需回收的邏輯塊地址信息的步驟之后還包括: 根據(jù)所述邏輯-物理地址映射表中的映射關(guān)系,查找到所述需回收的邏輯塊地址映射的物理塊地址; 判斷所述物理塊地址是否屬于所述存儲設(shè)備中的固態(tài)硬盤SSD的地址; 如果屬于,則將所述物理塊地址發(fā)送給所述固態(tài)硬盤SSD,以使所述固態(tài)硬盤SSD擦除所述物理塊地址指向的物理塊。
14.根據(jù)權(quán)利要求11至13任一項所述的計算機系統(tǒng),其特征在于,所述接收所述文件系統(tǒng)在刪除文件后發(fā)送的用于回收存儲空間的第一 Trim指令的步驟包括: 接收所述文件系統(tǒng)在刪除文件后發(fā)送的塊的輸入和輸出BIO,獲得所述BIO中用于回收存儲空間的第一 Trim指令。
15.根據(jù)權(quán)利要求11至14任一項所述的計算機系統(tǒng),其特征在于,所述與文件系統(tǒng)進行交互,使得文件系統(tǒng)感知到所述中間設(shè)備模塊為支持Trim指令的設(shè)備的步驟包括: 接收所述文件系統(tǒng)發(fā)送的詢問是否支持Trim指令的指令; 根據(jù)所述指令向所述文件系統(tǒng)發(fā)送提示支持Trim指令的應(yīng)答,使得文件系統(tǒng)感知到所述中間設(shè)備模塊為支持Trim指令的設(shè)備。
【文檔編號】G06F17/30GK103984641SQ201410220145
【公開日】2014年8月13日 申請日期:2014年5月22日 優(yōu)先權(quán)日:2014年5月22日
【發(fā)明者】姚杰, 馬曉慧, 孫亞萍 申請人:華為技術(shù)有限公司