本技術(shù)涉及固態(tài)硬盤空間回收,尤其涉及一種固態(tài)硬盤空間主動回收方法、裝置、設(shè)備及可讀存儲介質(zhì)。
背景技術(shù):
1、flash?nand(一種非易失性隨機訪問存儲介質(zhì))存在著不能原位覆蓋寫的特性,即在寫之前必須先進行擦除,flash?nand是以page(頁)為單位寫,以block(塊,由若干個page組成)為單位擦除的,即一個block必須在進行整塊的擦除后,它內(nèi)部的多個page才可以按順序的寫。
2、由于flash?nand存在的這個特性,以flash?nand為存儲介質(zhì)的ssd(solid?statedrives,固態(tài)硬盤)在使用的過程中,隨著數(shù)據(jù)寫和修改的次數(shù)增多,里面就會產(chǎn)生有效數(shù)據(jù)和無效數(shù)據(jù)混合在同一個block的現(xiàn)象,這樣的block增加以后就會使無用數(shù)據(jù)占據(jù)過多空間,這些空間必須經(jīng)過回收有效數(shù)據(jù)之后才能擦除再使用,這個時候我們說固態(tài)硬盤進入了平常工作態(tài)。
3、任何的flash?nand都有一定的擦寫壽命,在ssd的平常工作態(tài)下,為了減少不必要的數(shù)據(jù)搬移,現(xiàn)有的ssd空間回收一般都是等到flash?nand的可用空間減少到一定程度后啟動空間回收,等回收到了一定的空間后停止空間回收,以免過度的進行空間回收影響flash?nand的壽命??臻g回收即垃圾回收,是指當ssd中的閃存塊被寫滿后,新的寫入操作將無法進行,因此需要進行垃圾回收以釋放空間,垃圾回收的算法通常采用“寫入放大”策略,即在擦除某個閃存塊之前,將該閃存塊的有效數(shù)據(jù)復(fù)制到其他有空閑空間的閃存塊中,然后對該閃存塊進行擦除操作。
4、由此可見,平常工作態(tài)下的ssd在什么時候執(zhí)行空間回收具有時間上的不確定性,此外如果有效數(shù)據(jù)在各個block內(nèi)的分布較為均勻,ssd就需要從較多的block去執(zhí)行空間回收,就會耗時較長,從而導(dǎo)致ssd在執(zhí)行空間回收時具有性能上的不確定性。綜上,平常工作態(tài)下的ssd執(zhí)行空間回收具有時間上和性能上的不確定性,導(dǎo)致ssd無法確保數(shù)據(jù)高速寫入時的性能要求。
技術(shù)實現(xiàn)思路
1、本技術(shù)提供一種固態(tài)硬盤空間主動回收方法、裝置、設(shè)備及可讀存儲介質(zhì),旨在解決平常工作態(tài)下的ssd執(zhí)行空間回收具有時間上和性能上的不確定性,導(dǎo)致ssd無法確保數(shù)據(jù)高速寫入時的性能要求的技術(shù)問題。
2、第一方面,本技術(shù)實施例提供一種固態(tài)硬盤空間主動回收方法,所述固態(tài)硬盤空間主動回收方法包括:
3、當主機接收到向固態(tài)硬盤高速寫入數(shù)據(jù)前的準備指令時,獲取待寫入數(shù)據(jù)容量,獲取固態(tài)硬盤的邏輯可用容量、邏輯有效數(shù)據(jù)容量及各個存儲單元的數(shù)據(jù)存儲統(tǒng)計;
4、若邏輯可用容量大于等于待寫入數(shù)據(jù)容量,則根據(jù)各個存儲單元的數(shù)據(jù)存儲統(tǒng)計,計算得到固態(tài)硬盤的實際可用容量;
5、若實際可用容量小于待寫入數(shù)據(jù)容量,則根據(jù)待寫入數(shù)據(jù)容量和實際可用容量,計算得到需要回收容量;
6、根據(jù)需要回收容量、各個存儲單元的數(shù)據(jù)存儲統(tǒng)計及讀寫帶寬,計算得到需要回收時長;
7、若需要回收時長小于等于預(yù)設(shè)時長,則向固態(tài)硬盤發(fā)送執(zhí)行空間回收的指令,若需要回收時長大于預(yù)設(shè)時長,則輸出刪除數(shù)據(jù)的提示。
8、可選的,在所述獲取固態(tài)硬盤的邏輯可用容量、邏輯有效數(shù)據(jù)容量及各個存儲單元的數(shù)據(jù)存儲統(tǒng)計之后,還包括:
9、若邏輯可用容量小于待寫入數(shù)據(jù)容量,則輸出刪除數(shù)據(jù)的提示。
10、可選的,所述根據(jù)各個存儲單元的數(shù)據(jù)存儲統(tǒng)計,計算得到固態(tài)硬盤的實際可用容量包括:
11、根據(jù)各個存儲單元的數(shù)據(jù)存儲統(tǒng)計,計算得到固態(tài)硬盤的實際有效數(shù)據(jù)容量;
12、若實際有效數(shù)據(jù)容量和邏輯有效數(shù)據(jù)容量的差值大于預(yù)設(shè)差值,則通知固態(tài)硬盤執(zhí)行trim指令,重新獲取各個存儲單元的數(shù)據(jù)存儲統(tǒng)計,根據(jù)重新獲取的各個存儲單元的數(shù)據(jù)存儲統(tǒng)計,計算得到固態(tài)硬盤的實際可用容量。
13、可選的,所述根據(jù)各個存儲單元的數(shù)據(jù)存儲統(tǒng)計,計算得到固態(tài)硬盤的實際可用容量還包括:
14、從各個存儲單元中查找全部為無效數(shù)據(jù)的存儲單元,計算查找到的全部為無效數(shù)據(jù)的存儲單元的容量總和,得到固態(tài)硬盤的實際可用容量。
15、可選的,所述根據(jù)需要回收容量、各個存儲單元的數(shù)據(jù)存儲統(tǒng)計及讀寫帶寬,計算得到需要回收時長包括:
16、對各個存儲單元按照有效數(shù)據(jù)容量從小到大進行排序,得到排序序列;
17、按照正序遍歷排序序列中的各個存儲單元,根據(jù)存儲單元中的有效數(shù)據(jù)容量和讀寫帶寬計算得到存儲單元的回收時長;
18、當遍歷過的各個存儲單元中的無效數(shù)據(jù)容量的總和達到需要回收容量時,停止遍歷,并統(tǒng)計遍歷過的各個存儲單元的回收時長總和,將各個存儲單元的回收時長總和作為需要回收時長。
19、可選的,所述根據(jù)需要回收容量、各個存儲單元的數(shù)據(jù)存儲統(tǒng)計及讀寫帶寬,計算得到需要回收時長還包括:
20、在遍歷過程中,記錄遍歷過的需要回收的各個存儲單元的編號;
21、所述若需要回收時長小于等于預(yù)設(shè)時長,則向固態(tài)硬盤發(fā)送執(zhí)行空間回收的指令包括:
22、若需要回收時長小于等于預(yù)設(shè)時長,則向固態(tài)硬盤發(fā)送遍歷過的需要回收的各個存儲單元的編號和執(zhí)行空間回收的指令,以供固態(tài)硬盤根據(jù)遍歷過的需要回收的各個存儲單元的編號執(zhí)行空間回收。
23、第二方面,本技術(shù)實施例提供了一種固態(tài)硬盤空間主動回收裝置,所述固態(tài)硬盤空間主動回收裝置包括:
24、獲取模塊,用于當主機接收到向固態(tài)硬盤高速寫入數(shù)據(jù)前的準備指令時,獲取待寫入數(shù)據(jù)容量,獲取固態(tài)硬盤的邏輯可用容量、邏輯有效數(shù)據(jù)容量及各個存儲單元的數(shù)據(jù)存儲統(tǒng)計;
25、第一計算模塊,用于若邏輯可用容量大于等于待寫入數(shù)據(jù)容量,則根據(jù)各個存儲單元的數(shù)據(jù)存儲統(tǒng)計,計算得到固態(tài)硬盤的實際可用容量;
26、第二計算模塊,用于若實際可用容量小于待寫入數(shù)據(jù)容量,則根據(jù)待寫入數(shù)據(jù)容量和實際可用容量,計算得到需要回收容量;
27、第三計算模塊,用于根據(jù)需要回收容量、各個存儲單元的數(shù)據(jù)存儲統(tǒng)計及讀寫帶寬,計算得到需要回收時長;
28、決策執(zhí)行模塊,用于若需要回收時長小于等于預(yù)設(shè)時長,則向固態(tài)硬盤發(fā)送執(zhí)行空間回收的指令,若需要回收時長大于預(yù)設(shè)時長,則輸出刪除數(shù)據(jù)的提示。
29、可選的,所述第一計算模塊,用于:
30、根據(jù)各個存儲單元的數(shù)據(jù)存儲統(tǒng)計,計算得到固態(tài)硬盤的實際有效數(shù)據(jù)容量;
31、若實際有效數(shù)據(jù)容量和邏輯有效數(shù)據(jù)容量的差值大于預(yù)設(shè)差值,則通知固態(tài)硬盤執(zhí)行trim指令,重新獲取各個存儲單元的數(shù)據(jù)存儲統(tǒng)計,根據(jù)重新獲取的各個存儲單元的數(shù)據(jù)存儲統(tǒng)計,計算得到固態(tài)硬盤的實際可用容量。
32、第三方面,本技術(shù)實施例提供了一種固態(tài)硬盤空間主動回收設(shè)備,所述固態(tài)硬盤空間主動回收設(shè)備包括處理器、存儲器、以及存儲在所述存儲器上并可被所述處理器執(zhí)行的固態(tài)硬盤空間主動回收程序,其中所述固態(tài)硬盤空間主動回收程序被所述處理器執(zhí)行時,實現(xiàn)如上述所述的固態(tài)硬盤空間主動回收方法的步驟。
33、第四方面,本技術(shù)實施例提供了一種可讀存儲介質(zhì),所述可讀存儲介質(zhì)上存儲有固態(tài)硬盤空間主動回收程序,其中所述固態(tài)硬盤空間主動回收程序被處理器執(zhí)行時,實現(xiàn)如上述所述的固態(tài)硬盤空間主動回收方法的步驟。
34、本技術(shù)實施例提供的技術(shù)方案帶來的有益效果包括:
35、本技術(shù)實施例中,當主機接收到向固態(tài)硬盤高速寫入數(shù)據(jù)前的準備指令時,獲取待寫入數(shù)據(jù)容量,獲取固態(tài)硬盤的邏輯可用容量、邏輯有效數(shù)據(jù)容量及各個存儲單元的數(shù)據(jù)存儲統(tǒng)計;若邏輯可用容量大于等于待寫入數(shù)據(jù)容量,則根據(jù)各個存儲單元的數(shù)據(jù)存儲統(tǒng)計,計算得到固態(tài)硬盤的實際可用容量;若實際可用容量小于待寫入數(shù)據(jù)容量,則根據(jù)待寫入數(shù)據(jù)容量和實際可用容量,計算得到需要回收容量;根據(jù)需要回收容量、各個存儲單元的數(shù)據(jù)存儲統(tǒng)計及讀寫帶寬,計算得到需要回收時長;若需要回收時長小于等于預(yù)設(shè)時長,則向固態(tài)硬盤發(fā)送執(zhí)行空間回收的指令,若需要回收時長大于預(yù)設(shè)時長,則輸出刪除數(shù)據(jù)的提示。本技術(shù)實施例通過,基于主機控制固態(tài)硬盤的空間主動回收機制,能夠在主機有向固態(tài)硬盤高速寫入數(shù)據(jù)的需求時,提前按照待寫入數(shù)據(jù)的容量進行適量的空間回收,從而能夠保證主機后續(xù)對固態(tài)硬盤進行數(shù)據(jù)高速寫入時的空間及性能,并通過輸出需要回收容量和需要回收時長,以及提供執(zhí)行空間回收指令和主動刪除數(shù)據(jù)選擇,為用戶提供了良好的固態(tài)硬盤空間主動回收體驗。