專利名稱:可丟棄文件的基于卡的管理的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總體涉及存儲器件,且更具體地涉及管理在存儲器件中的文件的方法和設(shè)備。
背景技術(shù):
因為非易失性的存儲器件便攜且它們具有小的物理大小和大的存儲容量,近年來已經(jīng)快速地增加了非易失性的存儲器件的使用。存儲器件以各種設(shè)計出現(xiàn)。一些存儲器件被視為“嵌入式”,意味著它們不能且不意圖由用戶從與其一起工作的主機設(shè)備上移除。其他存儲器件是可移除的,這意味著用戶可以從一個主機設(shè)備(例如,從數(shù)碼相機)移除它們到另一設(shè)備,或用另一個存儲器件來替換一個存儲器件。在存儲器件中存儲的數(shù)字內(nèi)容可以來源于存儲器件的主機。例如,數(shù)碼相機(一種示例的主機)捕獲圖像且將它們翻譯為對應(yīng)的數(shù)字?jǐn)?shù)據(jù)。然后,數(shù)據(jù)相機在與其一起操作的存儲器件中存儲數(shù)字?jǐn)?shù)據(jù)。在存儲器件中存儲的數(shù)字內(nèi)容還可以來源于遠(yuǎn)程源:其可以例如通過數(shù)據(jù)網(wǎng)絡(luò)(例如,因特網(wǎng))或通信網(wǎng)絡(luò)(例如,蜂窩電話網(wǎng)絡(luò))向存儲器件的主機發(fā)送,且然后由該主機下載到存儲器件。遠(yuǎn)程源可以是例如服務(wù)提供者或內(nèi)容提供者。服務(wù)提供者和內(nèi)容提供者以下統(tǒng)稱為“發(fā)行商(publishers)”。隨著移動手持機內(nèi)的存儲器件在大小和容量上增長,出現(xiàn)了活躍的用于內(nèi)容獲取和消費的新場景。通常,可以使用手持機來消費從操作員控制的服務(wù)器諸如蘋果(Apple)的iTunes服務(wù)的市場應(yīng)用下載的和自諸如SanDisk的slotMedia卡的源側(cè)裝載(side-loaded)的電影和音樂。但是,在所有這些應(yīng)用中,用戶必須主動搜尋他想要消費的內(nèi)容,指示并授權(quán)該內(nèi)容的獲取,獲取該內(nèi)容,然后消費它。這減少了內(nèi)容所有者提供用于瞬時消費的內(nèi)容的能力、和用戶立即看到他獲取的東西而不用等待其下載的能力。已圍繞向用戶預(yù)先載入內(nèi)容創(chuàng)建了若干產(chǎn)品開端,但是他們都有一個共同的缺陷:用戶必須犧牲其自己的存儲容量來存儲內(nèi)容,但直至在購買它之后才能訪問該內(nèi)容。必須購買該容量的用戶通常不想看到該容量的很大部分被分配給他們不能實際使用的內(nèi)容。存儲器件的用戶可以自愿通過從發(fā)行商請求媒體內(nèi)容或廣告來下載媒體內(nèi)容和廣告。但是,有時,想要提高他們收入的發(fā)行商在不征求用戶的許可的情況下,向用戶發(fā)送內(nèi)容,且有時甚至用戶不知道這種內(nèi)容已被下載到他們的存儲器件了。發(fā)行商在未得到用戶同意的情況下向用戶發(fā)送的內(nèi)容在此被稱為“主動提供的內(nèi)容”。通常,主動提供的內(nèi)容意圖由用戶在支付之后、或在承諾給發(fā)行商支付費用之后消費。通過將主動提供的內(nèi)容下載至用戶的存儲器件,發(fā)行商希望用戶將最終以付費方式消費該主動提供的內(nèi)容以獲得費用,由此增加他們的收益。發(fā)行商在不征求用戶同意的情況下將主動提供的內(nèi)容存儲在存儲器件上從而希望該用戶以付費方式消費這些內(nèi)容,該發(fā)行商的這種行為在媒體發(fā)布領(lǐng)域中稱為“預(yù)測寄售(predictive consignment)”。但是,主動提供的內(nèi)容可以仍然存儲在存儲器件中,而不需要存儲器件的用戶得知其存在或想要消費它。在存儲器件中存儲主動提供的內(nèi)容減少了在存儲器件上的可用(即,空閑)用戶存儲空間,這從用戶的角度是不期望的。用戶可能發(fā)現(xiàn)在存儲器件中存在更少空間來用于用戶自己的內(nèi)容(例如,音樂文件),因為其他人(即,一些發(fā)行商)已經(jīng)占據(jù)了存儲器件上的部分存儲空間,或用戶可能必須通過刪除主動提供的內(nèi)容來收回(recIaim)如此占用的存儲空間。對占據(jù)用戶的部分存儲空間的該問題的一個部分解決方案包括阻止發(fā)行商對存儲器件的訪問,諸如通過阻止發(fā)行商的網(wǎng)站。該解決方案可能對用戶是可接受的,但是其從發(fā)行商的角度來說是有問題的,這是因為發(fā)行商將得到更少的銷售額且損失潛在的收益源。對該問題的另一部分解決方案包括向主機發(fā)布內(nèi)容(即,將內(nèi)容文件存儲在這些主機的存儲器件中),且當(dāng)內(nèi)容變得不相關(guān)時移除該內(nèi)容。換句話說,產(chǎn)生了該內(nèi)容的發(fā)行商當(dāng)該內(nèi)容變得不相關(guān)時從存儲器件移除所存儲的主動提供的內(nèi)容。如果已經(jīng)經(jīng)過了用于消費的時間,或當(dāng)存在該用戶不可能消費它的指示時,主動提供的內(nèi)容被視為無關(guān)。因此,需要一種新技術(shù),其智能地管理手持存儲器、以便用戶在無損失的情況下自由地使用他們的存儲器、同時仍然使得內(nèi)容所有者能夠向手持機推送內(nèi)容。換句話說,存在解決主動提供的文件帶來的問題的需要。具體地,雖然應(yīng)該允許發(fā)行商在進行其商業(yè)的過程中向存儲器件下載主動提供的內(nèi)容時,但這些下載不應(yīng)該對用戶體驗產(chǎn)生本質(zhì)上阻礙的影響。
發(fā)明內(nèi)容
因此,以下情形將有益:只要用戶文件不需要在存儲器件中容納它們所需的存儲空間即能夠在存儲器件存儲主動提供的文件,以及能夠從存儲器件移除主動提供的文件以便為用戶文件保證最小的空閑存儲空間。各種實施例被設(shè)計來實現(xiàn)這種文件管理,在此提供其例子。在一個實施方式中,提供用于在不需要修改主機操作系統(tǒng)的情況下實現(xiàn)主動提供的文件在存儲器件上的存儲和移除的機制將是有益的。為了解決上述問題,在存儲器件中的存儲的文件或要存儲的文件是不可丟棄的且與存儲設(shè)備中維持的主機文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)相關(guān)聯(lián),或標(biāo)記為是可丟棄的且在存儲設(shè)備中的可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)中相關(guān)聯(lián)。每個可丟棄的文件與丟棄優(yōu)先級相關(guān)。只有在將新發(fā)行商的文件(即,主動提供的文件)存儲在存儲器件中不使保留用于用戶文件的存儲使用安全余量變窄超過所期望余量時,才允許將其存儲在存儲器件中。另一方面,即使用戶文件的存儲使存儲使用安全余量變窄超過期望寬度的情況下也允許將其存儲在存儲器件中。但是,在這種情況下,通過從存儲器件移除一個或多個可丟棄文件來恢復(fù)存儲安全余量的期望寬度。如果可丟棄文件的丟棄優(yōu)先級等于或高于(或,低于,如在此描述的)預(yù)定丟棄閾值,則將該可丟棄文件從存儲器件移除。根據(jù)一個方面,為了解決對于在不需要改變主機操作系統(tǒng)的情況下允許存儲設(shè)備管理可丟棄文件的機制的需要,公開了用存儲設(shè)備管理文件的方法,該方法由操作性地耦合于主機的存儲設(shè)備實現(xiàn),存儲設(shè)備具有含有用戶文件、空閑空間和可丟棄文件的存儲區(qū)域。該方法包括:存儲設(shè)備在可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)中標(biāo)識空閑簇和與可丟棄文件相關(guān)的簇的記錄;從主機接收在存儲區(qū)域中存儲用戶文件的請求;確定與請求中的數(shù)據(jù)相關(guān)聯(lián)的邏輯塊地址(LBA)是否處于與可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)中的記錄中的簇相關(guān)聯(lián)的邏輯塊地址的范圍中;以及當(dāng)LBA處于該范圍且在該范圍中存在可用的空閑空間時,將用戶文件的LBA映射到可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)中標(biāo)識的空閑簇;以及隨后,從所述可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)中,移除映射到用戶文件的LBA的簇。在本方法的另一方面,當(dāng)LBA處于該范圍且在該范圍中不存在可用的空閑空間時,該存儲設(shè)備可以執(zhí)行以下步驟:丟棄至少一個可丟棄文件以創(chuàng)建空閑簇;將用戶文件的LBA映射到通過丟棄至少一個可丟棄文件而創(chuàng)建的空閑簇;以及隨后,從所述可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)中,移除映射到用戶文件的LBA的簇。該方法還可以包括:在所述存儲設(shè)備的存儲區(qū)域中維持主機文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)、和與主機文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)獨立地維持所述可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu),所述可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)包括存儲區(qū)域中對應(yīng)于存儲區(qū)域中的至少一個可丟棄文件的簇列表,且其中在主機文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)中將所述至少一個可丟棄文件標(biāo)識為空閑空間。所述可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)可以以表格、哈希映射、二進制樹、陣列或列表的形式。在另一方面中,公開了與主機可移除地連接的存儲設(shè)備。該存儲設(shè)備包括具有用戶文件、空閑空間和可丟棄文件的存儲區(qū)域。該存儲設(shè)備還包括與存儲區(qū)域通信的控制器。該控制器被配置以在可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)中標(biāo)識空閑簇和與可丟棄文件相關(guān)的簇的記錄。該控制器還被配置以從主機接收在存儲區(qū)域中存儲用戶文件的請求,并確定與請求中的數(shù)據(jù)相關(guān)聯(lián)的邏輯塊地址(LBA)是否處于與可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)中的記錄中的簇相關(guān)聯(lián)的邏輯塊地址的范圍中。當(dāng)LBA處于該范圍且在該范圍中存在可用的空閑空間時該控制器被配置以將用戶文件的LBA映射到可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)中標(biāo)識的空閑簇,以及隨后從可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)中移除被映射到用戶文件的LBA的簇。
在附圖中圖示各種示例實施例,意圖這些例子不是限制性的。應(yīng)理解,為了圖示的簡化和清楚,以下引用的圖中所示的元件不一定被畫成成比例的。而且,在認(rèn)為適當(dāng)時,可以在附圖之間重復(fù)使用附圖標(biāo)記來指示相同的、對應(yīng)的或類似的元件。在附圖中:圖1是根據(jù)示例實施例的存儲系統(tǒng)的方框圖。圖2是根據(jù)另一示例實施例的存儲系統(tǒng)的方框圖。圖3是根據(jù)示例實施例的存儲分配器的方框圖。圖4是根據(jù)示例實施例的用于管理文件的方法。圖5是根據(jù)示例實施例的用于管理在存儲器件中的可丟棄文件的存儲的方法。圖6是用于根據(jù)示例實施例的用于在FAT32結(jié)構(gòu)的文件系統(tǒng)中標(biāo)記一個或多個主動提供的文件的方法。圖7是與FAT32表相關(guān)聯(lián)的示例目錄區(qū)域。圖8是根據(jù)示例實施例的FAT32表。圖9是根據(jù)示例實施例的NTFS表。圖10是根據(jù)示例實施例的基于FAT的文件系統(tǒng)的邏輯映像。
圖11示范了根據(jù)該公開的文件的存儲管理方法。圖12a圖示示例的主FAT。圖12b圖示示例的可丟棄FAT。圖13是用于使用主FAT和可丟棄FAT來管理存儲器件的方法的流程圖。圖14是用于使用FAT和數(shù)據(jù)庫來管理存儲器件的方法的流程圖。圖15是用于使用FAT和位置文件來管理存儲器件的方法的流程圖。圖16圖示了包括簇鏈的示例FAT,其中,組成該簇鏈的兩個或多個簇的順序已經(jīng)被打亂。圖17圖示了示例FAT和相關(guān)位置文件,其中,F(xiàn)AT包括簇鏈,其中,組成該簇鏈的兩個或更多簇的順序已經(jīng)被打亂。圖18是用于使用FAT管理存儲器件的方法的流程圖,其中,組成簇鏈的兩個或更多簇的順序被打亂。圖19是用于使用轉(zhuǎn)換鎖(conversion lock)來防止當(dāng)可丟棄文件在實現(xiàn)主FAT和可丟棄FAT的文件系統(tǒng)中打開時轉(zhuǎn)換可丟棄文件。圖20圖示在文件系統(tǒng)中的示例位掩碼(mask)用戶ID。圖21圖示智能高速緩存的客戶端側(cè)組件。圖22示出如為智能高速緩存HD修改的可丟棄文件的文件系統(tǒng)結(jié)構(gòu)。圖23是用于在智能高速緩存HD系統(tǒng)中使用的大文件管理器的方框圖。圖24描述大可丟棄文件的轉(zhuǎn)換流程。圖25是圖示用大文件管理器來處理轉(zhuǎn)換請求的方法的流程圖。圖26描述作為可以被分裂的文件的例子的Matroska文件結(jié)構(gòu)。圖27描述分裂的Matroska文件。圖28是根據(jù)另一示例實施例的存儲系統(tǒng)的方框圖。圖29是用于實現(xiàn)可丟棄文件的基于卡的管理的方法的流程圖。圖30是用于管理向存儲器件的存儲區(qū)域下載可丟棄文件的方法的流程圖。
具體實施例方式以下的描述提供示例實施例的各種細(xì)節(jié)。但是,該描述不意圖限制權(quán)利要求的范圍,而是用于本發(fā)明的各種原理和實踐它的方式。為了解決主動提供的內(nèi)容和相關(guān)問題,向用戶文件給定超出其他文件的存儲優(yōu)先級,且維持存儲使用安全余量以保證該優(yōu)先級?!坝脩粑募笔谴鎯ζ骷挠脩糇栽复鎯蛞呀?jīng)同意其在存儲器件中存儲的文件。例如,用戶向她/他的存儲器件下載的音樂文件被視為用戶文件。被用戶請求或同意存儲,用戶文件被視為“索求的”文件?!捌渌募痹诖酥浮鞍l(fā)行商文件”和“主動提供的文件”?!鞍l(fā)行商文件”是在用戶未請求它或未意識到它(至少一段時間還沒有)的情形下在存儲器件中存儲的文件。用戶可能不想要使用主動提供的文件。未使用的主動提供的文件趨于消費在用戶的存儲器件上的昂貴存儲空間。因此,根據(jù)在此公開的原理,只有存儲這種文件不致縮小存儲使用安全余量才允許將此文件存儲在存儲器件中。通過維持將被保留用于未來的用戶的文件的空閑存儲空間(即,存儲使用安全余量)來向用戶文件呈現(xiàn)存儲優(yōu)先級。必須維持存儲使用安全余量以便保證無論何時需要或期望時都可以在存儲器件中存儲用戶文件。如果出于一些原因,存儲使用安全余量變得比期望的窄,則將從存儲器件移除(SP刪除)一個或多個主動提供的文件以便恢復(fù)存儲使用安全余量。維持存儲使用安全余量保證在附加的用戶文件被下載到存儲器件的情況下用于這種文件的存儲空間。為此將在存儲文件系統(tǒng)的結(jié)構(gòu)中主動提供的文件標(biāo)記為“可丟棄的”,且如果需要,稍后將其移除來至少收回維持存儲使用安全余量所需的空閑存儲空間。因為用戶使用各種可丟棄文件的概率在一個可丟棄文件和另一個之間可能不同,因此,根據(jù)一個或多個標(biāo)準(zhǔn),諸如使用文件的概率、與使用文件相關(guān)聯(lián)的可能收益、文件的大小、文件的類型、文件的位置、文件的年代等,預(yù)先給每個主動提供的文件(即,每個可丟棄文件)分配丟棄優(yōu)先級。例如,可以通過收益的潛在可能來確定丟棄優(yōu)先級。根據(jù)另一例子,電影宣傳片或廣告將具有比實際電影更高的丟棄優(yōu)先級,這是因為用戶通常不喜歡看宣傳片和廣告。根據(jù)另一例子,最可能被用戶使用的一個或多個可丟棄文件將被分配最低丟棄優(yōu)先級,這意味著這種文件將是從存儲器件移除的最后的(一個或多個)文件。換句話說,可丟棄文件的使用概率越高,被分配給該文件的丟棄優(yōu)先級的級別越低。如果即使一個或多個可丟棄文件被移除了,期望的存儲使用安全余量也不完全恢復(fù),則將從存儲器件移除另外的可丟棄文件,直到恢復(fù)期望的存儲使用安全余量。簡言之,諸如文件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)實現(xiàn)用于了存儲和組織計算機文件的方法。文件系統(tǒng)包括針對存儲、層次地組織、操縱、導(dǎo)航、訪問和提取數(shù)據(jù)而實施的抽象數(shù)據(jù)類型和元數(shù)據(jù)的集合。抽象的數(shù)據(jù)類型和元數(shù)據(jù)形成“目錄樹”,通過該“目錄樹”,可以訪問、操縱和啟動計算機文件(在此也簡稱為“數(shù)據(jù)文件”或“文件”)。“目錄樹”通常包括根目錄和可選的子目錄。目錄樹被存儲在文件系統(tǒng)中作為一個或多個“目錄文件”。在文件系統(tǒng)中包括的元數(shù)據(jù)和目錄文件的集合在此被稱為“文件系統(tǒng)結(jié)構(gòu)”。因此,文件系統(tǒng)包括數(shù)據(jù)文件和有助于訪問、操縱、更新、刪除和啟動該數(shù)據(jù)文件的文件系統(tǒng)結(jié)構(gòu)。文件分配表(“FAT”)是示例的文件系統(tǒng)架構(gòu)。FAT文件系統(tǒng)與包括DR-DOS,OpenDOS, MS-DOS, Linux, Windows等的各種操作系統(tǒng)一起使用。FAT結(jié)構(gòu)的文件系統(tǒng)使用集中了存儲關(guān)于哪些存儲區(qū)域是空閑或被分配的和每個文件被存儲在存儲器件上哪里的信息的表。為了限制該表的大小,按稱為“簇”的連續(xù)扇區(qū)的組向文件分配存儲空間。由于存儲器件已經(jīng)演化,因此簇的最大數(shù)量已經(jīng)增加且用于標(biāo)識簇的位的數(shù)量已經(jīng)增長了。FAT格式的版本來源于表位的數(shù)量:FAT12使用12位;FAT16使用16位,且FAT32使用32位。另一文件系統(tǒng)架構(gòu)已知為新技術(shù)文件系統(tǒng)(“NTFS”)。目前,NTFS是Windows NT、包括其稍后的版本 Windows2000, Windows XP, Windows Server2003, Windows Server2008,和Windows Vista的標(biāo)準(zhǔn)文件系統(tǒng)。FAT32和NTFS是可以向存儲器件100提供的示例文件系統(tǒng)。圖1示出了典型的存儲器件100。存儲器件100包括存儲各種文件(例如,音樂文件、視頻文件等)的存儲區(qū)域110,各種文件中的一些可以是用戶文件,且其他可以是發(fā)行商文件。存儲器件100還包括經(jīng)由數(shù)據(jù)和控制線130來管理存儲區(qū)域110的存儲控制器120。存儲控制器120還經(jīng)由主機接口 150與主機設(shè)備140通信。主機設(shè)備140可以是專用硬件或通用計算平臺。存儲區(qū)域110可以是例如NAND閃存類型的。存儲控制器120通過控制例如“讀”,“寫”和“擦除”操作、損耗平衡等且通過控制與主機140的通信來控制所有去往/來自存儲區(qū)域110的數(shù)據(jù)傳輸和去往/來自主機設(shè)備140的數(shù)據(jù)傳輸。存儲區(qū)域110可以包含例如用戶文件和發(fā)行商的文件、被允許僅由授權(quán)主機設(shè)備使用的受保護數(shù)據(jù)、和僅由存儲控制器120內(nèi)部使用的安全數(shù)據(jù)。主機(例如主機140)不能直接訪問存儲區(qū)域110。也就是說,如果主機140要求或需要來自存儲器件100的數(shù)據(jù),主機140必須向存儲控制器120請求它。為了有助于容易地訪問在存儲設(shè)備100中存儲的數(shù)據(jù)文件,給存儲設(shè)備100提供文件系統(tǒng)160。存儲區(qū)域110在功能地被劃分為三個部分:用戶區(qū)域170、發(fā)行者區(qū)域180和空閑存儲空間190。用戶區(qū)域170是其中存儲了用戶文件的存儲區(qū)域110內(nèi)的存儲空間。發(fā)行商區(qū)域180是其中存儲了發(fā)行商文件的存儲區(qū)域110內(nèi)的存儲空間??臻e的存儲空間190是存儲區(qū)域110內(nèi)的空的存儲空間??梢允褂每臻e的存儲空間190來保存用戶文件或發(fā)行者文件。當(dāng)在空閑存儲空間190中存儲用戶文件時,將保存用戶文件的存儲空間從空閑存儲空間190中減去并添加到用戶區(qū)域170。類似地,當(dāng)在空閑存儲空間190中存儲用戶文件時,保存發(fā)行商文件的存儲空間從空閑存儲空間190中減去并添加到發(fā)行商區(qū)域180。如果從存儲區(qū)域110移除(S卩、刪除)用戶文件或發(fā)行商文件,空閑了的存儲空間添加到(其返回至Ij)空閑存儲空間190。如果空閑存儲空間190的大小允許,則存儲器件100的用戶可以從主機140下載用戶文件到存儲區(qū)域110。下載的用戶文件將被存儲在空閑存儲空間190中,且如以上所述,保存該文件的存儲空間將從空閑的存儲空間190減去且被添加到用戶區(qū)域170。如上所述,用戶文件具有高于其他(例如,發(fā)行商)文件的優(yōu)先級,且為了保證該優(yōu)先級,設(shè)置期望的存儲使用安全余量,且如果需要,以以下描述的方式恢復(fù)期望的存儲使用安全余量。主機140包括存儲分配器144,其有助于恢復(fù)空閑存儲空間190。存儲分配器144可以是硬件、固件、軟件或其組合。通常,存儲分配器144確定向主機140通信的文件(例如文件142)是用戶文件還是發(fā)行商文件,且然后相應(yīng)地標(biāo)記所通信的文件(B卩,作為不可丟棄的文件或作為可丟棄的文件)。如果存儲分配器114確定向主機140通信的文件(例如,文件142)是不可丟棄的,例如,因為該文件是用戶文件,則存儲分配器144以常規(guī)的方式在存儲區(qū)域110中存儲該文件。如上所述,存儲區(qū)域100內(nèi)的保存不可丟棄文件的存儲空間將被添加到用戶區(qū)域170或是用戶區(qū)域170的一部分。但是,如果存儲分配器144確定向主機140傳送的文件是可丟棄的,例如因為其是發(fā)行商文件,則存儲分配器144標(biāo)記該文件為可丟棄的。應(yīng)理解,在一些實施方式中,為了將文件標(biāo)記為可丟棄的,存儲分配器144標(biāo)記在文件系統(tǒng)160中的文件系統(tǒng)結(jié)構(gòu)以指示該文件是可丟棄文件。在其他實施方式中,為了標(biāo)記該文件為可丟棄的,存儲分配器144將文件本身標(biāo)記為可丟棄文件。如果空閑存儲空間190大于期望的存儲使用安全余量,則存儲分配器144還在空閑存儲空間190中存儲標(biāo)記的可丟棄文件,且如上所述,將保持可丟棄文件的空閑存儲空間190內(nèi)的存儲空間從空閑存儲空間190中減去(SP,減小空閑存儲空間),且添加至發(fā)行商區(qū)域180 (該添加在邏輯上示為可丟棄文件182)。如上所述,發(fā)行商文件可以被用戶使用的概率在不同發(fā)行商文件之間可能不同,這使得具有最小使用概率的發(fā)行商文件成為從存儲區(qū)域110移除的第一候選。因此,除了標(biāo)記文件為不可丟棄的或可丟棄的以外,存儲分配器144在可丟棄文件被存儲在存儲區(qū)域110中之前、同時或之后還給每個可丟棄文件分配丟棄優(yōu)先級。存儲分配器144藉由向每個可丟棄文件分配的丟棄級別還知道可以或應(yīng)該丟棄(即從存儲區(qū)域110刪除或移除)可丟棄文件的以便恢復(fù)為未來的用戶文件而原始預(yù)留的空閑存儲空間(即,恢復(fù)期望的存儲使用安全余量)的順序。因此,如果用戶想要在存儲區(qū)域110中存儲新用戶文件,但是沒有足夠的空閑存儲空間來容納該用戶文件(這意味著存儲使用安全余量比期望的窄),存儲分配器144使用被分配給可丟棄文件的丟棄優(yōu)先級來一個接一個迭代地刪除可丟棄文件,來收回更多的空閑存儲空間(即,擴展空閑的存儲空間190),直到期望的存儲使用安全余量被完全恢復(fù)。如上所述,完全恢復(fù)的存儲使用安全余量高概率地保證足夠的空閑存儲空間被預(yù)留用于未來的用戶文件。僅響應(yīng)于接收到存儲新用戶文件的請求時,才從存儲器件100移除或刪除可丟棄文件,這是因為考慮用戶可能有時想要使用存儲的可丟棄文件,且因此,只有新用戶文件需要容納該文件的存儲空間時,才從存儲器件移除可丟棄文件。存儲分配器144可以被嵌入或并入到主機140中,或其可以駐留在主機140和存儲器件100的外部(被示出為虛線框144’)。存儲分配器144具有存儲器件100的、或與其相關(guān)聯(lián)的文件系統(tǒng)的代表性映像。存儲分配器144使用存儲器件的文件系統(tǒng)映像來將文件標(biāo)記為不可丟棄的或為可丟棄的,且向每個可丟棄文件分配丟棄級別。在一個例子中,文件系統(tǒng)包括FAT,且在該情況下,在與該文件相關(guān)的FAT條目的未使用部分中,通過設(shè)置一個或多個未使用的位來進行該標(biāo)記。因為不同的文件系統(tǒng)具有不同的結(jié)構(gòu),標(biāo)記文件(即為不可丟棄或可丟棄的)且分配丟棄級別適用于使用的文件系統(tǒng)結(jié)構(gòu),如在圖6到10中所詳述以及結(jié)合這些圖所描述的。圖2是根據(jù)另一示例實施例的便攜存儲器件200的方框圖。存儲控制器220類似于存儲控制器120 —樣運作,且存儲分配器244類似于存儲分配器144 一樣運作。存儲分配器244可以是硬件、固件、軟件或其任意組合。存儲分配器244內(nèi)部地與存儲控制器220合作。無論何時存儲控制器220從主機240接收在存儲區(qū)域210中存儲文件的存儲請求,該請求包括該文件是否是可丟棄文件的指示,存儲控制器220都通知存儲分配器244該存儲請求和該文件是否是可丟棄的。然后,存儲分配器244在與存儲器件200相關(guān)的文件系統(tǒng)的結(jié)構(gòu)中標(biāo)記該文件為不可丟棄或可丟棄。通常,在主機240上運行的應(yīng)用確定文件是可丟棄文件,并向存儲控制器220發(fā)送標(biāo)記或其他指示來指示該文件是可丟棄文件。在主機240上運行的應(yīng)用發(fā)送標(biāo)記或其他指示作為用于請求在存儲器件上存儲文件的存儲協(xié)議的部分。這種存儲協(xié)議的例子包括POSIX文件系統(tǒng)功能或java.1o類樹的使用。如果存儲分配器244確定該新文件是可丟棄的,存儲分配器244根據(jù)文件的使用概率向新文件分配丟棄優(yōu)先級。然后,存儲分配器244評估空閑存儲空間290的當(dāng)前大小,且決定是否應(yīng)該從存儲區(qū)域210移除(即,刪除)一個或多個可丟棄文件以便為新文件制造空間。如果應(yīng)該從存儲器件移除可丟棄的一個文件或多個文件,則存儲分配器244決定哪個(些)文件是用于移除的當(dāng)前候選文件。然后,存儲分配器244通知存儲控制器220應(yīng)該從存儲區(qū)域210移除的可丟棄文件,且響應(yīng)于該通知,存儲控制器220移除由存儲分配器244指示的可丟棄的一個文件或多個文件。在便攜存儲器件200的一些配置中,存儲分配器244可以被功能性地放置在存儲控制器220和存儲區(qū)域210之間。在其中存儲分配器244被功能性地放置在存儲控制器220和存儲區(qū)域210之間的配置中,存儲分配器244或存儲區(qū)域210必須承擔(dān)存儲控制器220的一些功能。在這種配置中,存儲區(qū)域210由以高于快閃NAND協(xié)議的級別來通信的存儲器單元構(gòu)成。圖3是根據(jù)示例實施例的存儲分配器300的方框圖。存儲分配器300包括存儲器單元310、處理器320和接口 330。存儲器單元310可以保持與存儲器件(例如,圖2的存儲器件200)相關(guān)聯(lián)的文件系統(tǒng)結(jié)構(gòu)或文件系統(tǒng)結(jié)構(gòu)的映像。處理器320管理與該存儲器件相關(guān)聯(lián)的文件系統(tǒng)。接口 330可以適用于與主機和與存儲器件的存儲控制器合作,如圖1中所示的,或僅與存儲器件的存儲控制器合作,如在圖2中所示的。處理器320被配置為或適用于經(jīng)由接口 330接收請求,來在存儲器件的存儲區(qū)域中存儲文件、且在與存儲分配器300 —起操作的存儲器件相關(guān)聯(lián)的文件系統(tǒng)的結(jié)構(gòu)中標(biāo)記該文件為可丟棄的或為不可丟棄的。如果接口 330功能地附接于圖2的存儲控制器220(且因此接收例如SCSI或打包的(wrapped)USB/MSC命令,而不是文件級別的命令),所接收的請求處于比文件級別低得多的級別。也就是說,所接收的請求將是在邏輯塊地址處存儲扇區(qū)的請求,當(dāng)由主機適當(dāng)?shù)胤g時,該邏輯塊地址將對應(yīng)于一個文件。如果存儲控制器220支持NVMHCI協(xié)議或諸如NFS或類似協(xié)議的聯(lián)網(wǎng)文件系統(tǒng)協(xié)議,存儲控制器220可以得到文件級別的請求。因此,在諸如存儲控制器220的存儲控制器和諸如接口 330的接口之間的通信不限于NVMHCI或類似于NVMHCI的實施方式。通信接口 330可以與存儲分配器300是一體的,如圖3所示。處理器320還被配置為或適用于向存儲器件發(fā)送標(biāo)記文件,標(biāo)記該文件為可丟棄的步驟包括向該文件分配丟棄優(yōu)先級的步驟。如果由存儲器件使用的文件系統(tǒng)是基于FAT的,處理器320通過在對應(yīng)于標(biāo)記的文件的FAT中向m個最高(即,最高有效)位(例如,m=4)設(shè)置對應(yīng)的值,向標(biāo)記的文件分配丟棄優(yōu)先級。設(shè)置給在FAT條目中的最高有效位的對應(yīng)值、或設(shè)置給NTFS目錄條目的值可以是文件的屬性(attribute),或可以與文件的屬性相關(guān)?!皩傩浴币馕吨贔AT表或NTFS表的頭部中的元數(shù)據(jù)標(biāo)簽或某種數(shù)據(jù)結(jié)構(gòu),該FAT表或NTFS表包含關(guān)于該表內(nèi)存儲的內(nèi)容的類型的信息。“廣告”、“獎勵內(nèi)容”和“推廣(空閑)內(nèi)容”是可以在FAT表或在NTFS表中存儲的示例類型的內(nèi)容。設(shè)置丟棄級別的替換標(biāo)準(zhǔn)是例如最后訪問的文件、文件大小、文件類型等。專用于標(biāo)記文件的FAT32條目的最高位的數(shù)量m可以是四個或少于四個,這是因為不使用這些位。另外,所使用的位越多,則可以使用的丟棄優(yōu)先級越多。例如,使用三個位(即,m=3)提供八個(23=8)丟棄優(yōu)先級且使用四個位(即,m=4)提供十六個(24=16)丟棄優(yōu)先級(即,包括被分配給不可丟棄的文件的丟棄優(yōu)先級“O”)。換句話說,如果標(biāo)記的文件是不可丟棄的,所述處理器將m個最高位的值設(shè)置為0,或如果標(biāo)記的文件是可丟棄的,m個最高位的值則設(shè)置為在I和2m-l之間的值。丟棄優(yōu)先級指示標(biāo)記文件可以或應(yīng)該從存儲器件丟棄的優(yōu)先級。例如,取決于實施方式,值“I”可以表示以最低優(yōu)先級或以最高優(yōu)先級可丟棄的文件,且值“2m_l”可以分別表示以最高優(yōu)先級或以最低優(yōu)先級可丟棄的文件。處理器320可以根據(jù)文件的預(yù)期使用,如上文結(jié)合要由存儲器件的用戶使用主動提供的文件的概率或可能性所解釋的,來向標(biāo)記文件分配丟棄優(yōu)先級。處理器320可以憑借或響應(yīng)于接收存儲器件中存儲新文件的每個請求,更新標(biāo)記文件的丟棄優(yōu)先級。處理器320可以與在存儲器件中存儲文件的一個或多個新請求獨立地更新給定的標(biāo)記文件的丟棄優(yōu)先級。例如,先前是高優(yōu)先級的文件可以在特定時間間隔之后降低其優(yōu)先級。如果在存儲器件中存儲的文件與等于或大于預(yù)定丟棄閾值的丟棄優(yōu)先級相關(guān)聯(lián)則處理器320刪除該文件。處理器320可以基于文件寫或添加的數(shù)量,或取決于對存儲器件上的空閑存儲空間的預(yù)期使用或新發(fā)行商文件的可用性,來(重新)設(shè)置丟棄閾值。存儲器單元310可以保存包含處理器320向在存儲器件中存儲的文件分配的丟棄優(yōu)先級的分配表340。另外,分配表340可以保存文件的標(biāo)識符和將文件與被分配給文件的丟棄優(yōu)先級相關(guān)聯(lián)的信息。分配表340可以另外保存丟棄閾值。在分配表340中保存的信息允許處理器320標(biāo)識可以從存儲器件移除哪個或哪些文件來恢復(fù)期望的存儲使用安全余量。響應(yīng)于接收在存儲器件中存儲新文件的請求,處理器320評估在存儲器件上的空閑存儲空間的大小,且如果存儲器件上的空閑存儲空間(f)的評估大小大于預(yù)定大小,則在存儲器件中存儲該新文件,或如果其不大于預(yù)定大小,處理器320在存儲器件內(nèi)搜索可以刪除的一個或多個可丟棄文件,且在找到這樣的一種或多種文件時,處理器320刪除該一個文件或多個文件來擴展當(dāng)前空閑的存儲空間(f),以便擴展空閑存儲空間的總大小等于或大于預(yù)定大小。如果與可丟棄文件相關(guān)聯(lián)的丟棄優(yōu)先級等于或大于預(yù)定丟棄閾值(例如,在I和15之間(包含本數(shù)),例如15),則可以從存儲器件刪除該可丟棄的一個文件或多個文件。在空閑存儲空間擴展為足夠之后,處理器320允許在擴展的空閑存儲空間中存儲該新文件?!翱臻e存儲空間被擴展為足夠”意味著,通過一個接一個地釋放占用的存儲空間來擴展空閑存儲空間,直到總空閑存儲卡可以容納新文件,而沒有縮小上述期望的存儲使用安全余量,或最終直到擴展的空閑存儲空間的總大小等于或大于預(yù)定大小,或直到移除了所有可丟棄文件??刂破?20可以是標(biāo)準(zhǔn)的現(xiàn)貨芯片上系統(tǒng)(“SoC”)器件或包裝中系統(tǒng)(“SiP”)器件或通用處理單元,其具有當(dāng)被執(zhí)行時進行在此描述的步驟、操作和評估的特定軟件?;蛘?,處理器320可以是通過使用硬件來實施在此描述的步驟、操作和評估的專用集成電路(“ASIC”)。圖4是根據(jù)一個示例實施例的用于存儲可丟棄的文件的方法。圖4將結(jié)合圖1描述。在步驟410中,主機140接收在存儲器件100中存儲文件142的請求。在步驟420中,存儲分配器144將該文件標(biāo)記為“可丟棄”或為“不可丟棄的”,且在步驟430中,如果空閑存儲空間190足夠大,則向存儲器件100的存儲控制器120發(fā)送標(biāo)記的文件(即,用于在存儲區(qū)域110中存儲)。也在向該文件分配丟棄優(yōu)先級的意義上標(biāo)記該文件。在步驟440,存儲分配器144基于該標(biāo)記的文件、且可選地基于已經(jīng)被標(biāo)記的一個或多個文件來(通過與存儲控制器120通信)管理存儲區(qū)域110或在存儲區(qū)域110中存儲的文件。圖5是根據(jù)一個示例實施例的用于管理在存儲器件中的可丟棄文件的存儲的方法。將與圖1相關(guān)聯(lián)地描述圖5。新文件是用于在存儲器件100存儲的候選者。在知曉存儲器件100的文件系統(tǒng)160的當(dāng)前映像的情況下,存儲分配器144在步驟510評估空閑存儲空間190的當(dāng)前大小“f”來查看其當(dāng)前大小是f的空閑存儲空間190是否能夠容納該新文件(即,該作為用于存儲的候選者的文件)。通常,存儲分配器144取決于新文件是用戶文件還是發(fā)行商文件來處理該新文件。因此,存儲分配器144首先確定該新文件是用戶文件還是發(fā)行商文件。該新文件是用戶文件
在步驟520,存儲分配器144檢查空閑存儲空間190是否能夠容納該新用戶文件。如果空閑存儲空間190能夠容納該新用戶文件(在步驟520中示出為“Y”),存儲分配器144在步驟560中在空閑存儲空間190中存儲該新用戶文件,而不考慮期望的存儲使用安全余量是否由于存儲新用戶文件而被縮小。如果期望的存儲使用安全余量在存儲分配器144在空閑存儲空間190中存儲新用戶文件之后變窄(即,相對于期望的存儲使用安全余量),則存儲分配器144不針對新用戶文件的存儲采取進一步的動作。但是,如果期望的存儲使用安全余量在存儲分配器144在空閑存儲空間190中存儲新用戶文件之后變窄,步驟550包括另外的步驟,其中,存儲分配器144確定哪個所存儲的可丟棄文件應(yīng)該首先被刪除,哪個可丟棄文件應(yīng)該其次被刪除,等等,以便維持期望的存儲使用安全余量。存儲分配器144基于存儲分配器144分配給所存儲的可丟棄文件的丟棄級別來確定哪個可丟棄文件應(yīng)該首先被刪除,哪個可丟棄文件應(yīng)該其次被刪除,等等。如果在步驟520存儲分配器144確定空閑存儲空間190不能容納該新用戶文件(在步驟520中示出為“N”),則存儲分配器144在步驟530中確定空閑存儲空間190和由可丟棄文件消耗的存儲空間當(dāng)組合時是否足夠用于存儲該新用戶文件。如果組合的存儲空間不夠(在步驟530中示出為“N”),這意味著不管將刪除多少可丟棄文件,新用戶文件由于其較大的大小都不能被存儲在“非用戶的”儲存區(qū)域。如果組合的存儲空間足夠(在步驟530中示出為“Y”),存儲分配器144在步驟540中在所存儲的可丟棄文件中搜索哪個可丟棄文件可以被刪除以便釋放用于新用戶文件的足夠存儲空間。存儲分配器144通過使用存儲器件100的文件系統(tǒng)來搜索這些可丟棄文件,因為如上所述的,存儲分配器144在存儲器件的文件系統(tǒng)中標(biāo)記文件為不可丟棄的或可丟棄的。另外,由存儲分配器144向標(biāo)記的文件分配的丟棄級別也被嵌入到存儲器件的文件系統(tǒng)中,以便每個丟棄級別與對應(yīng)的標(biāo)記的文件相關(guān)聯(lián)。在找到應(yīng)該首先被丟棄的可丟棄文件(“DF”)(該文件以下被稱為“DF1”)時,存儲分配器144刪除文件DFl以便添加或返回其存儲空間(該存儲空間以下被稱為“SP1”)到存儲空間190。然后,在步驟550中,存儲分配器144檢查擴展的空閑存儲空間190(S卩,空閑存儲空間190加上最后返回的存儲空間,或f+SPl)是否能夠容納新用戶文件。如果擴展的空閑存儲空間190 (S卩,f+SPl)仍然不能容納新用戶文件(在步驟550中示出為“N”),則存儲分配器144迭代地重復(fù)步驟550 (該迭代在555處示出)以便返回附加的存儲空間到空閑存儲空間190 (即,通過找到并刪除應(yīng)該被刪除的下一可丟棄文件)。在找到具有次高的丟棄優(yōu)先級的下一可丟棄文件(該下一可丟棄文件以下被稱為“DF2”)時,存儲分配器144刪除文件DF2以便釋放并添加附加的存儲空間(該附加的存儲空間以下稱為“SP2”)來釋放存儲空間190。然后,在步驟550中,存儲分配器144再次檢查擴展的空閑存儲空間190 (即,空閑存儲空間190加上兩個最后釋放的存儲空間,或f+SPl+SP2)是否能夠容納該新文件。如果擴展空閑存儲空間190 (即f+SPl+SP2)仍然不能容納該新文件(在步驟550中示出為“N”),則存儲分配器144重復(fù)步驟540再一次以便找到應(yīng)該被刪除的下一可丟棄文件。存儲分配器144迭代步驟540和550直到累積的空閑存儲空間190能夠容納該新用戶文件(在步驟550中示出為“Y”)。然后,在步驟560中,存儲分配器144在存儲區(qū)域110中存儲該新用戶文件。
如上所述,如果實際的存儲使用安全余量在存儲分配器144在空閑存儲空間190中存儲新用戶文件之后變得比期望的存儲使用安全余量窄,則步驟560可以包括附加的步驟,其中,存儲分配器144確定哪個所存儲的可丟棄文件應(yīng)該首先被刪除,哪個可丟棄文件應(yīng)該其次被刪除,等等,以便恢復(fù)期望的存儲使用安全余量。新文件是發(fā)行商文件如果新文件是發(fā)行商文件,只有空閑存儲空間190能夠容納該新發(fā)行商文件而不縮窄期望的存儲使用安全余量時,存儲分配器144才在存儲區(qū)域110中存儲(在步驟560中)該新發(fā)行商文件。也就是說,如果存儲新發(fā)行商文件將導(dǎo)致縮小期望的存儲使用安全余量,則存儲分配器144可以決定不在存儲區(qū)域I中存儲該新發(fā)行商文件。在這種情況下,存儲分配器144可以抑制對該文件采取任何動作,且不從存儲器件中刪除文件來釋放用于新發(fā)行商文件的存儲空間?;蛘撸鎯Ψ峙淦?44可以在步驟540中刪除一個或多個更高優(yōu)先級的可丟棄文件以便為具有較低丟棄優(yōu)先級的可丟棄文件釋放存儲空間。如上所述,文件被標(biāo)記到且丟棄級別被嵌入到存儲器件100的文件系統(tǒng)中,且文件被標(biāo)記的方式和被嵌入到文件系統(tǒng)中的丟棄級別取決于或可以適用于所使用的文件系統(tǒng)。圖6是用于根據(jù)一個示例實施例的用于在FAT32結(jié)構(gòu)的文件系統(tǒng)中標(biāo)記主動提供的文件的方法。FAT32結(jié)構(gòu)的文件系統(tǒng)使用簇。如上結(jié)合FAT32結(jié)構(gòu)的文件系統(tǒng)所述,用于標(biāo)識FAT32簇的位的數(shù)量是32。圖6將與圖1相關(guān)聯(lián)地描述。在步驟610中,F(xiàn)AT32的每個簇的32位中的m個最高有效位(其中m〈4)被分配或?qū)S糜跇?biāo)記文件作為不可丟棄的或作為可丟棄的(視情況而定),以及用于為每個可丟棄文件保持對應(yīng)的丟棄級別。向文件分配丟棄級別通過對對應(yīng)于標(biāo)記的文件的所分配的m位設(shè)置對應(yīng)值來進行。在步驟620中,存儲分配器144評估存儲器件100的用戶將使用該主動提供的文件的可能性級別。使用該文件的可能性的評估可以以寄售文件領(lǐng)域的技術(shù)人員已知的各種方式來實現(xiàn)。例如,使用該文件的可能性的評估可以基于監(jiān)視使用存儲器件的人的位置,和/所的或監(jiān)視用戶的先前體驗和偏好。使用該文件的可能性的評估還可以基于例如在FAT表或NTFS表內(nèi)存儲的內(nèi)容的類型(例如,“廣告內(nèi)容”,“獎勵內(nèi)容”,“促銷(免費)內(nèi)容”等)。存儲分配器144可以使用替換的或附加的標(biāo)準(zhǔn)來評估該文件將被使用的可能性。例如,它可以使用文件的屬性或特性,這可以是、或關(guān)聯(lián)于最后訪問的文件、文件大小、文件類型等。在存儲分配器144評估用戶將使用主動提供的文件的可能性的級別之后,存儲分配器144在步驟630中分配與該主動提供的文件的使用的評估的可能性級別對應(yīng)的丟棄優(yōu)先級。主動提供的文件由存儲器件100的用戶使用的可能性越大,丟棄級別越低。如果m等于四位,這意味著丟棄范圍提供從I (即0001)到15 (即1111)的15個丟棄級別。也就是說,向每個不可丟棄的文件分配丟棄級別0,向具有最低丟棄優(yōu)先級的可丟棄文件分配優(yōu)先級1,且向具有最高丟棄優(yōu)先級的可丟棄文件分配丟棄級別15。在存儲分配器144向主動提供的文件分配對應(yīng)的丟棄級別之后,存儲分配器144在步驟640中向與主動提供的文件相關(guān)聯(lián)的簇的四個最高位分配在I和15之間的對應(yīng)值。如果主動提供的文件具有與其相關(guān)聯(lián)的兩個或多個簇,在每個簇中的四個最高位被設(shè)置為相同值。在步驟650中,檢查主動提供的文件是否是需要評估的最后的文件。如果主動提供的文件不是需要評估的最后的文件(在步驟650中示出為“N”),以上述方式評估另一文件。如果主動提供的文件是需要評估的最后的文件(在步驟650中示出為“Y”),主動提供的文件被發(fā)送到存儲器件,且其中在步驟640中設(shè)置了 m位的每個的值。圖7是與FAT32表相關(guān)聯(lián)的示例目錄區(qū)域700。目錄表700僅是用于圖示的部分表,且如此,表700并未示出FAT目錄條目的所有字段。目錄區(qū)域700保存在相關(guān)文件系統(tǒng)中存儲的文件的細(xì)節(jié),諸如文件名稱、文件大小以及每個文件在相關(guān)存儲空間中何處開始。文件的細(xì)節(jié)被保存在以下字段中。字段710保存在相關(guān)文件系統(tǒng)中存儲的文件的盤操作系統(tǒng)(“DOS”)文件名,字段720保存文件的擴展名,字段730保存文件的各種屬性,字段740保存文件的第一簇號(“FCN”)的高16位字(bitword),字段750保存文件的第一簇號(“FCN” )的低部分,且字段760保存文件的大小。每個FCN號指示其中可找到文件的第一邏輯簇。目錄區(qū)域700的第一條目保持用于稱為“REALFILE”的示例文件的信息(在770處示出)。REALFILE770具有文件擴展名“DAT”,其FCN是“00000002” (在755處示出)且其大小是“0000 24E4”。在表700中的數(shù)字以十六進制值示出。作為標(biāo)準(zhǔn)的一部分,屬性值“00”(在780處示出)和“20”(未在圖7中示出)指的是“常規(guī)”文件,而屬性值“02”指的是在文件系統(tǒng)中隱藏的文件。文件名“\xE5Consign”指示刪除的文件,而“\xE5”意味著文件名的第一字節(jié)的值在十六進制中是E5。通過示例,F(xiàn)CN號0000 0002 (在755處示出)指定文件REALFILE的第一簇。圖8是根據(jù)示例實施例的示例性部分FAT32表800。FAT32表800被示出為雙字(“DWORD”)陣列,且值是十六進制的值。參考數(shù)字810指示保存FAT32表800的設(shè)備的類型,其中“F8”指的是硬盤。FAT32表800包括被指定為簇#1 (在820處示出)、簇#2 (在825處示出),...、和簇#23 (在830處示出)的23個簇。圖8將與圖7相關(guān)聯(lián)地描述。FAT32表800中的簇可以是文件的第一簇,或其可以指向文件的下一鏈接的簇,或其可以是文件末尾(“EOF”)指示。再次參考目錄區(qū)域700,文件REALFILE (在770處示出)的第一 FCN是“00000002”(在755處示出),其指向圖8的表800中的簇#2處。如圖8所示,簇#2的值(SP,值“000 0003”)指向(在840處示出)簇#3處,其是下一文件的簇。類似地,簇#3的值(SP“0000 0004”)指向簇#4處,其是下一文件的簇。簇#4具有值“OFFF FFFF" (“F”是表示十進制值“15”的十六進制數(shù)字),其中“OFFF FFFF”(在850處示出)表示文件的EOF指示,且零值(在860處示出)表示丟棄級別O。因此,文件REALFILE與三個簇(即,簇#2,簇#3,和簇#4)相關(guān)聯(lián)。如上所述,丟棄級別O被分配給不可丟棄文件。注意,具體文件的每個簇的最高十六進制數(shù)字被設(shè)置為所分配給該文件的相同丟棄優(yōu)先級。例如,文件REALFILE已經(jīng)被分配了丟棄級別“0”,且因此,簇#2,#3,和#4的最高有效十六進制數(shù)字中的每個具有該值(即,值“ O ”,“ O ”值被加了下劃線)。根據(jù)另一例子,其FCN是“ 0000 0005 ”文件的“E5Consign”(如在圖7中示出的)被分配了丟棄優(yōu)先級“I”。因此,屬于該文件的簇#5到12的每個的最高有效十六進制數(shù)字具有值“I”(例如在870處示出)。換句話說,根據(jù)本公開,最高有效十六進制數(shù)字(或,等同地,與具體可丟棄文件相關(guān)聯(lián)的簇的四個最高位)被設(shè)置為與所分配給該具體文件的丟棄優(yōu)先級對應(yīng)的相同值。如上所述,用于指示丟棄優(yōu)先級的最高位的數(shù)量m可以不同于四(S卩,m彡4)。圖9是根據(jù)示例實施例的示例部分NTFS表900。NTFS表900保存文件的細(xì)節(jié),諸如文件名稱、文件大小等。NTFS表900包括用于保存根據(jù)“正?!睌?shù)據(jù)流而改變的文件的“常規(guī)”數(shù)據(jù)(例如數(shù)據(jù)920)的數(shù)據(jù)字段910。根據(jù)本公開,NTFS表900還包括“丟棄信息”字段915用于保存每個評估的文件的丟棄信息(例如,丟棄信息930)。丟棄信息字段915還可以包括除了丟棄優(yōu)先級以外的信息。例如,丟棄信息字段915可以包括關(guān)于供應(yīng)該文件的服務(wù)器的信息和其文件必須被丟棄的過期時間。不像基于FAT的文件系統(tǒng),在基于NTFS的文件系統(tǒng)中,所分配給可丟棄文件的丟棄值不限于由一組位規(guī)定的最大數(shù)。這意味著丟棄值的范圍可以自由地選擇。例如,丟棄值的范圍可以從I到25。NTFS是示例的非FAT文件系統(tǒng)。通常,可以將對應(yīng)的丟棄值設(shè)置在對應(yīng)于標(biāo)記的文件的基于非FAT的文件系統(tǒng)條目中的數(shù)據(jù)字段。圖10是根據(jù)示例實施例的存儲器件的文件系統(tǒng)1000的邏輯布置。存儲分配器(例如,圖1的存儲分配器144)可以保存與其一起操作的存儲器件的文件系統(tǒng)1000或文件系統(tǒng)1000的映像,或者存儲分配器可以具有對文件系統(tǒng)1000的訪問。文件系統(tǒng)1000包括引導(dǎo)部分1010、與文件系統(tǒng)1000相關(guān)聯(lián)的FAT1020、目錄表1030、文件區(qū)域1040和可丟棄文件區(qū)域1050。FAT1020包括可丟棄文件分配區(qū)域1025,其包含可丟棄文件的丟棄優(yōu)先級。目錄表1030包括用于訪問在存儲器件中存儲的任何文件(即,可丟棄文件和/或不可丟棄文件)的訪問信息。文件區(qū)域1040包含不可丟棄文件。索引和數(shù)據(jù)庫區(qū)域1045保存可丟棄文件的索引、以及還保存與可丟棄文件相關(guān)聯(lián)的元數(shù)據(jù)。在索引和數(shù)據(jù)庫區(qū)域1045中保存的索引和元數(shù)據(jù)用于計算丟棄級別,但是在實際的丟棄處理期間不需要它們??蓙G棄文件區(qū)域1050保存可丟棄文件。圖11示范了根據(jù)本 公開的文件管理方法。圖11將與圖1相關(guān)聯(lián)地描述。假設(shè),在時間TO處,兩個用戶文件(B卩,文件“F1”和“F2”)初始地被存儲在存儲區(qū)域110中。因為文件“F1”和“F2”是用戶文件,因此它們被存儲在用戶區(qū)域170中,且由存儲分配器144向它們分配的丟棄級別是零。因為存儲區(qū)域100的總存儲容量是T (在1110處示出),且文件Fl和F2被存儲在存儲器件100中,剩余空閑存儲空間190 (見圖1)的大小是f (在1120處示出)。假設(shè)發(fā)行商想要在存儲區(qū)域110中存儲三個主動提供的文件。如上所述,存儲分配器14評估在存儲器件100中的空閑存儲空間190的大小(或在1120處的f)以便確定在存儲區(qū)域110中存儲發(fā)行商的三個主動提供的文件是否將不會縮窄為未來的用戶文件預(yù)留的期望存儲使用安全余量(在1130處示出)。如果存儲發(fā)行商的三個主動提供的文件將縮窄存儲使用安全余量1130 (即,期望的存儲使用安全余量),存儲分配器144將抑制存儲這些文件。在該例子中,存儲分配器144確定發(fā)行商的三個主動提供的文件可以被存儲在存儲區(qū)域110中而不減少存儲使用安全余量1130。因此,在時間Tl處,存儲分配器144允許存儲控制器120在存儲區(qū)域110中存儲發(fā)行商的三個主動提供的文件。這三個發(fā)行商的主動提供的文件被指定為“Pl”,“P2”,和“P3”。存儲分配器144還確定文件P1,P2,和P3將被存儲器件100的用戶使用的概率,且向這些文件中的每個分配對應(yīng)的丟棄級別。然后,存儲分配器144在FAT表,如在圖8中示范的,或在NTFS表中,如在圖9中示范的,存儲所分配給文件的丟棄級別。
在時間T2處,存儲器件100的用戶想要在存儲區(qū)域110中存儲另外兩個文件(即,文件“F3”和“F4”)。存儲分配器144重新評估在存儲器件中的空閑存儲空間190的大小(或在1120處的f),以便確定在存儲區(qū)域110中是否存在足夠的存儲空間來存儲這些另外的文件(即,文件F3和F4)。在該例子中,存儲分配器144確定當(dāng)前的空閑存儲空間能夠容納文件F3和F4。因此,在時間T2處,存儲分配器144允許存儲控制器120在存儲區(qū)域110中存儲文件F3和F4。因為文件F3和F4是用戶文件,因此文件F3和F4將由存儲器件100的用戶使用的概率是無關(guān)的,這是因為用戶文件具有比發(fā)行商文件高的存儲優(yōu)先級,而不管用戶使用文件F3和F4多少次,甚至即使用戶從未使用文件F3和F4。因此,存儲分配器144向文件F3和F4分配丟棄級別“0”,且在FAT表,如在圖8中示范的,或在NTFS表中,如在圖9中示范的,存儲所分配的丟棄級別。在時間T3處,存儲器件100的用戶想要在存儲區(qū)域110中存儲另外一文件(即,文件“F5”)。存儲分配器144重新評估在存儲器件100中的空閑存儲卡190的大小(或在1120處的f),以便確定在存儲區(qū)域110中是否存在足夠的存儲空間來存儲該另一文件(即,文件F5)。在該例子中,存儲分配器144確定當(dāng)前的空閑存儲空間能夠容納文件F5。因此,在時間T3處,存儲分配器144允許存儲控制器120在存儲區(qū)域110中存儲文件F5。如圖11所示,存儲用戶文件F5縮小了存儲使用安全余量。也就是說,在文件Fl到F5和Pl到P3被存儲在存儲區(qū)域110中之后剩余的在存儲區(qū)域110中的空閑存儲空間f小于存儲使用安全余量1130。因此,存儲分配器144通過移除發(fā)行商的文件(S卩,P1,P2,和P3)之一來復(fù)原(reinstate)或恢復(fù)存儲使用安全余量。通過移除(即刪除)一個或多個發(fā)行商文件來復(fù)原或恢復(fù)存儲使用安全余量是因為,如上所述,用戶文件具有最大的存儲優(yōu)先級。如上所述,由存儲分配器144基于存儲分配器144分配給每個存儲的可丟棄文件的丟棄優(yōu)先級,來作出應(yīng)該從存儲區(qū)域110移除哪個發(fā)行商文件或哪些發(fā)行商文件的決定。返回到圖11,假設(shè)在存儲的發(fā)行商文件Pl到P3中,發(fā)行商文件P3被分配了最高丟棄優(yōu)先級(例如,13)。因此,在時間T4處,從存儲區(qū)域110移除文件P3,因此擴大空閑存儲空間190。因為在時間T4處的空閑存儲空間190的大小(在1120處的f)大于存儲使用安全余量1130,因此不需要移除任何更多的發(fā)行商文件。存儲器件100的用戶可能想要移除一個或多個用戶文件。在時間T5處,用戶移除了他的兩個文件(即,文件F4和F5),因此進一步擴大了空閑存儲空間190。文件F4和F5的移除與空閑存儲空間190的大小或存儲使用安全余量無關(guān),這是因為如在此陳述的,重新獲得空閑存儲空間或恢復(fù)存儲使用安全余量通過移除需要的數(shù)量的可丟棄文件來進行。假設(shè),發(fā)行商想要在存儲區(qū)域110中存儲另一主動提供的文件。如上所述,存儲分配器144評估空閑存儲空間190的大小(在1120處的f)以便確定在存儲區(qū)域110中存儲發(fā)行商的主動提供的文件是否將不縮小存儲使用安全余量1130。如果存儲發(fā)行商的新主動提供的文件將縮窄存儲使用安全余量1130,則存儲分配器144將抑制存儲該文件。在該例子中,存儲分配器144確定發(fā)行商的新主動提供的文件(B卩,文件“P4”)可以被存儲在存儲區(qū)域Iio中而不減少存儲使用安全余量1130。因此,在時間T6處,存儲分配器144允許存儲控制器120在存儲區(qū)域110中存儲發(fā)行商的文件P4。存儲分配器144還確定文件P4將被存儲器件100的用戶使用的概率,并向該文件分配對應(yīng)的丟棄級別。然后,存儲分配器144在FAT表,如在圖8中示范的,或在NTFS表中,如在圖9中示范的,存儲所分配給文件P4的丟棄級別.存儲新發(fā)行商的文件和新用戶文件和移除所存儲的文件的處理可以繼續(xù)同時每次向存儲器件110添加新文件時,存儲分配器144評估空閑存儲空間190的當(dāng)前大小,并確定必須從存儲區(qū)域110移除哪個發(fā)行商文件或哪些發(fā)行商文件(如果移除的話)。假設(shè)向可丟棄文件分配丟棄級別可以基于例如用戶體驗或偏好、基于用戶的全球定位系統(tǒng)(“GPS”)位置和/或其他標(biāo)準(zhǔn)。例如,如果存儲器件的用戶好像(基于先前的用戶體驗)喜歡特定類型的音樂,則如果發(fā)行商的文件包含用戶最喜歡的音樂類型之一的音樂,存儲分配器可以向該文件分配相對低的丟棄優(yōu)先級(例如,在I到15的范圍內(nèi)的3)。但是,如果用戶(即,基于先前用戶體驗)不喜歡發(fā)行商的音樂,存儲分配器可以向相關(guān)發(fā)行商的文件分配較高的丟棄優(yōu)先級(例如,在I到15的范圍內(nèi)的12).用于向可丟棄文件分配丟棄級別的標(biāo)準(zhǔn)可以包括文件的預(yù)期使用、與使用該文件相關(guān)聯(lián)的預(yù)期收益、文件的類型、文件的大小、文件在存儲器件中的位置、文件的年代和在此指定的其他標(biāo)準(zhǔn)或參數(shù)。其他標(biāo)準(zhǔn)、無論單獨或結(jié)合在此描述的任意標(biāo)準(zhǔn),可以類似地使用,且可以使用一個或多個標(biāo)準(zhǔn)來進行丟棄級別的分配。另外,可以使用不同標(biāo)準(zhǔn)來向不同可丟棄文件分配丟棄級別。在另一例子中,如果發(fā)行商想要向用戶發(fā)送與位置有關(guān)的廣告(即,與具體位置內(nèi)呈現(xiàn)的產(chǎn)品或服務(wù)相關(guān)的廣告),則存儲分配器可以向發(fā)行商的廣告分配根據(jù)用戶的變化的位置而改變的丟棄優(yōu)先級。也就是說,用戶離具體位置越遠(yuǎn),丟棄級別將越高,這是因為依據(jù)變得遠(yuǎn)離具體位置,可假設(shè)用戶對消費在該具體位置處呈現(xiàn)的產(chǎn)品或服務(wù)不敢興趣。如上所述,在FAT中記錄可丟棄文件的簇鏈,其中一標(biāo)志將與FAT32條目相關(guān)的文件標(biāo)識為可丟棄文件。通常,該標(biāo)志在每個FAT32條目的四個最高有效位中。因為簇鏈可以分配給可丟棄文件,但不與不可丟棄的文件相關(guān)聯(lián),因此有可能諸如chkdsk或fsck.vfat的工具(utility)將把可丟棄文件轉(zhuǎn)變?yōu)椴豢蓙G棄文件(也稱為“真實”文件),由此降低文件系統(tǒng)160的安全性。另外,存在風(fēng)險:一些FAT回復(fù)工具將復(fù)位在FAT32條目中的可丟棄文件的標(biāo)志。FAT32文件系統(tǒng)檢查和修復(fù)工具通常遍歷(step through)文件系統(tǒng),且應(yīng)用規(guī)則以便修正通常錯誤。通常,這些工具可以在FAT中查找在目錄表內(nèi)的第一簇號(FCN)列中的不具有對應(yīng)的條目的簇鏈。這些工具將在FAT中的不具有任何目錄或文件條目的簇分配視為未說明的(unaccounted)數(shù)據(jù)脆片(也稱為孤簇(orphan clusters)),且這些工具可以刪除這些孤簇或在目錄表中建立對應(yīng)的文件條目。因為在此描述的可丟棄文件系統(tǒng)可能利用原本將被認(rèn)為是孤簇的簇,因此這些工具可能不適當(dāng)?shù)貙⒖蓙G棄文件轉(zhuǎn)變?yōu)椴豢蓙G棄文件,或整個移除可丟棄文件。為了解決這些問題,在一些實施方式中,存儲分配器144可以將可丟棄文件與主FAT中的簇鏈相關(guān)聯(lián),其中,該簇鏈隱藏可丟棄文件的物理位置,且存儲分配器144在可丟棄FAT、數(shù)據(jù)庫或一個或多個位置文件中存儲該文件的物理位置。通常,可丟棄FAT、數(shù)據(jù)庫或一個或多個位置文件對主FAT來說不可見,且在一些實施方式中,與可丟棄FAT、數(shù)據(jù)庫、或一個或多個位置文件相關(guān)聯(lián)的屬性可以被使能以防止主機操作系統(tǒng)訪問該可丟棄FAT、數(shù)據(jù)庫或一個或多個位置文件。
如之前注意的,F(xiàn)AT32中的每個條目是32位,但僅使用較低的28位。通常,較高的四位被預(yù)留且被設(shè)置為零。(需要FAT32的兼容實施方式來在較高的四位被設(shè)置在分配的簇上的情況下忽略較高的四位,且當(dāng)寫新的FAT條目時將較高的四位設(shè)置為零。)用與可丟棄文件相關(guān)聯(lián)的每個簇鏈的FAT條目的較高(upper)四位內(nèi)的標(biāo)志來區(qū)分可丟棄文件與不可丟棄文件。標(biāo)準(zhǔn)FAT32驅(qū)動器將可丟棄文件看作已分配的空間,且不會寫在它們上。但是,存儲分配器144可以周期性地進行諸如參考圖5所描述的那些操作,以便在存儲器件110中維持空閑空間分配,且可以恢復(fù)分配給可丟棄文件的空間。通過使用主FAT和可丟棄FAT、數(shù)據(jù)庫和一個或多個位置文件中的至少一個,可以擴展主FAT。當(dāng)結(jié)合在文件分配表查找邏輯中的分支使用擴展的主FAT時,使得如果FAT條目的較高四位非零,則替代在主FAT中的FAT條目,使用在可丟棄FAT、數(shù)據(jù)庫或一個或多個文件中的反映可丟棄文件的物理位置的信息。由于在可丟棄FAT、數(shù)據(jù)庫或一個或多個位置文件中的信息覆寫主FAT的FAT條目中的值,因此諸如chkdsk和fsck.vfat的工具將不把可丟棄文件轉(zhuǎn)變?yōu)椴豢蓙G棄文件,這是因為這些工具將可丟棄文件的簇視為與可丟棄FAT、數(shù)據(jù)庫或一個或多個位置文件中的目錄或文件條目相關(guān)聯(lián)。而且,F(xiàn)AT恢復(fù)工具將不復(fù)位FAT32中的指示一個文件是可丟棄文件的標(biāo)志,這是因為諸如chkdsk和fsck.vfat的工具將與可丟棄文件相關(guān)的簇視為與可丟棄FAT、數(shù)據(jù)庫或一個或多個位置文件中的目錄或文件條目相關(guān)聯(lián),而不是作為空閑空間。當(dāng)文件系統(tǒng)160利用主FAT1200和可丟棄FAT1201時,為了存儲已經(jīng)被標(biāo)記為可丟棄文件的文件,存儲分配器144更新如圖12a所示的主FAT1200來將分配給可丟棄文件的簇鏈1202與該文件相關(guān)聯(lián)。通常,簇鏈1202可以與相關(guān)聯(lián)于簇鏈1201的可丟棄文件相同大小或大于該可丟棄文件。在一些實施方式中,簇鏈1202在主FAT中遮蔽可丟棄文件的物理位置。通常,如上參考圖7和8描述的,開始于條目1204的簇鏈中的每個簇指向簇鏈1202的下一順序的簇,直到如條目1206中示出的諸如IFFF FFFF的值指示簇鏈1202的結(jié)尾。但是,在其他實施方式中,簇鏈的每個簇可以具有諸如IFFF FFFF的值,指示該簇是個別分配的簇,而不是指向簇鏈的下一順序。簇鏈1202的第一條目1204指向可丟棄FAT1201中的對應(yīng)條目1208,如圖12b所示。如以上參考圖7和8描述的,對于每個文件,在可丟棄FAT1201內(nèi)的簇鏈1202中的每個簇指向該文件的下一順序的簇,直到諸如條目1210中示出的IFFF FFFF的值指示文件的EOF。應(yīng)該理解,一個簇鏈1202可以與多于一個文件相關(guān)聯(lián)。例如,如圖12b所示,簇鏈1202包括用于第一文件1212的從簇#6 (元素1208)到簇#9 (元素1210)的第一組簇,且包括用于第二文件1214的從簇#10到簇#11的第二組簇。另外,應(yīng)該理解,主FAT1200和對應(yīng)的可丟棄FAT1201可以包括多于一個簇鏈。例如,如圖12a和12b所示,主FAT可以包括簇#6到簇#11的簇鏈1202,且可以包括簇#20到簇#22的第二簇鏈1216。在其他實施方式中,不使用主FAT1200和可丟棄FAT1201,文件系統(tǒng)可以使用主FAT1200來將一個或多個文件與如上所述的簇鏈相關(guān)聯(lián)且利用數(shù)據(jù)庫或一個或多個分開的位置文件代替可丟棄FAT,來存儲與簇鏈相關(guān)的一個或多個可丟棄文件的物理位置。數(shù)據(jù)庫或位置文件可以是存儲在文件系統(tǒng)的不可丟棄區(qū)域中的文本文件或二進制文件。
圖13是用于使用FAT和可丟棄FAT來管理存儲器件的方法。圖13將與圖1相關(guān)聯(lián)地描述。在步驟1310,主機1410接收在存儲器件100中存儲文件142的請求。在一些實施方式中,存儲分配器144基于與該文件相關(guān)的一個或多個寫請求來得出在存儲器件100中存儲文件142的請求。在步驟1320,存儲分配器144在與上述存儲器件100相關(guān)的文件系統(tǒng)結(jié)構(gòu)中標(biāo)記該文件為“可丟棄”或為“不可丟棄”。在步驟1320中,也在給文件分配丟棄優(yōu)先級的意義上標(biāo)記文件。在步驟1330,當(dāng)該文件是可丟棄文件時,存儲分配器144更新主FAT來將分配給該文件的簇鏈與該文件相關(guān)聯(lián)。在步驟1340,存儲分配器144更新可丟棄FAT來反映該文件在存儲器件100中的物理位置。在步驟1350中,存儲分配器144 (通過與存儲控制器120通信)基于標(biāo)記的文件且根據(jù)可丟棄FAT來管理存儲器件100的存儲區(qū)域,或管理被存儲在存儲區(qū)域110中的文件。存儲區(qū)域的管理類似于以上參考圖5所描述的。圖14是用于使用FAT和數(shù)據(jù)庫來管理存儲器件的方法。圖14將與圖1相關(guān)聯(lián)地描述。在步驟1410,主機140接收在存儲器件100中存儲文件142的請求。在步驟1420中,如上所述,存儲分配器144在與上述存儲器件100相關(guān)聯(lián)的文件系統(tǒng)結(jié)構(gòu)中標(biāo)記該文件為“可丟棄”或為“不可丟棄”。在步驟1420中,也在給該文件分配丟棄優(yōu)先級的意義上標(biāo)記該文件。在步驟1430,當(dāng)該文件是可丟棄文件時,存儲分配器144更新FAT來將分配給該文件的簇鏈與該文件相關(guān)聯(lián)。在步驟1440,存儲分配器144更新數(shù)據(jù)庫來反映該文件在存儲器件100中的物理位置。在步驟1450中,存儲分配器144基于FAT和數(shù)據(jù)庫來(通過與存儲控制器120的通信)管理存儲器件100的存儲區(qū)域,或管理被存儲在存儲區(qū)域110中的文件。圖15是用于使用FAT和位置文件來管理存儲器件的方法。圖15將與圖1相關(guān)聯(lián)地描述。在步驟1510,主機140接收在存儲器件100中存儲文件142的請求。在步驟1520中,如上所述,存儲分配器144在與上述存儲器件100相關(guān)聯(lián)的文件系統(tǒng)結(jié)構(gòu)中標(biāo)記該文件為“可丟棄”或為“不可丟棄”。在步驟1520中,也在給向該文件分配丟棄優(yōu)先級。在步驟1530,當(dāng)該文件是可丟棄文件時,存儲分配器144更新FAT來將被分配給該文件的簇鏈與該文件相關(guān)聯(lián)。在步驟1540,存儲分配器144更新位置文件來反映該文件在存儲器件100中的物理位置。在步驟1550中,存儲分配器144基于FAT和位置文件來(通過與存儲控制器120通信)管理存儲器件100的存儲區(qū)域,或管理存儲在存儲區(qū)域I中的文件。在其他實施方式中,為了增強安全性,且為了防止文件系統(tǒng)被諸如dosf sck (也已知為fsck.vfat)或chkdsk的文件系統(tǒng)集成工具破壞或損毀,存儲分配器144在可丟棄文件區(qū)域中不按順序向簇鏈分配簇,以保證在不讀存儲可丟棄文件的物理位置的可丟棄FAT、數(shù)據(jù)庫、或一個或多個位置文件的情況下不能重建簇鏈。另外,在FAT中生成與簇鏈的打亂的簇中的一個或多個相關(guān)聯(lián)的范圍文件,以便諸如dosf sck的工具將不把可丟棄文件轉(zhuǎn)變?yōu)椴豢蓙G棄文件,或復(fù)位該文件的較高位中的指示該文件是可丟棄的標(biāo)志。在一些實施方式中,可以使能諸如隱藏、系統(tǒng)、目錄或卷屬性的與范圍文件相關(guān)的屬性,來防止主機操作系統(tǒng)訪問這些范圍文件。
圖16是圖示了包括簇鏈的FAT的圖,其中,組成該簇鏈的兩個或多個簇的順序已經(jīng)被打亂。如圖16所示,構(gòu)成在條目1602處開始的簇鏈的簇不連續(xù)。例如,在條目1602處開始的簇鏈的順序是簇#13、簇#9、簇#7、簇# 18、和簇#21。在FAT中,每個簇的值指向簇鏈中的下一簇,如以上圖7和8描述的。除了打亂構(gòu)成與一個或多個文件相關(guān)聯(lián)的簇鏈的簇的順序以外,還可以在FAT中建立包括與該文件相關(guān)聯(lián)的簇鏈的一個或多個簇的一個或多個范圍文件。在一些實施方式中,每個范圍文件可以表示在作為簇鏈的一部分的簇的一范圍內(nèi)的所有簇。由于在范圍文件和構(gòu)成簇鏈的簇之間的關(guān)聯(lián),因此諸如chkdsk或fsck.vfat的工具將不把可丟棄文件轉(zhuǎn)變?yōu)椴豢蓙G棄文件,且FAT恢復(fù)工具將不復(fù)位FAT32條目中的指示該文件是可丟棄文件的圖17是圖示在FAT中建立的一個或多個范圍文件的圖表,每個范圍文件存儲在條目1602處開始的簇鏈的至少一個簇。例如,第一范圍文件1604存儲來自在條目1602處開始的簇鏈的簇#7和簇#9,且第二范圍文件1606存儲來自在條目1602處開始的簇鏈的簇#13、簇 #18、和簇 #21。范圍文件可以存儲來自多于一個簇鏈的簇。例如,除了以上所列的來自開始于條目1602處的簇鏈的簇以外,第一范圍文件1604可以存儲來自開始于條目1608處的簇鏈的簇#5和簇#10。類似地,除了以上所列的來自開始于條目1602處的簇鏈的簇以外,第二范圍文件1606可以存儲來自開始于條目1608處的簇鏈的簇#16、簇#17、和簇#22。圖18是用于使用FAT管理存儲器件的方法的流程圖,其中,組成簇鏈的兩個或更多簇的順序被打亂。圖18將與圖1相關(guān)聯(lián)地描述。在步驟1810,主機140接收在存儲器件100中存儲文件142的請求。在步驟1820中,如上所述,存儲分配器144在與存儲器件100相關(guān)聯(lián)的文件系統(tǒng)結(jié)構(gòu)中標(biāo)記該文件為“可`丟棄”或為“不可丟棄”。在步驟1820中,也在給該文件分配丟棄優(yōu)先級的意義上標(biāo)記該文件。在步驟1830,當(dāng)該文件是可丟棄文件時,存儲分配器144更新FAT來將分配給該文件的簇鏈與該文件相關(guān)聯(lián)。在步驟1840,在FAT內(nèi),基于以下來打亂與該文件相關(guān)的簇鏈的兩個或更多簇的順序:諸如存儲器件100內(nèi)的存儲器的量、簇鏈的總大小、在簇鏈的兩個順序簇之間的簇的數(shù)量、和/或閃存管理算法,該閃存管理算法可以考慮擦除塊大小、在分配的塊中每個邏輯地址的物理塊地址、和/或與物理塊地址相關(guān)聯(lián)的每個頁的損耗平衡數(shù)據(jù)的閃存管理算法。在一些實施方式中,使用提供在先前沒有被分配的每個簇的范圍內(nèi)的偏移量的偽隨機數(shù)生成器或熵隨機數(shù)生成器來打亂簇鏈的兩個或多個簇的順序。在一些實施方式中,使用考慮來自主機系統(tǒng)140和/或存儲器件100的不確定值的單向哈希函數(shù)(one-way hash function)來打亂簇鏈的兩個或多個簇的順序。在步驟1850,在FAT中建立第一范圍文件,該第一范圍文件包括與第一文件相關(guān)聯(lián)的簇鏈的至少一個簇。在步驟I860,存儲分配器144 (通過與存儲分配器120通信)基于FAT和范圍文件來管理存儲器件100的存儲區(qū)域110,或管理在存儲區(qū)域110中存儲的文件。在其他實施方式中,該文件系統(tǒng)可以實現(xiàn)轉(zhuǎn)換鎖,來保證當(dāng)可丟棄文件打開時該可丟棄文件不被轉(zhuǎn)換為不可丟棄文件。舉例而言,一可放棄文件在以下時間段期間可以是打開的:在例如向存儲器件100下載可丟棄文件期間或在與可丟棄文件相關(guān)的數(shù)據(jù)被發(fā)表給公眾之前的時間段期間、諸如當(dāng)在與關(guān)于可丟棄文件的電影、歌曲或節(jié)目相關(guān)的發(fā)表日期之前向存儲器件100下載可丟棄文件時。通常,這些轉(zhuǎn)換鎖工作以便使得當(dāng)設(shè)置了轉(zhuǎn)換鎖時可丟棄文件不能被轉(zhuǎn)換為不可丟棄文件。圖19是用于在實現(xiàn)主FAT和可丟棄FAT的文件系統(tǒng)中使用轉(zhuǎn)換鎖(conversionlock)來防止當(dāng)可丟棄文件打開時轉(zhuǎn)換可丟棄文件的方法。圖19將與圖1相關(guān)聯(lián)地描述。在步驟1910,存儲分配器144接收將可丟棄文件轉(zhuǎn)換為不可丟棄文件的請求。在步驟1920,存儲分配器144標(biāo)識與可丟棄文件相關(guān)的轉(zhuǎn)換鎖標(biāo)識符的值。在步驟1930,存儲分配器144基于轉(zhuǎn)換鎖標(biāo)識符的值來確定是否可以將可丟棄文件轉(zhuǎn)換為不可丟棄文件。通常,存儲分配器144當(dāng)轉(zhuǎn)換鎖標(biāo)識符的值指示可丟棄文件打開時確定可丟棄文件不可轉(zhuǎn)換,且存儲分配器144當(dāng)轉(zhuǎn)換鎖標(biāo)識符的值指示可丟棄文件未打開時確定可丟棄文件可以被轉(zhuǎn)換。如果存儲分配器144在步驟1930確定可丟棄文件不可轉(zhuǎn)換為不可丟棄文件,則存儲分配器144在步驟1940禁止標(biāo)記可丟棄文件為不可丟棄的。但是,如果存儲分配器144在步驟1930確定可丟棄文件可以被轉(zhuǎn)換為不可丟棄文件,存儲分配器144在步驟1950繼續(xù)在與存儲器件100相關(guān)的文件系統(tǒng)結(jié)構(gòu)中標(biāo)記該文件為不可丟棄的文件;在步驟1960更新主FAT來反映該文件的物理位置;以及在步驟1970更新可丟棄FAT來移除該文件的物理位置。將理解,當(dāng)代替可丟棄FAT將數(shù)據(jù)庫或位置文件與主FAT —起使用時,如上所述,用轉(zhuǎn)換鎖來實現(xiàn)類似方法。在一些實施方式中,基于與應(yīng)用相關(guān)聯(lián)的標(biāo)識符可以允許該應(yīng)用進行諸如將可丟棄文件轉(zhuǎn)換為不可丟棄文件、或檢查轉(zhuǎn)換鎖標(biāo)識符的值的操作。通常,建立或下載可丟棄文件的應(yīng)用可以將用戶標(biāo)識符(ID)與可丟棄文件相關(guān)聯(lián)。用戶ID可以是標(biāo)識建立了可丟棄文件的應(yīng)用或用戶的所有者用戶ID。在一些實施方式中,所有者用戶ID是4字節(jié)值。文件系統(tǒng)160向所有者用戶ID提供界定何種與其他用戶或應(yīng)用相關(guān)聯(lián)的附加用戶ID可以訪問可丟棄文件以及這些附加的用戶ID可以針對可丟棄文件采取何種動作的能力。將理解,取決于可丟棄文件的使用,附加的用戶ID可以與單個應(yīng)用或單個用戶相關(guān)聯(lián),或者附加的用戶ID可以是與多個應(yīng)用或多個用戶相關(guān)聯(lián)的共享用戶ID。在一些實施方式中,所有者用戶ID可以允許與附加用戶ID相關(guān)的應(yīng)用來訪問與可丟棄文件相關(guān)的預(yù)覽數(shù)據(jù)。預(yù)覽數(shù)據(jù)可以是可丟棄文件的一部分,其中,在其他實施方式中,預(yù)覽數(shù)據(jù)不同于該可丟棄文件、但與該可丟棄文件相關(guān)聯(lián)。在一些示例實施方式中,可丟棄文件可以是電影,且預(yù)覽數(shù)據(jù)可以包括與電影相關(guān)聯(lián)的電影預(yù)告片;可丟棄文件可以是電視節(jié)目,且預(yù)覽數(shù)據(jù)可以包括電視節(jié)目的一部分;可丟棄文件可以是音樂數(shù)據(jù),且預(yù)覽數(shù)據(jù)可以包括音樂數(shù)據(jù)的一部分;或可丟棄文件可以是軟件程序,且預(yù)覽數(shù)據(jù)可以包括軟件程序的演示版本。在其他示例實施方式中,可以使用預(yù)覽數(shù)據(jù)以便在與可丟棄文件相關(guān)聯(lián)的發(fā)表日期之前,可丟棄文件不可訪問,但可以訪問與可丟棄文件相關(guān)聯(lián)的預(yù)覽數(shù)據(jù),且然后在發(fā)表日期之后,可丟棄文件和預(yù)覽數(shù)據(jù)兩者皆可訪問。在另一例子中,所有者用戶ID可以允許與附加用戶ID相關(guān)聯(lián)的應(yīng)用基于與可丟棄文件相關(guān)聯(lián)的用戶ID來向可丟棄文件與。在一些實施方式中,該文件系統(tǒng)可以為所有者用戶ID提供許可位掩碼,來定義與附加用戶ID相關(guān)的應(yīng)用可以針對可丟棄文件進行什么操作。典型的使用情景的許可位掩碼的一個例子在圖20中示出。但是,應(yīng)該理解,所有者用戶ID可以覆寫(override)圖20所示的許可,且向附加用戶ID分配任何許可。參考圖20所不的許可,設(shè)置了性質(zhì)寫入許可位(properties write permissionbit)2002的應(yīng)用可以修改屬性,諸如使能或禁用轉(zhuǎn)換鎖、設(shè)置時間戳、或?qū)懭胂M意向通用資源指示符(“URI”),且具有性質(zhì)讀取許可位2004組的應(yīng)用可以讀取屬性,諸如轉(zhuǎn)換鎖、時間戳或消費意圖的URI。設(shè)置了優(yōu)先級許可位2006的應(yīng)用可以修改可丟棄文件的優(yōu)先級。設(shè)置了預(yù)覽讀取許可位2008的應(yīng)用可以讀與可丟棄文件相關(guān)聯(lián)的預(yù)覽數(shù)據(jù),且設(shè)置了預(yù)覽寫入許可位2010的應(yīng)用可以寫入與可丟棄文件相關(guān)聯(lián)的預(yù)覽數(shù)據(jù)。設(shè)置了讀取許可位2012的應(yīng)用可以讀取可丟棄文件,且設(shè)置了寫入許可位2014的應(yīng)用可以向可丟棄文件寫入。通常,僅與關(guān)聯(lián)于可丟棄文件的所有者用戶ID相關(guān)聯(lián)的應(yīng)用將具有這些許可。設(shè)置了轉(zhuǎn)換許可位2016的應(yīng)用可以將可丟棄文件轉(zhuǎn)換為不可丟棄文件。注意,在此公開的在相關(guān)聯(lián)的文件系統(tǒng)中標(biāo)記文件并向它們分配丟棄級別的方法可以具有許多有用的應(yīng)用,其中之一是恢復(fù)存儲使用安全余量來保證用戶文件的足夠存儲空間。例如,被分配給文件的丟棄級別可以被用于將文件簇重新映射到較低性能的閃存模塊,或用于在請求時清除這些簇。用于大文件的智能高速緩存繼管理數(shù)據(jù)的方法(也稱為智能高速緩存)以及在2008年12月16日提交的待審的美國專利N0.12/336,089中和在2009年3月10日提交的待審美國臨時申請N0.61/159,034(兩者被引用附于此)中描述的智能高速緩存的描述和特征進一步而言,提供用于大(large)可丟棄文件的智能高速緩存技術(shù)。該大文件智能高速緩存、也在此稱為智能高速緩存HD包括自以上公開的各種改變和擴展。智能高速緩存HD不同于智能高速緩存之處在于其通過添加大文件管理器而支持大于4GB的文件,該大文件管理器在轉(zhuǎn)換時智能地處理這種文件的分裂(split),同時在它們是可丟棄的時維持它們的大(MGB)狀態(tài)。具體地,這允許這些文件的管理和檢索以及其作為單個單元而不是一系列更小的文件的它們的丟棄。組件在圖21的方框圖中描述了智能高速緩存組件。智能高速緩存組件2100可以結(jié)合多個操作系統(tǒng)(諸如ANDROID, WINDOWS或LINUX)中任一來操作。或者,在此討論的智能高速緩存技術(shù)可以在存儲介質(zhì)、諸如沒有操作系統(tǒng)的存儲卡上實現(xiàn)。為智能高速緩存HD添加的新組件是大文件管理器2102,其處理在大小上大于4GB的文件。以下更詳細(xì)地描述大文
件管理器。大的可丟棄文件包含可丟棄文件的文件系統(tǒng)在概念上被組織為如圖22的文件系統(tǒng)結(jié)構(gòu)所示。文件系統(tǒng)在結(jié)構(gòu)上類似于在SD-HC (和對應(yīng)的高容量μ SD)卡中建立的標(biāo)準(zhǔn)FAT32文件系統(tǒng)。在可丟棄文件HD實施方式中,可丟棄文件被存儲在陰影FAT (shadow FAT)中。陰影FAT原始的兩個FAT表使用指示文件的優(yōu)先級而不是其實際鏈的OxpFFFFFFF (EOF)或0χρ00000000(未分配)來分配可丟棄簇。如果最高位元是非零,咨詢第三FAT表以確定實際的族鏈序列。不像在原始的兩個FAT表中,可丟棄FAT(DFAT)可以包含長于4GB的族鏈。目錄表
可丟棄文件的目錄條目具有以下元素。將可以加密的元素表示為在系統(tǒng)的加密變體中的blob (binarylarge objects, 二進制大對象),其可以被統(tǒng)一到單個blob中。在此描述這些字段:
權(quán)利要求
1.一種用存儲設(shè)備管理文件的方法,該方法包括:在操作性地耦合于主機的存儲設(shè)備中,所述存儲設(shè)備具有包括用戶文件、空閑空間和可丟棄文件的存儲區(qū)域,所述存儲設(shè)備: 在可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)中標(biāo)識空閑簇的記錄; 從主機接收在存儲區(qū)域中存儲用戶文件的請求; 確定與請求中的數(shù)據(jù)相關(guān)聯(lián)的邏輯塊地址(LBA)是否處于與可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)中的該記錄中的簇相關(guān)聯(lián)的邏輯塊地址的范圍中;以及 當(dāng)LBA處于該范圍中且在該范圍中存在可用空閑空間時: 將用戶文件的LBA映射到在可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)中標(biāo)識的空閑簇;以及 隨后,從所述可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)中,移除映射到用戶文件的LBA的簇。
2.根據(jù)權(quán)利要求1的方法,還包括: 當(dāng)LBA處于該范圍中且在該范圍中不存在可用的空閑的空間時: 丟棄至少一個可丟棄文件以創(chuàng)建空閑簇; 將用戶文件的LBA映射到通過丟棄該至少一個可丟棄文件而創(chuàng)建的空閑簇;以及 隨后,從所述可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)中,移除映射到用戶文件的LBA的簇。
3.根據(jù)權(quán)利要求2所述的方法,其中所述簇包括邏輯簇。
4.根據(jù)權(quán)利要求2所述的方法,還包括在所述存儲設(shè)備的存儲區(qū)域中維持主機文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)、和與主機文件 系統(tǒng)數(shù)據(jù)結(jié)構(gòu)獨立地維持所述可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu),所述可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)包括對應(yīng)于存儲區(qū)域中的至少一個可丟棄文件的存儲區(qū)域中簇的列表,其中,在主機文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)中將所述至少一個可丟棄文件標(biāo)識為空閑空間。
5.根據(jù)權(quán)利要求4所述的方法,其中,所述可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)包括表格、哈希映射、二進制樹、陣列或列表中的一種。
6.根據(jù)權(quán)利要求2所述的方法,其中,丟棄所述至少一個可丟棄文件包括所述存儲設(shè)備獨立于主機操作系統(tǒng)地標(biāo)識最低優(yōu)先級的可丟棄文件且丟棄所標(biāo)識的最低優(yōu)先級的可丟棄文件。
7.根據(jù)權(quán)利要求4所述的方法,其中當(dāng)LBA在該范圍之外時: 將所述LBA與存儲區(qū)域中的空閑物理扇區(qū)相關(guān)聯(lián);以及 更新所述主機文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)以反映所述關(guān)聯(lián)。
8.根據(jù)權(quán)利要求1所述的方法,還包括所述存儲設(shè)備通過讀取所述主機文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)以標(biāo)識空閑簇、且更新所述可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)以包括所述存儲器區(qū)域中的該空閑簇的至少一部分,來檢測當(dāng)前空閑簇。
9.根據(jù)權(quán)利要求8所述的方法,其中,更新所述可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)包括僅將在至少N個空閑簇的連續(xù)系列中布置的空閑簇包括在所述可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)中,其中,N是等于存儲設(shè)備中的擦除塊大小的簇的倍數(shù)。
10.根據(jù)權(quán)利要求8所述的方法,其中,所述存儲設(shè)備響應(yīng)于觸發(fā)事件而開始檢測當(dāng)前空閑族的步驟。
11.根據(jù)權(quán)利要求10所述的方法,其中,所述觸發(fā)事件包括所述存儲設(shè)備檢測到在可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)中包括的空閑簇的數(shù)量小于閾值空閑簇量。
12.根據(jù)權(quán)利要求10所述的方法,其中,所述觸發(fā)事件包括檢測到對主機文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的主機寫。
13.根據(jù)權(quán)利要求10所述的方法,其中,所述觸發(fā)事件包括所述存儲設(shè)備從主機接收指示已經(jīng)刪除了用戶文件的通知信號。
14.一種用于與主機可移除地連接的存儲器件,該存儲器件包括: 具有用戶文件、空閑空間和可丟棄文件的存儲區(qū)域;以及 控制器,與所述存儲區(qū)域通信,其中,所述控制器被配置以: 在可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)中標(biāo)識空閑簇的記錄; 從主機接收在存儲區(qū)域中存儲用戶文件的請求; 確定與請求中的數(shù)據(jù)相關(guān)聯(lián)的邏輯塊地址(LBA)是否處于與可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)中的該記錄中的簇相關(guān)聯(lián)的邏輯塊地址的范圍中;以及 當(dāng)LBA處于該范圍中且在該范圍中存在可用的空閑空間時: 將用戶文件的LBA映射到在可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)中標(biāo)識的空閑簇;以及 隨后,從所述可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)中,移除映射到用戶文件的LBA的簇。
15.根據(jù)權(quán)利要求14所述的存儲設(shè)備,其中,所述控制器還被配置以當(dāng)LBA處于該范圍中且在該范圍中不存在可用的空閑空間時: 丟棄至少一個可丟 棄文件以創(chuàng)建空閑簇; 將用戶文件的LBA映射到通過丟棄至少一個可丟棄文件而創(chuàng)建的空閑簇;以及 隨后,從所述可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)中,移除映射到用戶文件的LBA的簇。
16.根據(jù)權(quán)利要求15所述的存儲設(shè)備,其中所述簇包括邏輯簇。
17.根據(jù)權(quán)利要求15所述的存儲設(shè)備,其中,所述控制器還被配置以維持主機文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)、和與主機文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)獨立地維持所述可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu),所述可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)包括對應(yīng)于存儲區(qū)域中的至少一個可丟棄文件的存儲區(qū)域中簇的列表,其中,在主機文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)中將所述至少一個可丟棄文件標(biāo)識為空閑空間。
18.根據(jù)權(quán)利要求17所述的存儲設(shè)備,其中,所述可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)包括表格、哈希映射、二進制樹、陣列或列表中的一種。
19.根據(jù)權(quán)利要求17所述的存儲設(shè)備,其中,所述控制器被配置以通過獨立于主機操作系統(tǒng)地標(biāo)識最低優(yōu)先級的可丟棄文件且丟棄所標(biāo)識的最低優(yōu)先級的可丟棄文件,來丟棄所述至少一個可丟棄文件。
20.根據(jù)權(quán)利要求17所述的存儲設(shè)備,其中,所述控制器還被配置以響應(yīng)于確定LBA處于該范圍之外: 將所述LBA與存儲區(qū)域中的空閑物理扇區(qū)相關(guān)聯(lián);以及 更新所述主機文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)以反映所述關(guān)聯(lián)。
21.根據(jù)權(quán)利要求17所述的存儲設(shè)備,其中,所述控制器被配置以通過讀取所述主機文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)以標(biāo)識空閑簇、且更新所述可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)以包括所述存儲器區(qū)域中的該空閑簇的至少一部分,來檢測當(dāng)前空閑簇。
22.根據(jù)權(quán)利要求21所述的存儲設(shè)備,其中,所述控制器被配置以更新所述可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)包括僅將在至少N個空閑簇的連續(xù)系列中布置的空閑簇包括在所述可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)中,其中,N是等于存儲設(shè)備中的擦除塊大小的簇的倍數(shù)。
23.根據(jù)權(quán)利要求21所述的存儲設(shè)備,其中,所述控制器被配置以響應(yīng)于觸發(fā)事件而開始檢測當(dāng)前空閑簇的步驟。
24.根據(jù)權(quán)利要求23所述的存儲設(shè)備,其中,所述觸發(fā)事件包括通過控制器檢測到在可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)中包括的空閑簇的數(shù)量小于閾值空閑簇量。
25.根據(jù)權(quán)利要求23所述的存儲設(shè)備,其中,所述觸發(fā)事件包括對主機文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的主機寫。
26.根據(jù)權(quán)利要求23所述的存儲設(shè)備,其中,所述觸發(fā)事件包括通過控制器從主機接收指示已經(jīng)刪除了用戶文件的 通知信號。
全文摘要
公開了用于基于卡地管理可丟棄文件的方法和存儲設(shè)備,其中,在存儲設(shè)備上的可丟棄文件系統(tǒng)中跟蹤可丟棄文件,且這些可丟棄文件對主機文件系統(tǒng)不可見,該主機文件系統(tǒng)僅跟蹤用戶文件和空閑空間。該方法包括該存儲設(shè)備檢測對應(yīng)于存儲區(qū)域中的至少一部分空閑空間的當(dāng)前空閑的邏輯簇,且確定與隨后的用戶文件寫入請求相關(guān)聯(lián)的地址是否處于由存儲設(shè)備在可丟棄文件系統(tǒng)中管理的空閑簇的范圍。當(dāng)在主機寫入請求中的地址與由可丟棄文件系統(tǒng)管理的空間的地址重疊時,該存儲設(shè)備必要時丟棄可丟棄文件,且從可丟棄文件系統(tǒng)中移除新釋放的簇,以便當(dāng)需要用于用戶文件的空間時重新調(diào)整可丟棄文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的大小。
文檔編號G06F17/30GK103154948SQ201180048994
公開日2013年6月12日 申請日期2011年8月10日 優(yōu)先權(quán)日2010年8月19日
發(fā)明者J.T.林, J.G.哈恩 申請人:桑迪士克以色列有限公司