欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

使用文件克隆的單實例化方法和利用該方法的文件存儲系統(tǒng)的制作方法

文檔序號:6498038閱讀:167來源:國知局
使用文件克隆的單實例化方法和利用該方法的文件存儲系統(tǒng)的制作方法
【專利摘要】在使用散列值比較的文件去重復(fù)中,必須計算所有目標文件的散列值并且必須讀取所有文件的實際數(shù)據(jù)用于散列值計算,從而處理時間長。本發(fā)明提供一種包括控制器和存儲多個文件的卷的文件存儲系統(tǒng),該卷包括存儲第一文件和第二文件的第一目錄以及存儲創(chuàng)建的第三文件的第二目錄,其中控制器向第三文件遷移第二文件的實際數(shù)據(jù)、建立第二文件的管理信息,從而在讀取第二文件時引用第三文件,并且如果第一文件的實際數(shù)據(jù)和第三文件的實際數(shù)據(jù)的大小相同并且第一文件的實際數(shù)據(jù)和第三文件的實際數(shù)據(jù)的二進制數(shù)相同,則建立第一文件的管理信息以在讀取第一文件時引用第三文件。
【專利說明】使用文件克隆的單實例化方法和利用該方法的文件存儲系統(tǒng)

【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種文件存儲系統(tǒng)及其管理方法。

【背景技術(shù)】
[0002]NAS (網(wǎng)絡(luò)附著存儲)是適合用于經(jīng)由網(wǎng)絡(luò)在多個計算機之間共享文件數(shù)據(jù)的存儲設(shè)備。目前,許多文件數(shù)據(jù)存儲裝置利用NAS設(shè)備。
[0003]在高性能主文件服務(wù)器中存儲的數(shù)據(jù)量迅速增加。耦合到文件服務(wù)器的盤數(shù)目及其大小隨之增加,并且與購買和維護盤有關(guān)的成本也增加。為了減少花費在盤上的成本,與用于減少在主文件服務(wù)器中存儲的數(shù)據(jù)量的去重復(fù)有關(guān)的技術(shù)備受關(guān)注。可以將去重復(fù)技術(shù)分類成其中以塊為單位執(zhí)行去重復(fù)的塊級去重復(fù)和其中以文件為單位執(zhí)行去重復(fù)的文件級去重復(fù),其中文件級去重復(fù)技術(shù)特別地被稱為單實例化技術(shù)。
[0004]單實例化涉及通過統(tǒng)一文件組的數(shù)據(jù)來減少物理數(shù)據(jù)容量的技術(shù),其中整個文件數(shù)據(jù)與一個文件一致。單實例化與塊級去重復(fù)技術(shù)比較僅對系統(tǒng)施加少量負荷,因為對于每個文件執(zhí)行處理,從而它容易被應(yīng)用于主文件服務(wù)器。在專利文獻I中公開了用于實現(xiàn)單實例化的一般方法。一般通過計算文件的散列值、比較散列值并且進一步使具有相同散列值的文件經(jīng)受二進制比較來確定能夠經(jīng)受單實例化的文件的去重復(fù)。
[0005]另外,由于具有較大大小的文件應(yīng)當經(jīng)受單實例化以實現(xiàn)更大數(shù)據(jù)空間減少效果,所以專利文獻I還公開通過將用于去重復(fù)確定的目標文件限于具有特定大小或者更大大小的目標文件來執(zhí)行用于單實例化的確定的技術(shù)。
[0006]引用列表
[0007]專利文獻
[0008]PTLl:USP6, 477,544 的公開文本


【發(fā)明內(nèi)容】

[0009]技術(shù)問題
[0010]在任何現(xiàn)有技術(shù)方法中,經(jīng)由散列值比較確定是否執(zhí)行去重復(fù),并且為了經(jīng)由散列值比較檢測文件重復(fù),必須計算所有目標文件的散列值,并且為了執(zhí)行散列值比較,必須讀取文件的所有實際數(shù)據(jù)。
[0011]也就是說,即使非重復(fù)文件仍然必須使文件的實際數(shù)據(jù)被讀取用于檢測文件重復(fù),從而花費大量時間從海量文件組檢測對應(yīng)文件并且對這些對應(yīng)文件執(zhí)行單實例化。另夕卜,散列值計算的過程開銷可能變成文件服務(wù)器的性能劣化的原因。
[0012]對問題的解決方案
[0013]本發(fā)明人已經(jīng)確認如下發(fā)現(xiàn),該發(fā)現(xiàn)在于關(guān)于具有大的文件大小的文件,具有相同文件大小的文件經(jīng)由二進制比較也具有匹配結(jié)果的概率高。如更早描述的那樣,具有較大大小的文件實現(xiàn)單實例化的更大效果,因此較大文件往往是針對重復(fù)的比較目標,從而本發(fā)明人已經(jīng)推斷文件大小比較對于檢測重復(fù)文件是有效的。因此,為了解決現(xiàn)有技術(shù)的問題,本發(fā)明先執(zhí)行文件大小比較以檢測文件重復(fù)并且執(zhí)行具有對應(yīng)文件大小的文件的二進制比較。
[0014]具體而言,本發(fā)明提供一種文件存儲系統(tǒng),該文件存儲系統(tǒng)包括:控制器,用于管理各自具有管理信息和實際數(shù)據(jù)的多個文件,存儲介質(zhì),構(gòu)成用于存儲多個文件的卷,其中卷包括第一目錄和第二目錄,第一目錄存儲第一文件和第二文件,其中控制器在第二目錄中創(chuàng)建第三文件并且向第三文件遷移第二文件的實際數(shù)據(jù)、建立第二文件的管理信息以在第二文件從計算機接收到讀取訪問時引用第三文件、比較第一文件的實際數(shù)據(jù)與第三文件的實際數(shù)據(jù)的大小,如果大小比較的結(jié)果表示數(shù)據(jù)大小相同,則比較第一文件的實際數(shù)據(jù)與第三文件的實際數(shù)據(jù)的二進制數(shù),并且如果二進制數(shù)比較的結(jié)果表示二進制數(shù)相同,則建立第一文件的管理信息以在第一文件從計算機接收到讀取訪問時引用第三文件,并且刪除第一實際數(shù)據(jù)。
[0015]根據(jù)本發(fā)明的一個方面,在接收到對第一文件的寫入請求時,控制器在第一文件中存儲更新數(shù)據(jù),其中在接收到針對不是更新的數(shù)據(jù)的第一文件的讀取請求時,通過引用第三文件來讀取第三文件的實際數(shù)據(jù),并且在接收到針對與更新數(shù)據(jù)有關(guān)的第一文件的讀取請求時,讀取在第一文件中存儲的更新數(shù)據(jù)。
[0016]根據(jù)本發(fā)明的另一方面,在向第三文件遷移第二文件的實際數(shù)據(jù)時,控制器建立第三文件的管理信息,從而將第二文件的實際數(shù)據(jù)存儲區(qū)域指示為存儲第三文件的實際數(shù)據(jù)的存儲區(qū)域,并且刪除指示第二文件的實際數(shù)據(jù)存儲區(qū)域的第二文件的管理信息。
[0017]根據(jù)本發(fā)明的另一方面,第二目錄是索引目錄,提供第三目錄,在第三目錄中,在第二目錄中存儲的文件的大小被設(shè)置為目錄名稱,在第三目錄中創(chuàng)建第三文件,在第三目錄中,第三文件的大小被設(shè)置為目錄名稱,并且為了將第三文件的實際數(shù)據(jù)的大小與第一文件的實際數(shù)據(jù)比較,控制器將該大小與第三目錄名稱中示出的大小比較而不是與第三文件的實際數(shù)據(jù)的大小比較。
[0018]根據(jù)本發(fā)明的另一方面,在大小比較的結(jié)果表示數(shù)據(jù)大小不同時,控制器向第二目錄創(chuàng)建第四目錄,其中將第一文件的大小設(shè)置為目錄名稱,在第四目錄中創(chuàng)建第四文件,向第四文件遷移第一文件的實際數(shù)據(jù),并且建立第一文件的管理信息以在第一文件從計算機接收到讀取訪問時引用第四文件。
[0019]根據(jù)本發(fā)明的又一方面,在二進制數(shù)比較結(jié)果表示二進制數(shù)不同時,控制器在第三目錄中創(chuàng)建第四文件,向第四文件遷移第一文件的實際數(shù)據(jù),并且建立第一文件的管理信息以在第一文件從計算機接收到讀取訪問時引用第四文件。
[0020]根據(jù)本發(fā)明的另一方面,在二進制數(shù)比較期間,控制器計算第一文件和第三文件的散列值,改變第三文件的名稱以包含第三文件的散列值,并且創(chuàng)建第四文件以具有包括第一文件的散列值的名稱。
[0021]根據(jù)本發(fā)明的又一方面,如果大小比較的結(jié)果表示數(shù)據(jù)大小相同,控制器檢查在第三目錄中存儲的文件數(shù)目是否超過閾值,并且如果檢查結(jié)果表示在第三目錄中存儲的文件數(shù)目超過閾值,則比較在第三目錄中存儲的文件和第一文件的散列值,并且對于作為散列值比較結(jié)果、具有與第一文件相同的散列值的文件執(zhí)行與第一文件的二進制比較。此外,通過比較第一文件的計算的散列值與在第三目錄中存儲的文件名稱中包含的散列值來執(zhí)行散列值比較。
[0022]根據(jù)本發(fā)明的另一方面,控制器對從在第一目錄中存儲的多個文件引用第三文件的引用次數(shù)計數(shù),在引用第三文件的文件的引用數(shù)目變成零時刪除第三文件,并且在作為刪除第三文件的結(jié)果、在第三目錄中不再存在文件時刪除第三目錄。
[0023]根據(jù)本發(fā)明的另一方面,控制器觀測在第一文件中存儲的更新數(shù)據(jù)相對于在第三文件中存儲的實際數(shù)據(jù)的比率,并且在觀測的比率超過閾值時,從第三文件向第一文件復(fù)制除了在第三文件中存儲的實際數(shù)據(jù)的更新數(shù)據(jù)之外的部分,并且從第一文件的管理信息刪除用于引用第三文件的消息。
[0024]另外,根據(jù)本發(fā)明的一個方面,按照從具有最大數(shù)據(jù)的文件起的順序執(zhí)行在第一目錄中存儲的文件的文件大小比較。此外,第二目錄是隱藏目錄。
[0025]本發(fā)明的其他方面將從以下描述中變得清楚或者可以從本實施例中被了解。將通過元素或者各種元素的組合、本說明書的具體描述和本發(fā)明的權(quán)利要求書來實施和實現(xiàn)本發(fā)明的實施例。
[0026]本發(fā)明的有益效果
[0027]本發(fā)明能夠?qū)崿F(xiàn)高速單實例化而無需執(zhí)行所有文件的散列值計算。

【專利附圖】

【附圖說明】
[0028][圖1]圖1是圖示根據(jù)本發(fā)明的典型系統(tǒng)(信息處理系統(tǒng))的物理配置的框圖。
[0029][圖2]圖2是示出根據(jù)本發(fā)明的信息處理系統(tǒng)的更詳細的物理和邏輯配置的視圖。
[0030][圖3]圖3是用于圖示根據(jù)本發(fā)明的實施例的文件克隆和針對索引目錄的文件注冊的操作的流程圖。
[0031][圖4]圖4是圖示根據(jù)本發(fā)明的文件克隆技術(shù)與索引目錄之間的關(guān)系的視圖。
[0032][圖5]圖5是圖示使用根據(jù)本發(fā)明的文件克隆技術(shù)向索引目錄注冊的操作的視圖。
[0033][圖6]圖6是圖示使用根據(jù)本發(fā)明的文件克隆技術(shù)的單實例化操作(I)的視圖。
[0034][圖7]圖7是圖示使用根據(jù)本發(fā)明的文件克隆技術(shù)的單實例化操作(2)的視圖。
[0035][圖8]圖8是圖示根據(jù)本發(fā)明的在執(zhí)行單實例化之后的文件更新操作的視圖。
[0036][圖9]圖9是圖示根據(jù)本發(fā)明的實施例的單實例列表創(chuàng)建處理的流程圖。
[0037][圖10]圖10是圖示根據(jù)本發(fā)明的優(yōu)選實施例的單實例化處理的流程圖。
[0038][圖11]圖11是圖示根據(jù)本發(fā)明的優(yōu)選實施例的去重復(fù)程序處理(I)的流程圖。
[0039][圖12]圖12是圖示根據(jù)本發(fā)明的優(yōu)選實施例的去重復(fù)程序處理(2)的流程圖。
[0040][圖13]圖13是圖示根據(jù)本發(fā)明的索引目錄的配置的概念圖。
[0041][圖14]圖14是示出根據(jù)本發(fā)明的第二實施例的信息處理系統(tǒng)的物理和邏輯配置的視圖。
[0042][圖15]圖15是圖示根據(jù)本發(fā)明的第二實施例的克隆母文件的刪除確定處理的流程圖。
[0043][圖16]圖16是示出根據(jù)本發(fā)明的第三實施例的信息處理系統(tǒng)的物理和邏輯配置的視圖。
[0044][圖17]圖17是圖示根據(jù)本發(fā)明的第三實施例的拆分處理的流程圖。

【具體實施方式】
[0045]現(xiàn)在,將參照附圖描述本發(fā)明的優(yōu)選實施例。在附圖中,可以用相同標號表示具有相同功能的單元。附圖圖示根據(jù)本發(fā)明的原理的實際優(yōu)選實施例,但是僅圖示這些實施例以有助于更好理解本發(fā)明,并且它們不應(yīng)用來以任何方式限制本發(fā)明的范圍。
[0046]此外,可以在通用計算機中操作的軟件中、在專用硬件中或者在軟件和硬件的組合中實施本發(fā)明的優(yōu)選實施例。在附圖中,根據(jù)本發(fā)明的信息以表格或者列表作為示例被示出,但是它們不限于以表格或者列表的形式提供的信息并且該信息可以具有不依賴于數(shù)據(jù)結(jié)構(gòu)的形式。
[0047]根據(jù)本發(fā)明的優(yōu)選實施例,在由NAS機頭(NAS head)和NAS存儲系統(tǒng)組成的NAS中實現(xiàn)單實例功能。然而,本發(fā)明不限于由NAS機頭和NAS存儲系統(tǒng)組成的配置并且可以被實現(xiàn)于具有在NAS機頭上設(shè)置的內(nèi)部盤的服務(wù)器等中。本發(fā)明不限于使用NFS (網(wǎng)絡(luò)文件系統(tǒng))協(xié)議并且可以使用其它文件共享協(xié)議、諸如CIFS(公共因特網(wǎng)文件系統(tǒng))、HTTP(超文本傳送協(xié)議)等。
[0048](I)第一實施例
[0049]圖1是示出與本發(fā)明的第一實施例被應(yīng)用到的計算機系統(tǒng)有關(guān)的、根據(jù)本發(fā)明的優(yōu)選實施例的系統(tǒng)的物理配置的概況的視圖。NAS設(shè)備1000由NAS機頭1100和NAS存儲系統(tǒng)1150組成。NAS機頭1100具有文件共享功能并且經(jīng)由網(wǎng)絡(luò)1190與提供用于存儲文件數(shù)據(jù)的卷的NAS存儲系統(tǒng)1150耦合。NAS機頭1100和NAS存儲系統(tǒng)1150 —起作為NAS
設(shè)備工作。
[0050]經(jīng)由網(wǎng)絡(luò)1190耦合NAS機頭1100和NAS存儲系統(tǒng)1150。另外,NAS設(shè)備1100經(jīng)由網(wǎng)絡(luò)1191耦合到訪問NAS設(shè)備1000的多個NAS客戶端1180至1182。網(wǎng)絡(luò)1190是FC(光纖通道)而1191是LAN(局域網(wǎng))。當然,網(wǎng)絡(luò)的類型不限于這樣的網(wǎng)絡(luò),并且可以利用各種其它網(wǎng)絡(luò)。雖然未示出,但是NAS客戶端1180至1182各自包括CPU和存儲器。
[0051]圖1中所示的NAS存儲系統(tǒng)1150包括CPU 1110、存儲器1120和高速緩存1130。如圖2中所示的各種程序存儲于存儲器1120中。這些程序例如是NFS服務(wù)器程序1121、通知程序1122、策略決定程序1123、單實例程序1124和文件系統(tǒng)1125。各種驅(qū)動器軟件也存儲于存儲器1120中。存儲于存儲器1120中的各種程序由CPU 1110讀取和執(zhí)行以實現(xiàn)各功能,諸如稍后詳細描述的單實例功能。在使用程序或者功能作為主題的以下描述中,過程實際上由CPU或者實施程序的各種電路執(zhí)行。
[0052]高速緩存1130存儲NAS機頭接收的寫入數(shù)據(jù)、從盤驅(qū)動1170讀取的數(shù)據(jù)等。NAS存儲系統(tǒng)1150包括存儲控制器1160和盤驅(qū)動1170。存儲控制器1160包括CPU 1161、存儲器1162和高速緩存1163。
[0053]如圖1中所示,NAS機頭1100和NAS存儲系統(tǒng)1150具有用于將NAS機頭和NAS存儲系統(tǒng)耦合到網(wǎng)絡(luò)或者其它設(shè)備的一個或者多個接口(I/F)。NAS機頭1100包括1作1140和1141,并且存儲控制器1160包括I/F 1164和1165。另外,NAS客戶端也包括I/F,但是在附圖中未示出它。
[0054]圖2是示出NAS設(shè)備和NAS客戶端的邏輯配置的概況的視圖?,F(xiàn)在,將描述在NAS設(shè)備1000的各單元中實施的文件和應(yīng)用。NAS客戶端1180包括應(yīng)用1210、NFS客戶端1211和NAS管理器1212作為在其中操作的程序。NAS管理器1212執(zhí)行NAS設(shè)備1000的設(shè)置。
[0055]NAS存儲系統(tǒng)1150包括卷1220,該卷用于存儲經(jīng)由存儲控制器1160的控制而提供的并且由NAS機頭1100處理的數(shù)據(jù),諸如數(shù)據(jù)文件和各種管理文件。經(jīng)由存儲控制器1160使用盤1170的存儲區(qū)域來實現(xiàn)卷1220。
[0056]NFS服務(wù)器程序1121是用于提供用于共享文件的NFS(網(wǎng)絡(luò)文件系統(tǒng))功能的應(yīng)用程序。文件系統(tǒng)1125是NAS機頭1100的文件系統(tǒng)并且在卷1220中存儲文件。在本實施例中,文件由存儲索引節(jié)點(inode)信息的塊區(qū)域、塊指針和實際數(shù)據(jù)組成。索引節(jié)點信息存儲文件配置和塊指針的映射信息。
[0057]文件系統(tǒng)可以例如是用于Linux (注冊商標)或者NTFS (Windows NT (注冊商標)文件系統(tǒng))的ext2(第二擴展文件系統(tǒng))或者ext3(第三擴展文件系統(tǒng))。存儲控制器1160提供塊格式的存儲功能,諸如FC-SAN(光纖通道存儲區(qū)域網(wǎng)絡(luò))。文件系統(tǒng)1125在存儲控制器1160提供的卷1220中存儲數(shù)據(jù)。
[0058]通知程序1122與文件系統(tǒng)1125配合并且創(chuàng)建文件列表1231,該文件列表是管理文件。文件列表1231存儲在某個時間(例如,先前單實例處理)之后新創(chuàng)建或者更新的文件的文件路徑列表。例如,假設(shè)在文件列表1231中存儲文件A 1241、文件B 1242和文件C1243的文件路徑(未存儲文件D 1244和E 1245)。初始地,例如文件系統(tǒng)使用查找命令等來創(chuàng)建文件列表1231,該文件列表存儲文件系統(tǒng)中的所有文件的文件路徑。
[0059]策略決定程序1123包括作為管理文件的單實例策略1232并且與通知程序1122和單實例程序1124配合以創(chuàng)建單實例列表1236,該單實例列表是管理文件。單實例策略1232存儲用于從文件列表1231提取文件以創(chuàng)建單實例列表1236的策略。
[0060]例如,為了通過單實例化執(zhí)行僅具有高空間減少效果的文件的單實例化,在規(guī)定文件大小應(yīng)當是IMB或者更大的策略存儲于單實例策略1232中時,在文件列表1231中存儲的所有文件之中的僅具有IMB或者更大的文件大小的文件的文件路徑列表被存儲于單實例列表1236中。例如,文件A 1241、文件B 1242和文件C 1243被存儲于列表中。
[0061]除了文件大小之外,有可能存儲用于執(zhí)行僅具有在閾值以下的更新頻率的文件的單實例化的策略或者存儲用于僅對具有特定擴展名的文件執(zhí)行單實例化的策略。
[0062]關(guān)于在單實例列表1236中存儲的文件,單實例程序1124具有用于檢測文件的重復(fù)并且執(zhí)行重復(fù)文件的單實例化的功能。單實例程序1124包括文件分類程序1233、去重復(fù)程序1234、文件克隆程序1235和單實例列表1236。
[0063]文件分類程序1233執(zhí)行文件的分類用于經(jīng)由二進制比較確定文件的重復(fù)。文件分類程序1233通過比較文件大小來執(zhí)行重復(fù)文件的主檢測。另外,在檢測到文件大小一致的文件時,啟動去重復(fù)程序1234以執(zhí)行文件的二進制比較。
[0064]為了增加比較文件大小的速度,在卷1220中創(chuàng)建索引目錄1250。創(chuàng)建實際大小目錄的索引目錄1250是隱藏目錄并且存儲單實例程序1124所利用的信息。通過直接將該目錄設(shè)計為隱藏,變得有可能防止用戶更新(將稍后具體加以描述的)克隆母文件(parentfile)。
[0065]然而,索引目錄1250不必是隱藏目錄。另外,索引目錄可以包括其它目錄,諸如用于存儲文件擴展名信息的擴展名目錄。導出目錄1240存儲一般用戶訪問的文件,并且在索引目錄1250中注冊的文件是(將稍后具體加以描述的)克隆子文件(child file)。
[0066]文件克隆意味著當存在存儲相同內(nèi)容的多個文件時或者如果復(fù)制具有相同內(nèi)容的文件,則將存儲多個文件的相同內(nèi)容的文件之一設(shè)置為克隆母文件并且將存儲相同內(nèi)容的其它多個文件設(shè)置為克隆子文件。改變索引節(jié)點信息的文件配置和克隆子文件的塊指針的映射信息,并且在訪問克隆子文件時,引用索引節(jié)點信息的文件配置和克隆母文件的塊指針的映射信息。然后,刪除克隆子文件的實際數(shù)據(jù)。因此,克隆子文件被存根,并且僅克隆母文件將具有實際數(shù)據(jù),從而所需存儲容量可以減少。
[0067]在出現(xiàn)對克隆子文件的寫入訪問時,向塊指針指向的邏輯塊區(qū)域指派物理塊區(qū)域,并且在該物理塊區(qū)域中存儲數(shù)據(jù)。另外,改變文件配置和在克隆子文件的索引節(jié)點信息中的塊指針的映射信息和文件配置,并且關(guān)于更新的部分的讀取處理,引用克隆子文件的塊指針,并且讀取在塊指針指向的區(qū)域中存儲的數(shù)據(jù)。關(guān)于對物理塊區(qū)域的訪問,引用在該區(qū)域中的數(shù)據(jù),而關(guān)于對其它區(qū)域的訪問,引用克隆母文件。
[0068]接著,將參照圖3描述根據(jù)本實施例的文件克隆和向索引目錄1250注冊文件的流程。在S17010中,創(chuàng)建具有注冊目標文件的文件大小目錄名稱的實際大小目錄至在索引目錄中存儲的多個范圍大小目錄之中的如下范圍大小目錄,在該范圍大小目錄中,在導出目錄1240中存儲的注冊目標文件的文件大小被設(shè)置為存儲目標。
[0069]在S17020中,在S17010中創(chuàng)建的實際大小目錄中創(chuàng)建以〈nohash〉.<索引節(jié)點編號〉作為文件名并且具有與注冊目標文件相同大小的空文件。在向索引目錄初始注冊文件期間,不注冊散列值信息,從而可以減少通過計算在單實例列表1236中存儲的所有文件的散列值的處理開銷并且可以增強處理的速度。文件名可以是被定義用于表示尚未執(zhí)行散列值計算的任何任意字符串。
[0070]在S17030中,改變在S17020中創(chuàng)建的空文件的塊指針以便引用注冊目標文件的實際數(shù)據(jù)。在S17040中,改變注冊的文件的索引節(jié)點信息以引用在S17030中創(chuàng)建的文件的索引節(jié)點信息。在S17050中,刪除注冊目標文件的塊指針。
[0071]根據(jù)本處理,在導出目錄1240中創(chuàng)建克隆子文件,該克隆子文件是引用母文件的存根文件,并且在索引目錄中創(chuàng)建被引用的克隆母文件。作為結(jié)果,可以在索引目錄中放置克隆母文件,該索引目錄是隱藏目錄,根據(jù)該隱藏目錄可以防止用戶更新克隆母文件并且可以減少改變管理信息的負荷。另外,根據(jù)本處理,可以從注冊目標文件向索引目錄創(chuàng)建的文件遷移數(shù)據(jù),從而可以減少伴隨遷移處理的負荷。
[0072]現(xiàn)在參照圖2,假設(shè)在單實例列表1236中存儲文件A1241、文件B1242和文件C1243的文件路徑。在實際大小目錄1251中將文件A的克隆母文件注冊為〈nohash.100〉文件1252,并且將在導出目錄1240中的文件A1241轉(zhuǎn)換成克隆子文件。另外,與文件A1241相似,文件B1242被注冊在實際大小目錄1253中,在索引目錄1250中被注冊為克隆母文件1254,并且將在導出目錄中的文件B1242轉(zhuǎn)換成克隆子文件。
[0073]去重復(fù)程序1234執(zhí)行其中不執(zhí)行散列值比較的去重復(fù)程序處理A和其中執(zhí)行了散列值比較的去重復(fù)程序處理B。在以下描述中,如果無需區(qū)分這兩個過程,則程序被簡稱為去重復(fù)程序1234。去重復(fù)程序1234執(zhí)行具有相同文件大小的文件的二進制比較。例如,對于文件B1242和文件C1243執(zhí)行二進制比較。
[0074]這時,使用針對二進制比較而讀取的數(shù)據(jù)來執(zhí)行散列值比較。這考慮如下缺點,該缺點在于當存在具有相同文件大小、但是具有不同內(nèi)容的大量文件時,通過文件大小比較來檢測重復(fù)文件需要很多次的二進制比較并且需要太久。為了解決該問題,如果具有相同文件大小、但是具有不同內(nèi)容的文件數(shù)目超過某個閾值,則執(zhí)行散列值比較作為去重復(fù)程序B的處理的一部分。
[0075]去重復(fù)程序1234使用計算的散列值將文件名〈nohash〉.<索引節(jié)點編號 > 重命名成〈散列值 >.< 索引節(jié)點編號 >。作為二進制比較結(jié)果,當二進制匹配出現(xiàn)時,文件克隆程序1235將其中文件重復(fù)已經(jīng)被檢測到的文件、例如文件C1243轉(zhuǎn)換成克隆子文件。
[0076]根據(jù)以上過程,對于文件B和C執(zhí)行單實例化。作為二進制比較結(jié)果,在確定二進制不匹配時,向索引目錄1250注冊文件。由于在二進制比較期間執(zhí)行散列計算,所以按照文件名〈散列值 >.< 索引節(jié)點編號 > 注冊克隆母文件。另外,克隆母文件具有用于管理引用克隆母文件的克隆子文件的數(shù)目的引用計數(shù)器。稍后將描述克隆母文件的刪除處理的細節(jié),但是在刪除克隆子文件時,遞減克隆母文件的引用計數(shù)器,并且在刪除所有克隆子文件時,將引用計數(shù)器設(shè)置成零,從而克隆母文件變成非必需并且將自動刪除克隆母文件。
[0077]NFS客戶端1211包括NFS客戶端功能,該NFS客戶端功能使應(yīng)用1210能夠經(jīng)由NFS協(xié)議訪問在NAS設(shè)備1000的數(shù)據(jù)文件內(nèi)的數(shù)據(jù)并且訪問NAS機頭1100的NFS服務(wù)器程序1121。NFS服務(wù)器程序1121代表NFS客戶端1211訪問在耦合到NAS機頭1100的NAS存儲系統(tǒng)1150的卷1220中存儲數(shù)據(jù)的文件系統(tǒng)1125。
[0078]接著將參照圖4至圖9描述使用文件克隆功能的單實例化的實際流程。圖4示出文件B 1302在執(zhí)行單實例程序1124之前的狀態(tài)。導出目錄1240存儲用戶訪問的文件。文件B 1302具有3.2MB的文件大小和索引節(jié)點編號240。文件B 1302由索引節(jié)點信息1410、塊指針1420以及存儲實際數(shù)據(jù)的塊區(qū)域1431和1432組成。
[0079]大小目錄1320緊接于索引目錄1250之下存在,并且雖然在圖4至圖9中未示出,但是也可以提供用于存儲除了文件大小和散列值之外的信息的目錄、諸如用于存儲文件擴展名信息的擴展名目錄。關(guān)于前述的范圍大小目錄,在圖4至圖9中僅示出4M目錄1335而省略其它范圍大小目錄。
[0080]圖5是示出其中單實例程序1124向索引目錄1250注冊文件B1302的過程的示圖。在作為范圍大小目錄的4M目錄1335中,創(chuàng)建以文件B1302的文件大小作為目錄名稱的3.2M目錄1342。隨后,在3.2M目錄1342中創(chuàng)建以〈nohash〉.<索引節(jié)點編號 > 作為文件名的空文件。在文件B1302的情況下,〈nohash.240〉變成文件名。另外,該文件名可以是被定義用于表示尚未執(zhí)行散列值計算的任何任意字符串。
[0081]〈nohash.240〉文件1352存儲索引節(jié)點信息1510和塊指針1520,并且塊指針1520指向文件B1302的塊指針1420指向的相同塊區(qū)域1431和1432。然后,改變文件B1302的索引節(jié)點信息1410,并且在出現(xiàn)針對文件B1302的數(shù)據(jù)訪問時,經(jīng)由〈nohash.240〉文件1352的索引節(jié)點信息1510引用在塊區(qū)域1431和1432中的數(shù)據(jù)。由此,可以從文件B1302向〈nohash.240>文件1352移動數(shù)據(jù)而未執(zhí)行任何復(fù)制處理。在該狀態(tài)中,〈nohash.240〉文件1352是克隆母文件,文件B 1302是克隆子文件,其中克隆母文件具有實際數(shù)據(jù)而克隆子文件經(jīng)由克隆母文件引用實際數(shù)據(jù)。
[0082]圖6是示出存儲相同內(nèi)容的文件B 1302和文件C 1303的單實例化處理的示圖。轉(zhuǎn)換成克隆子文件的文件B 1302和正常文件C 1303存在于導出目錄1240中。文件C 1303具有3.2MB的文件大小和索引節(jié)點編號260。文件C 1303由索引節(jié)點信息1610、塊指針1620以及存儲實際數(shù)據(jù)的塊區(qū)域1631和1632組成。由于文件B 1302和文件C 1303是相同文件,所以在塊區(qū)域1431和1631中存儲相同數(shù)據(jù)并且在塊區(qū)域1432和1632中存儲相同數(shù)據(jù)。
[0083]獲取文件C 1303的文件大小,該文件大小與〈nohash.240〉文件1352的文件大小比較。作為結(jié)果,發(fā)現(xiàn)兩個文件具有相同文件大小,因此兩個文件經(jīng)受二進制比較。實際上,執(zhí)行塊區(qū)域1431和1432與塊區(qū)域1631和1632的二進制比較以便確認二進制匹配。另外,在二進制比較期間的盤讀取數(shù)據(jù)用來計算散列值。然后,使用散列值將〈nohash.240〉文件1352的文件名重命名成〈5AF4B.240〉。
[0084]改變文件C 1303的索引節(jié)點信息1610,從而在訪問文件C 1303的數(shù)據(jù)時經(jīng)由〈5AF4B.240〉文件1352的索引節(jié)點信息1510引用塊區(qū)域1431和1432。隨后,刪除文件C1303的塊指針1620的指針目的地的塊區(qū)域1631和1632的數(shù)據(jù)。
[0085]圖7是示出在執(zhí)行文件B 1302和文件C 1303的單實例化處理之后的狀態(tài)的附圖。將文件C 1303轉(zhuǎn)換成以〈5AF4B.240>文件1352作為克隆母文件的克隆子文件(將文件C的索引節(jié)點信息1610改變成索引節(jié)點信息1710,并且將塊指針1620改變成塊指針1720)。文件B 1302和文件C 1303 二者變成克隆子文件,根據(jù)其實現(xiàn)單實例化,在該單實例化中,文件B和C 二者引用克隆母文件的塊區(qū)域1431和1432。
[0086]圖8示出如下情況的處理,在該情況下已經(jīng)更新了文件B 1302的第二邏輯塊區(qū)域1832和文件C 1303的第一邏輯塊區(qū)域。在單實例化處理之后,直至文件B 1302經(jīng)受文件更新才向文件B 1302的塊指針1420指向的邏輯塊區(qū)域1831和1832指派物理塊區(qū)域。
[0087]當經(jīng)由文件更新來更新文件B 1302的第二邏輯塊區(qū)域1832的數(shù)據(jù)時,向塊指針1430指向的邏輯塊區(qū)域1832指派物理塊區(qū)域,并且在該物理塊區(qū)域中存儲數(shù)據(jù)。在文件C 1303的文件更新中相似地,當更新第一邏輯塊區(qū)域1833時,向塊指針1730指向的邏輯塊區(qū)域1833指派物理塊區(qū)域,并且在該物理塊區(qū)域中存儲數(shù)據(jù)。這時,重寫文件B和文件C的索引節(jié)點信息,并且在出現(xiàn)對其中已經(jīng)指派了物理塊的區(qū)域的訪問時,引用在該區(qū)域中存儲的數(shù)據(jù)。
[0088]在文件更新之后訪問文件B 1302的數(shù)據(jù)時,由于未向第一邏輯塊區(qū)域1831指派物理塊區(qū)域,所以經(jīng)由克隆母文件的索引節(jié)點信息1510引用塊區(qū)域1431的數(shù)據(jù)。至于第二邏輯塊區(qū)域1832,由于物理塊區(qū)域被指派,所以引用在物理塊區(qū)域1832中的數(shù)據(jù)。
[0089]在更新文件之后的文件C的數(shù)據(jù)訪問期間,由于向第一邏輯塊區(qū)域1833指派了物理塊區(qū)域,所以引用在物理塊區(qū)域1833中的數(shù)據(jù)。由于未向第二邏輯塊區(qū)域1834指派物理塊區(qū)域,所以經(jīng)由克隆母文件的索引節(jié)點信息1510引用在塊區(qū)域1432中的數(shù)據(jù)。
[0090]在專利文獻I的單實例化方法中,在單實例化之后執(zhí)行文件更新時,將實施(向物理塊區(qū)域指派)文件的所有區(qū)域,從而單實例化的空間減少效果將變成零。在另一方面,根據(jù)本發(fā)明,在克隆子文件側(cè)存儲在單實例化之后的文件更新數(shù)據(jù),從而在單實例化的文件之中繼續(xù)地共享未經(jīng)受數(shù)據(jù)更新的區(qū)域,從而關(guān)于其中數(shù)據(jù)尚未更新的數(shù)據(jù)維持單實例化的空間減少效果。
[0091]在快照技術(shù)中也分離地存儲更新的數(shù)據(jù),但是本發(fā)明更有利在于管理信息的數(shù)量更小。通常,必須在快照技術(shù)中獲取多代快照,從而每代的所有區(qū)域必須存儲對應(yīng)數(shù)據(jù)區(qū)域的管理信息。對照而言,本發(fā)明針對更新的區(qū)域引用克隆子文件側(cè)而針對非更新的區(qū)域引用克隆母文件側(cè),從而僅克隆子文件側(cè)存儲更新的數(shù)據(jù)作為附加管理信息,并且如果無更新數(shù)據(jù),則系統(tǒng)引用克隆母文件側(cè),從而無需所有區(qū)域存儲對應(yīng)數(shù)據(jù)區(qū)域管理信息。
[0092]索引目錄1250的樹形結(jié)構(gòu)具有由注冊的文件的文件大小所確定的、文件被存儲到的目錄,并且存儲的文件的文件名由散列值和索引節(jié)點編號來確定。如果在中流改變在索引目錄1250中存儲的文件的文件大小、散列值和索引節(jié)點編號,則索引目錄1250的維護處理、諸如文件遷移和重命名變成必需。這樣的處理的負荷可能降低文件存儲的性能。
[0093]在本實施例中,在索引目錄1250中存儲的文件是克隆母文件,并且導出目錄1240的所有單實例化的文件是克隆子文件,其中在克隆子文件側(cè)存儲更新數(shù)據(jù),從而用戶不會更新在索引目錄1250——該索引目錄是隱藏目錄——中存儲的克隆母文件。因此,即使更新了導出目錄1240中的文件仍然不會改變在索引目錄1250中存儲的文件的散列值和索引節(jié)點編號。因此,索引目錄1250的維護處理變成非必需,并且可以防止維護處理負荷降低文件存儲性能。
[0094]圖9示出創(chuàng)建單實例列表的流程。本處理由用來創(chuàng)建單實例列表1236的策略決定程序1123執(zhí)行。本流程涉及在確定單實例化是否有可能之前用于確定是否應(yīng)當單實例化每個文件的過程。
[0095]在S10010中,讀取單實例策略文件1232。單實例策略文件1232存儲用于創(chuàng)建單實例文件列表的策略。例如,將創(chuàng)建時間和日期、更新時間和日期、訪問時間和日期、文件大小、文件擴展名、文件系統(tǒng)名稱、目錄名稱、文件名等設(shè)置為策略。這些策略由用戶的系統(tǒng)管理員等經(jīng)由NAS管理器1212或者耦合到NAS管理器的輸入設(shè)備來建立。例如,在單實例化(或者如圖3中所示克隆)文件時,文件訪問響應(yīng)速度可能下降,從而有可能執(zhí)行設(shè)置,從而具有新更新日期的、傾向于具有高文件訪問可能性的文件不會經(jīng)受單實例化。
[0096]在S10020中,讀取文件列表文件1231。文件列表文件1231由通知程序1122倉ij建。當文件改變發(fā)生時,文件系統(tǒng)1125向通知程序1122進行通知,諸如新文件創(chuàng)建、文件更新和文件刪除。通知程序1122在上述通知被接收到時向文件列表文件1231添加相關(guān)文件的文件路徑。
[0097]在S10030中,選擇在文件列表文件1231中列舉的而尚未經(jīng)受策略決定的一個文件。在S10040中,在S10030中選擇的文件經(jīng)受基于在單實例策略文件1232中規(guī)定的策略的決定。如果文件滿足策略,則該過程繼續(xù)至S10050,而如果不滿足,則該過程繼續(xù)至S10060。
[0098]在S10050中,向單實例列表文件1236添加已經(jīng)滿足策略的文件的文件路徑。向單實例列表文件1236添加的文件是經(jīng)受關(guān)于單實例化是否有可能的確定的文件。在S10060中,在下一文件存在于文件列表文件1231中時,該過程返回到S10030,而在完成在文件列表文件1230中列舉的所有文件的策略決定時,結(jié)束本處理。
[0099]<單實例化處理的流程圖>
[0100]圖10、11和12是圖示單實例化處理的流程圖。經(jīng)由單實例程序1124執(zhí)行本處理。單實例程序1124由文件分類程序1233、去重復(fù)程序1234和文件克隆程序1235組成,其中相應(yīng)程序配合以實現(xiàn)單實例化處理。
[0101]文件分類程序1233主要執(zhí)行在圖10中所示的單實例化處理的總控制,并且去重復(fù)程序1234執(zhí)行圖11和12中所示的過程。文件克隆程序1235根據(jù)圖10、11和12執(zhí)行文件的克隆。
[0102]參照圖10,在SllOlO中,文件分類程序1233讀取單實例列表1236并且依次處理在單實例列表1236中列舉的文件。對處理文件的順序無限制,但是由于具有更大文件大小的文件具有更大量空間減少,因此例如可以按照從具有最大文件大小的文件起的順序處理文件。然而,為了從具有最大文件大小的文件起來處理文件,施加了用于檢查文件的容量的負荷,從而通過逐漸地減少在單實例策略1232中指定的單實例化目標文件大小,可以實現(xiàn)與重排文件相似的效果。如果在預(yù)先設(shè)置的給定時間內(nèi)未完成單實例化處理,則可以中斷處理。因此,在完成具有高的空間減少效果的、具有大文件大小的文件的單實例化時,實現(xiàn)了一定水平的空間減少。
[0103]在S11020中,獲取在SllOl中選擇的文件的文件大小。例如,使用文件系統(tǒng)1125的STAT系統(tǒng)調(diào)用函數(shù)來獲取文件大小。在S11030中,檢查是否正在經(jīng)由去重復(fù)程序處理具有與在SllOlO中選擇的文件相同的文件大小的文件,并且在處理這樣的文件時,推遲該文件的處理,并且使該過程返回到SllOlO以處理下一文件。
[0104]這是因為在稍后具體描述的文件大小比較期間,使用索引目錄1250,但是去重復(fù)程序1234也執(zhí)行向索引目錄注冊文件,從而在經(jīng)由文件分類程序1233和去重復(fù)程序1234同時處理具有相同文件大小的文件時,可能在文件大小比較期間出現(xiàn)泄漏。如果不經(jīng)由去重復(fù)程序1234處理具有相同文件大小的文件,則該過程繼續(xù)至S11040。
[0105]由于該控制,文件分類程序1233可以在開始去重復(fù)程序1234之后開始下一過程而不等待該程序結(jié)束,并且通過同時且并行地執(zhí)行文件分類程序1233和去重復(fù)程序1234使得能夠進行高速處理。另外,可以并行地同時開始多個去重復(fù)程序1234。
[0106]在S11040中,檢查是否在索引目錄1250中注冊具有與在S11010中選擇的文件相同的文件大小的文件。索引目錄將文件大小存儲為實際大小目錄名稱,并且預(yù)先知道目錄的全路徑,從而向文件系統(tǒng)、諸如opendir系統(tǒng)調(diào)用或者stat系統(tǒng)調(diào)用發(fā)布實際大小目錄的返回值可以用來確定是否在索引目錄1250中存儲具有相同文件大小的文件。作為結(jié)果,可以以比創(chuàng)建索引大小列表以及執(zhí)行二進制搜索更高的速度執(zhí)行文件大小確定。如果未注冊具有相同文件大小的文件,則該過程繼續(xù)至S11060,而如果注冊了這樣的文件,則該過程繼續(xù)至SI 1050。
[0107]在S11050中,確定具有相同文件大小的文件數(shù)目是否小于閾值,并且如果該數(shù)目小于閾值,則該過程繼續(xù)至S11051并且開始去重復(fù)程序A,而如果數(shù)目等于或者大于閾值,則該過程繼續(xù)至S11052并且開始去重復(fù)程序B。例如,閾值可以經(jīng)由NAS設(shè)備1000來設(shè)置并且可以使用NAS管理器1212來設(shè)置。如果具有相同文件大小的文件數(shù)目小、諸如一個或者兩個,則可以通過經(jīng)由輪循(round-robin)系統(tǒng)執(zhí)行二進制比較而不執(zhí)行散列值比較而在更短時間段內(nèi)執(zhí)行重復(fù)檢測處理。
[0108]在另一方面,如果存在具有相同文件大小的大量文件,則經(jīng)由輪循系統(tǒng)的二進制比較可能需要太多時間。另外,如果文件大小為大而二進制比較時間長,并且如果散列計算簡單,則可以通過從第一文件比較起執(zhí)行散列值比較來縮短總處理時間。對照而言,如果文件大小為小而二進制比較時間短,并且如果在實際大小目錄中的文件數(shù)目小、諸如兩個,則可以通過僅執(zhí)行二進制比較而不執(zhí)行散列值比較、從而可以從在實際大小目錄中的第三或者第四文件起執(zhí)行散列值比較來縮短總處理時間。應(yīng)當從實際大小目錄的頂部起的哪個文件開始與二進制比較組合使用散列值比較以減少總處理時間依賴于比較目標文件大小,從而對于每個范圍大小目錄有可能改變應(yīng)當執(zhí)行從實際大小目錄的頂部起的哪個文件的散列值比較。為了解決該問題,當存在具有相同文件大小的大量文件時,開始去重復(fù)程序B以附加地執(zhí)行散列值比較。
[0109]指定在SllOlO中選擇的在導出目錄1240中的文件和在S11040中發(fā)現(xiàn)的在索引目錄1250中的文件以開始去重復(fù)程序1234。如果在索引目錄1250中存在具有相同文件大小的大量文件,則指定所有對應(yīng)文件。由于在S11030中描述的控制存在,所以該過程繼續(xù)至S11070而不等待開始的去重復(fù)程序1234結(jié)束。可以在相同時間開始多個去重復(fù)程序1234。在S11060中,關(guān)于在S11010中選擇的在導出目錄1240中的文件,如在圖3和圖5中描述的那樣在索引目錄1250中注冊文件,并且將文件轉(zhuǎn)換成克隆子文件。
[0110]在S11070中,在結(jié)束在SllOlO中選擇的在導出目錄1240中的文件的單實例化處理之后,從單實例列表1236刪除經(jīng)受單實例化的文件。在S11080中,在文件保留于單實例列表1236中時,該過程返回到S11010,并且處理下一文件。在無剩余文件時,結(jié)束單實例化處理。
[0111]圖11是在圖10的S11051中開始的去重復(fù)程序A的處理的流程圖。在S12010中,在文件分類程序1233指定的文件之間執(zhí)行二進制比較。在二進制數(shù)不對應(yīng)時,該過程繼續(xù)至S12020,其中在二進制數(shù)對應(yīng)時,該過程繼續(xù)至S12030。
[0112]在S12020中,如果在索引目錄1250中存在具有相同文件大小的多個文件,則文件分類程序1233指定索引目錄1250中的多個文件。當存在下一個二進制比較候選時,該過程返回到S12010。在無后續(xù)二進制比較候選時,該過程繼續(xù)至S12040。在S12040中,關(guān)于在導出目錄1240中的被文件分類程序1233指定的文件,參照圖3和圖5所描述的在索引目錄1250中注冊文件,并且將該文件轉(zhuǎn)換成克隆子文件。
[0113]在S12030中,關(guān)于在導出目錄1240中的被文件分類程序1233指定的文件,執(zhí)行參照圖6描述的單實例化。在S12050中,關(guān)于散列值計算是否有必要進行確定。至于索引目錄1250的文件注冊,在被文件分類程序1233指定的索引目錄1250的文件中包括〈nohash〉文件時,必須執(zhí)行〈nohash〉文件的散列值計算,并且該過程繼續(xù)至S12060。如果未包括〈nohash〉文件,則散列值計算不是必需的,并且將結(jié)束去重復(fù)程序A的處理。
[0114]在S12060中,執(zhí)行〈nohash〉文件的散列值計算。如果在二進制比較之后執(zhí)行散列值計算,則為了執(zhí)行散列值計算而需要的文件的實際數(shù)據(jù)的高速緩存命中概率變高,并且可以高速執(zhí)行處理。也有可能在二進制比較期間讀取文件的實際數(shù)據(jù)時執(zhí)行散列值計算。在S12070中,在S12060中計算的散列值用來執(zhí)行向〈散列值 >.< 索引節(jié)點編號 > 的重命名處理,并且結(jié)束去重復(fù)程序A的處理。
[0115]參照圖12,將描述在索引目錄中的具有相同文件大小的文件數(shù)目大于閾值時執(zhí)行的去重復(fù)程序B。在S13030中,將計算文件分類程序1233所指定的導出目錄1240的文件的散列值。
[0116]在S13020中,關(guān)于文件分類程序1233所指定的索引目錄1250的文件,如果存在其中散列值尚未被計算的〈nohash〉文件,則需要散列值計算和重命名處理。如果存在〈nohash〉文件并且需要重命名處理,則該過程繼續(xù)至S13030,而如果不是,則該過程繼續(xù)至S13050。在S13030中,計算需要重命名處理的文件的散列值。在S13040中,文件經(jīng)受使用在S13030中計算的散列值向〈散列值 >.< 索引節(jié)點編號 > 的重命名處理。
[0117]在S13050中,比較在S13030中計算的散列值與被存儲為文件名的、由文件分類程序1233指定的在索引目錄中的文件的散列值。在散列值不匹配時,該過程繼續(xù)至S13060,而在散列值對應(yīng)時,該過程繼續(xù)至S13080。在S13060中,如果在索引目錄1250中存在具有相同文件大小的多個文件并且下一散列值比較候選存在,則該過程返回到S13050。如果無下一散列值比較候選,則該過程繼續(xù)至S13070。
[0118]在S13070中,關(guān)于由文件分類程序1233指定的在導出目錄1240中的文件,執(zhí)行如參照圖3和圖5描述的向索引目錄1250的文件注冊以及克隆子文件轉(zhuǎn)換。這時,由于在S13030中計算導出目錄1240的文件的散列值,所以不按照文件名〈nohash〉.<索引節(jié)點編號 >、而是按照文件名〈散列值 >.< 索引節(jié)點編號 > 向索引目錄1250注冊文件,并且結(jié)束去重復(fù)程序B的處理。
[0119]當在S13080中散列值匹配時,進一步執(zhí)行二進制比較。在二進制數(shù)不匹配時,該過程繼續(xù)至S13060,而在二進制數(shù)匹配時,該過程繼續(xù)至S13090。在S13090中,關(guān)于由文件分類程序1233指定的導出目錄1240的文件,執(zhí)行參照圖6描述的單實例化,并且將結(jié)束去重復(fù)程序B的處理。另外,通過在二進制比較期間執(zhí)行散列值計算,即使存在具有相同文件大小、但是具有不同內(nèi)容的大量文件,仍然可以減少經(jīng)由散列值比較的無意義的二進制比較的數(shù)目。
[0120]參照圖13描述根據(jù)本發(fā)明的處理的一個示例。作為示例,它示出如何在索引目錄1250中注冊在索引目錄1250的單實例列表1236中存儲的文件A 1301、文件B 1302、文件C 1303、文件F 1306、文件G 1307、文件H 1308、文件I 1309和文件J 1310(文件D1304、文件E 1305、文件K 1311和文件L 1312不在列表中)。文件A 1301的文件大小是1.1MB,文件B 1302和文件C 1303的文件大小是3.2MB并且其內(nèi)容相同,文件F 1306、文件G 1307、文件H 1308、文件I 1309和文件J 1310的文件大小是3.42MB并且都相同,其中文件F 1306和文件G 1307的內(nèi)容是相同數(shù)據(jù),文件H 1308、文件I 1309和文件J 1310的內(nèi)容是相同數(shù)據(jù)、但是不同于文件F 1306和文件G1307的內(nèi)容。
[0121]文件目錄1320存在于索引目錄1250之下,并且在該目錄中注冊文件大小信息和散列值。在本說明書中省略詳細描述,但是在使用文件擴展名來執(zhí)行文件去重復(fù)時,創(chuàng)建擴展名目錄1321并且在該目錄中注冊擴展名信息。除了大小目錄1320和擴展名目錄1321之外,可以創(chuàng)建用于存儲可以用于文件去重復(fù)的信息的各種目錄。
[0122]在大小目錄1320內(nèi)創(chuàng)建范圍大小目錄1331至1336。創(chuàng)建范圍大小目錄以便通過防止存儲的目錄和文件被集中于特定目錄中來防止文件系統(tǒng)性能降低。例如,在256K目錄1331中注冊具有小于256KB的文件大小的文件。在512K目錄1332中注冊具有等于或者大于256KB而小于512KB的文件大小的文件。在IM目錄1333中注冊具有等于或者大于512KB而小于IMB的文件大小的文件。在2M目錄1334中注冊具有等于或者大于IMB而小于2MB的文件大小的文件。在4M目錄1335中注冊具有等于或者大于2MB而小于4MB的文件大小的文件。以相似方式向8M目錄1336等注冊文件。
[0123]可以自由設(shè)置范圍大小目錄的粒度,并且理想地,它們應(yīng)當被建立為使得目錄的數(shù)目和在每個范圍大小目錄中存儲的文件的數(shù)目均等。也有可能通過分析在文件系統(tǒng)中的受到單實例化的文件并且分析每個文件大小范圍的文件分布來建立范圍大小目錄。
[0124]在初始狀態(tài)中,創(chuàng)建大小目錄1320和范圍大小目錄1331至1336。以下示出關(guān)于文件A 1301的過程。首先,單實例程序1124檢查是否已經(jīng)在索引目錄1250中注冊了具有與文件A 1301相同的文件大小的文件。由于尚未注冊與文件A相同的文件大小為
1.1M的文件,所以在2M目錄1334中創(chuàng)建其中文件大小被設(shè)置為目錄名稱的實際大小目錄1341。關(guān)于文件A 1301,創(chuàng)建1.1M目錄1341。然后,在實際大小目錄中創(chuàng)建具有文件名〈nohash〉.〈100 (文件A的索引節(jié)點編號)> 的克隆母文件1351,并且將在導出目錄1240中存儲的文件A 1301轉(zhuǎn)換成克隆子文件。
[0125]接著,以下示出關(guān)于文件B1302的處理。與文件A 1301相似,由于文件具有未在索引目錄中注冊的文件大小,所以在作為范圍大小目錄的4M目錄1335中創(chuàng)建3.2M目錄1342,該目錄是實際大小目錄,在該目錄中創(chuàng)建具有文件名〈nohash〉.<240 (文件B的節(jié)點編號)> 的克隆母文件1352,并且將在導出目錄1240中存儲的文件B1302轉(zhuǎn)換成克隆子文件。
[0126]接著,以下將舉例說明關(guān)于文件C 1303的處理。由于文件B1302和文件C 1303是相同文件,所以應(yīng)當單實例化這些文件。首先,該過程檢查是否已經(jīng)在索引目錄1250中注冊相同文件大小,并且在本例中識別到具有相同文件大小的文件的存在,因為已經(jīng)存在3.2M目錄1342。前述檢查是用于文件去重復(fù)的文件大小比較,其中例如在經(jīng)由opendir系統(tǒng)調(diào)用打開實際大小目錄時或者在經(jīng)由stat系統(tǒng)調(diào)用獲取實際大小目錄信息時,其返回值使系統(tǒng)能夠識別到具有相同文件大小的文件已經(jīng)存在。作為文件大小比較的結(jié)果,由于具有相同文件大小的文件已經(jīng)存在,所以對于在實際大小目錄1342中存儲的文件1352以及文件C 1303執(zhí)行二進制比較。
[0127]由于文件B1302和文件C 1303是相同文件,所以文件1352和文件C 1303的二進制比較結(jié)果對應(yīng)。作為二進制比較結(jié)果,將文件C 1303轉(zhuǎn)換成以文件1352作為克隆母文件的克隆子文件。由此實現(xiàn)文件B 1302和文件C 1303的單實例化。另外,在二進制比較期間執(zhí)行散列值計算。任何函數(shù)可以用作為散列函數(shù),其中除了使用文件的所有數(shù)據(jù)的正常散列計算之外,文件的開始4KB和結(jié)束4KB可以用來使用SHAl (安全散列算法)I散列函數(shù)并且使用分別添加的值的前五位作為散列值來計算散列值。通過二進制比較確定最終文件重復(fù),從而需要少量計算成本的散列值計算方法就足夠了。使用計算的散列值,將文件名1352 從〈nohash.240> 重命名成〈5AF4B.240〉。
[0128]接著,以下將示出關(guān)于文件F1306的過程。與文件A1301相似,由于未在索引目錄中注冊文件大小,所以在作為范圍大小目錄的4M目錄1335中創(chuàng)建3.42M目錄1343,該目錄是實際大小目錄,在該目錄中創(chuàng)建以〈nohash〉.<263 (文件F的索引節(jié)點編號)> 作為文件名的克隆母文件1353,并且將在導出目錄1240中存儲的文件F1306轉(zhuǎn)換成克隆子文件。
[0129]接著,以下示出關(guān)于文件G 1307的處理。由于文件F 1306和文件G 1307是相同文件,所以應(yīng)當單實例化這些文件。首先,單實例程序1124檢查是否已經(jīng)在索引目錄1250中注冊了相同文件大小,并且在本例中識別到存在具有相同文件大小的文件,因為已經(jīng)存在3.42M目錄1343。作為文件大小比較結(jié)果,由于具有相同文件大小的文件已經(jīng)存在,所以針對在實際大小目錄1343中存儲的文件1353以及文件G 1307執(zhí)行二進制比較。
[0130]由于文件F 1306和文件G 1307是相同文件,所以文件1353和文件G 1307的二進制比較結(jié)果對應(yīng)。作為結(jié)果,將文件G 1307轉(zhuǎn)換成以文件1353作為克隆母文件的克隆子文件。由此,實現(xiàn)了文件F 1306和文件G 1307的單實例化。另外,在二進制比較期間執(zhí)行散列值計算。使用計算的散列值,將文件名1352從〈nohash.263〉重命名成〈2B44F.263〉。
[0131]接著,以下示出關(guān)于文件H 1308的過程。文件H 1308具有與文件F 1306和文件G 1307相同的文件大小、但是具有不同數(shù)據(jù)內(nèi)容,從而不應(yīng)單實例化該文件。首先,單實例程序1124檢查是否已經(jīng)在索引目錄1250中注冊相同文件大小,并且由于3.42M目錄1343已經(jīng)存在,所以單實例程序1124識別到具有相同文件大小的文件存在。作為文件大小比較結(jié)果,由于具有相同文件大小的文件已經(jīng)存在,所以在實際大小目錄1343中存儲的文件1353以及文件H1308經(jīng)受二進制比較
[0132]由于文件F 1306和文件H 1308不是相同文件,所以文件1353和文件H 1308的二進制比較結(jié)果不對應(yīng)。這時,如果在后續(xù)處理中發(fā)現(xiàn)文件H 1308的相同文件,則應(yīng)當單實例化該文件,從而在索引目錄1250中注冊文件H 1308。在二進制比較時執(zhí)行散列值計算,并且在3.42M目錄1343中創(chuàng)建具有文件名〈散列值 >.〈文件H的索引節(jié)點編號X3AB8F.431)的克隆母文件1354,并且隨后,將在導出目錄1240中存儲的文件H 1308轉(zhuǎn)換成克隆子文件。
[0133]在二進制比較中,如果文件具有大的文件大小,則不能在存儲器中存儲整個文件,從而正常地將文件劃分成給定的大小并且在存儲器中讀取該文件,其經(jīng)受了數(shù)據(jù)壓縮。這時,在數(shù)據(jù)不一致出現(xiàn)時,可以取消對后續(xù)數(shù)據(jù)的讀取。因此,如果散列值計算采用使用數(shù)據(jù)的前4KB和后4KB的方法,則在數(shù)據(jù)不一致在二進制比較期間出現(xiàn)時,如果從開始依次執(zhí)行二進制比較則可以不讀入數(shù)據(jù)的后4KB。因此,通過采用初始地執(zhí)行第一部分和最后部分的二進制比較的系統(tǒng),變得有可能提高在散列值計算期間的高速緩存命中率。
[0134]接著,以下將描述關(guān)于文件I 1309的過程。由于文件H1308和文件I 1309是相同文件,所以它們應(yīng)當受到單實例化。首先,單實例程序1124檢查是否已經(jīng)在索引目錄1250中注冊了相同文件大小,并且在該情況下,3.42M目錄1343已經(jīng)存在,因此單實例程序1124識別到具有相同文件大小的文件存在。在該示例中,由于具有相同文件大小的文件已經(jīng)存在,所以在實際大小目錄1343中存儲的文件1353和1354以及文件I 1309經(jīng)受二進制比較。作為文件1353和1354的二進制比較結(jié)果,二進制數(shù)不對應(yīng),從而在索引目錄1250中獨立注冊文件,使得在實際大小目錄中存儲多個文件時,保障文件的二進制數(shù)不同。
[0135]由于在索引目錄1250中注冊的文件1353和1354的文件名中包括散列值,所以它們可以經(jīng)受散列值比較而不執(zhí)行散列值計算,但是由于必須計算文件I 1309的散列值,所以先執(zhí)行文件I 1309和文件1353的二進制比較并且與二進制比較一起執(zhí)行散列值計算。由于文件I 1309和文件1353的內(nèi)容數(shù)據(jù)不同,所以二進制比較結(jié)果是二進制不匹配。
[0136]隨后,比較文件I 1309和文件1354,并且這時由于文件I 1309的散列值已知,所以執(zhí)行文件I 1309和文件1354的散列值比較。在散列值匹配時,進一步執(zhí)行二進制比較,而在散列值或者二進制數(shù)不匹配時,如果在實際大小目錄內(nèi)存在另一比較目標,則進一步與另一文件比較文件I 1309的散列值。在文件I 1309的情況下,作為與文件1354的散列值比較結(jié)果,散列值匹配,并且二進制比較結(jié)果是二進制匹配。
[0137]因此,將文件I 1309改變成以文件1354作為克隆母文件的克隆子文件。由此,實現(xiàn)了文件H 1308和文件I 1309的單實例化。如果所有實際文件具有散列值或者二進制不匹配,則在實際大小目錄中創(chuàng)建具有文件名〈散列值 >.< 索引節(jié)點編號 > 的克隆母文件,并且將在導出目錄中存儲的文件轉(zhuǎn)換成克隆子文件。
[0138]接著,以下將示出關(guān)于文件J 1310的處理。由于文件H 1308、文件I 1309和文件J 1310是相同文件,所以它們應(yīng)當受到單實例化。首先,單實例程序1124檢查是否已經(jīng)在索引目錄1250中注冊相同文件大小,并且由于3.42M目錄1343存在,所以單實例程序1124識別到具有相同文件大小的文件存在。作為文件大小比較結(jié)果,由于具有相同文件大小的文件已經(jīng)存在,所以在實際大小目錄1343中存儲的文件1353和1354以及文件J 1310經(jīng)受二進制比較。
[0139]由于文件J 1310和文件1353的數(shù)據(jù)內(nèi)容不同,所以二進制比較結(jié)果是二進制不匹配。接著,比較文件J 1310和文件1354,但是這時由于文件J 1310的散列值已知,所以首先使文件J 1310和文件1354經(jīng)受散列值比較。作為文件J 1310和文件1354的散列值比較結(jié)果,散列值對應(yīng),并且二進制比較結(jié)果是二進制匹配。因此,將文件J 1310轉(zhuǎn)換成以文件1354作為克隆母文件的克隆子文件。因此,文件H 1309、文件I 1309和文件J 1310經(jīng)受了單實例化。
[0140]在以上描述中,執(zhí)行二進制比較用于與在實際大小目錄中的第一文件的比較,并且執(zhí)行散列值比較用于與第二和后續(xù)文件比較,但是也有可能先計算在導出目錄中的文件的散列值并且執(zhí)行在實際大小目錄中的所有文件的散列值比較。如果文件大小為大并且二進制比較時間長而散列計算簡單,則可以通過從第一文件比較起執(zhí)行散列值比較來縮短總處理時間。對照而言,如果文件大小為小并且二進制比較時間短,那么如果在實際大小目錄中的文件數(shù)目例如如2 —樣小,則可以通過僅執(zhí)行二進制比較而不執(zhí)行散列值比較來縮短總處理時間,因此有可能設(shè)計系統(tǒng)以從在實際大小目錄中的第三或者第四文件起執(zhí)行散列值比較。應(yīng)當從在實際大小目錄中的哪個文件起與二進制比較一起執(zhí)行散列值比較以減少總處理時間依賴于比較目標的文件大小,從而對每個范圍大小目錄可以改變被設(shè)置為受到散列值比較的、從實際大小目錄的頂部起的文件數(shù)目。
[0141]根據(jù)本發(fā)明,通過文件大小比較檢測文件重復(fù),并且具有相同文件大小的文件經(jīng)受二進制比較。在文件大小比較中,僅應(yīng)當讀取文件的元數(shù)據(jù),并且無需如在散列值比較中那樣讀取實際數(shù)據(jù),從而處理不具有經(jīng)由讀取處理的任何開銷并且可以增強處理的速度。
[0142]另外,本發(fā)明在具有大的文件大小和如下趨勢的文件中尤為有效,在該趨勢中,在文件大小相同時,二進制比較結(jié)果也相同,但是即使在具有小的文件大小的文件中,仍然可以實現(xiàn)空間減少的效果和處理速度的增加,這二者是單實例化的目的。
[0143]另外,在執(zhí)行二進制比較時執(zhí)行散列值比較,并且通過向索引目錄添加散列值信息,如果存在具有相同文件大小、但是具有不同數(shù)據(jù)內(nèi)容的許多文件,則也可以執(zhí)行散列值比較以最小化無結(jié)果的二進制比較。
[0144](2)第二實施例
[0145]現(xiàn)在將描述本發(fā)明的第二實施例。在以下描述中,將主要描述與第一實施例的不同,并且從描述中省略與第一實施例公共的部分。
[0146]將參照本發(fā)明的第二實施例描述克隆母文件的自動刪除處理。由于在索引目錄1250中存儲克隆母文件,該索引目錄是隱藏目錄,所以未向用戶公開該文件。因此,除非NAS設(shè)備1000刪除非必需克隆母文件,否則這些文件將作為廢文件保留。因此,NAS設(shè)備1000具有用于在克隆母文件變成非必需時自動刪除克隆母文件的功能。例如,經(jīng)由文件系統(tǒng)1125實現(xiàn)該功能??寺∧肝募跓o引用克隆母文件的克隆子文件存在時變成非必需。因此,在刪除克隆子文件時,系統(tǒng)確定是否執(zhí)行克隆母文件的刪除處理。
[0147]在圖14中圖示了如下示例,在該示例中,在用被設(shè)置為克隆母文件的文件13030單實例化文件B 13010和文件C 13020時,用戶刪除文件B 13010和文件C 13020,借此自動刪除文件13030。
[0148]用戶通過使用NFS客戶端13050經(jīng)由NFS服務(wù)器程序13060訪問文件系統(tǒng)13070。向用戶揭示在導出目錄1240中的文件,但是在索引目錄1250中的文件對用戶不可見。從文件B 13010和文件C13020引用作為克隆母文件的文件13030,因此將其引用計數(shù)器設(shè)置成2。首先,用戶刪除文件B 13010。在刪除克隆子文件時,對引用目的地克隆母文件的引用計數(shù)器遞減(-1)。由此,將作為克隆母文件的文件13030的引用計數(shù)器設(shè)置成I。仍然從文件C 13020引用作為克隆母文件的文件13030,因此不會刪除它。
[0149]接著,用戶刪除文件C 13020。再次對作為克隆母文件的文件13030的引用計數(shù)器遞減(-1)并且將其設(shè)置成O。由于不再存在引用作為克隆母文件的文件13030的克隆子文件,所以文件13030變成非必需,因此系統(tǒng)例如經(jīng)由文件系統(tǒng)13070刪除文件13030。
[0150]另外,由于其中存儲了文件13030的實際大小目錄13040變成空并且不再有在索引目錄1250中注冊的具有文件大小3.2MB的文件,所以也刪除實際大小目錄13040。另外,關(guān)于實際大小目錄的刪除,實際大小目錄在文件分類程序1233中比較文件大小時存在,但是在實際大小目錄中的文件數(shù)目為零時,有可能執(zhí)行針對索引目錄的文件注冊過程而不是實際大小目錄的刪除處理。
[0151]圖15示出克隆母文件的刪除確定處理的流程圖。例如,經(jīng)由文件系統(tǒng)13070執(zhí)行本處理。用戶刪除在導出目錄1240中存儲的克隆子文件觸發(fā)文件系統(tǒng)13070執(zhí)行圖15中所示的處理。
[0152]在S14010中,刪除克隆子文件。在S14020中,遞減(_1)刪除的克隆子文件所引用的克隆母文件的引用計數(shù)器。在S14030中,如果克隆母文件的引用計數(shù)器變成零,則該過程繼續(xù)至S14040,而如果不是,則結(jié)束本處理。在S14040中,刪除克隆母文件。
[0153]在S14050中,如果其中存儲了克隆母文件的實際大小目錄13040中存儲的文件數(shù)目變成零,則該過程繼續(xù)至S14060,而如果不是,則結(jié)束本處理。在S14060中,刪除實際大小目錄并且結(jié)束本處理。
[0154]在本處理中,在通過刪除等不再存在克隆子文件時,將刪除非必需的克隆母文件。根據(jù)該處理,將沒有非必需的克隆母文件,這些克隆母文件具有在卷中保留的數(shù)據(jù),因此可以更高效地使用卷的存儲容量。另外,由于也刪除了實際大小目錄,所以將不再在圖10的文件大小比較中執(zhí)行將文件大小與空目錄比較的過程,從而增強處理的速度并且減少錯誤。
[0155](3)第三實施例
[0156]現(xiàn)在將描述本發(fā)明的第三實施例。在以下描述中,主要描述第三實施例與第一實施例之間的不同,并且從描述中省略與第一實施例公共的部分。
[0157]本發(fā)明的第三實施例舉例說明拆分(split)處理。拆分處理是用于使克隆文件恢復(fù)成正常文件的處理,其中根據(jù)本發(fā)明,在用于使單實例化的文件恢復(fù)成正常文件的過程中利用拆分處理。在執(zhí)行拆分處理時,減少引用克隆母文件的克隆子文件的數(shù)目,從而在不再存在引用克隆母文件的克隆子文件時,刪除克隆母文件本身。
[0158]例如,在更新克隆子文件并且在克隆子文件與克隆母文件之間的不同變得太大而克隆母文件的數(shù)據(jù)可能變得無用時執(zhí)行拆分處理以解決該情形或者在將錯誤文件轉(zhuǎn)化成克隆子文件時或者在對克隆子文件的訪問頻率增加、從而必須將子文件重新轉(zhuǎn)換成正常文件時的情況下利用拆分處理。
[0159]圖16圖示如下示例,在該示例中,文件B 15010和文件C 15020在其中對文件B 15010和文件C 15020單實例化、使文件15030被設(shè)置為克隆母文件的狀態(tài)中,文件B15010和文件C 15020經(jīng)受拆分處理。拆分處理例如通過系統(tǒng)管理員指定待拆分的文件并且使用NAS管理器15200向NAS設(shè)備1000發(fā)布拆分命令來執(zhí)行。
[0160]首先,系統(tǒng)管理員拆分文件B 15010。文件B 15010具有的除了更新數(shù)據(jù)之外的區(qū)域的數(shù)據(jù)、也就是引用克隆母文件的區(qū)域的數(shù)據(jù)從克隆母文件被復(fù)制到克隆子文件,并且文件B 15010被從克隆子文件轉(zhuǎn)換成正常文件。然后,遞減(-1)引用目的地克隆母文件的引用計數(shù)器。由此,將作為克隆母文件的文件15030的引用計數(shù)器設(shè)置為I。不刪除作為克隆母文件的文件15030,因為它仍然被文件C 15020引用。
[0161]接著,系統(tǒng)管理員拆分文件C 15020。文件C 15020具有的除了更新的數(shù)據(jù)之外的區(qū)域的數(shù)據(jù)、也就是引用克隆母文件的區(qū)域的數(shù)據(jù)從克隆母文件被復(fù)制到克隆子文件,并且文件C 15020被從克隆子文件轉(zhuǎn)換成正常文件。然后,作為克隆母文件的文件15030的引用計數(shù)器被進一步遞減(-1)并且變成零。
[0162]由于不再存在引用作為克隆母文件的文件15030的克隆子文件,所以文件15030變成非必需,因此系統(tǒng)例如經(jīng)由文件系統(tǒng)15070刪除文件15030。由于其中存儲了文件15030的實際文件目錄15040變成空,并且由于在索引目錄1250中不再注冊具有文件大小
3.2MB的文件,所以也刪除實際文件目錄15040。
[0163]圖17圖示拆分處理的流程圖。例如,經(jīng)由文件系統(tǒng)15070執(zhí)行本處理。系統(tǒng)管理員使用NAS管理器15200向NAS設(shè)備1000發(fā)布拆分命令,并且已經(jīng)接收到該命令的NAS設(shè)備1000通知文件系統(tǒng)15070開始拆分處理,文件系統(tǒng)15070據(jù)此執(zhí)行圖17中所示的處理。
[0164]另外,由于系統(tǒng)管理員難以察覺在克隆子文件與克隆母文件之間的不同已經(jīng)變得顯著,從而文件系統(tǒng)15070可以執(zhí)行確定。可選地,在發(fā)布拆分命令時指定在克隆子文件的更新數(shù)據(jù)已經(jīng)達到整個數(shù)據(jù)的某個百分比時執(zhí)行拆分處理的閾值。如果尚未執(zhí)行閾值的可選指定,則從S16010開始基于S16001的確定執(zhí)行拆分處理。在指定了閾值的選項時,在S16002中,系統(tǒng)檢查克隆子文件具有的更新數(shù)據(jù)容量,并且如果結(jié)果尚未超過閾值,則該過程繼續(xù)至S16010并且執(zhí)行拆分處理。如果尚未超過閾值,則不執(zhí)行拆分處理并且結(jié)束處理。
[0165]另外,拆分命令支持文件指定、目錄指定和文件系統(tǒng)指定。在目錄指定的情況下,對于在相關(guān)目錄中的所有文件執(zhí)行拆分處理,而在文件系統(tǒng)指定的情況下,對于相關(guān)文件系統(tǒng)中的所有文件執(zhí)行拆分處理。
[0166]在S16010中,從克隆母文件向克隆子文件復(fù)制克隆子文件具有的除了更新數(shù)據(jù)之外的部分、也就是引用克隆母文件的區(qū)域的數(shù)據(jù)。因此,克隆子文件將具有所有數(shù)據(jù)。在S16020中,改變和轉(zhuǎn)換克隆子文件的索引節(jié)點信息為正常文件。在S16030中,遞減(_1)被轉(zhuǎn)換成正常文件的克隆子文件曾引用的克隆母文件的引用計數(shù)器。
[0167]在S16040中,如果克隆母文件的引用計數(shù)器已經(jīng)變成零,則該過程繼續(xù)至S16050,而如果不是,則結(jié)束本處理。在S16050中,刪除克隆母文件。在S16060中,如果在其中已經(jīng)存儲克隆母文件的實際大小目錄16040中存儲的文件數(shù)目變成零,則該過程繼續(xù)至S16070,而如果不是,則結(jié)束本處理。在S16070中,刪除實際大小目錄并且結(jié)束本處理。
[0168]作為本實施例的效果,在克隆母文件與克隆子文件之間的不同已經(jīng)變得顯著時拆分文件,從而防止克隆母文件的數(shù)據(jù)變得無用。已經(jīng)舉例說明本發(fā)明的優(yōu)選實施例中的幾個優(yōu)選實施例,但是這些實施例僅為用于描述本發(fā)明的示例并且這些實施例不意味著以任何方式限制本發(fā)明的范圍。各種其它修改也可能實現(xiàn)本發(fā)明。
[0169]最后,應(yīng)當注意在本說明書中描述的過程和技術(shù)不以任何方式與任何具體設(shè)備有關(guān)并且可以經(jīng)由適當部件的組合來實施。另外,可以根據(jù)本說明書使用各種類型的通用設(shè)備。
[0170]此外,本發(fā)明的其它實現(xiàn)方式將基于本發(fā)明的說明書和實施例變得為具有本領(lǐng)域普通知識的技術(shù)人員所清楚。說明書和這里舉例說明的具體示例僅為典型示例,并且可以在具有數(shù)據(jù)管理功能的計算機化的存儲系統(tǒng)中獨立地或者以組合的方式采用與所示實施例有關(guān)的各種修改的示例和/或部件。
[0171]附圖標記列表
[0172]1000 NAS 設(shè)備
[0173]1100 NAS 機頭
[0174]1122通知程序
[0175]1123策略決定程序
[0176]1124單實例程序
[0177]1125文件系統(tǒng)
[0178]1150 NAS 存儲系統(tǒng)
[0179]1160存儲控制器
[0180]1180,1181,1182 NAS 客戶端
[0181]1240導出目錄
[0182]1250索引目錄
【權(quán)利要求】
1.一種文件存儲系統(tǒng),包括: 控制器,用于管理多個文件,每個所述文件具有管理信息和實際數(shù)據(jù); 存儲介質(zhì),構(gòu)成用于存儲所述多個文件的卷; 其中所述卷包括第一目錄和第二目錄; 所述第一目錄存儲第一文件和第二文件; 其中所述控制器: 在所述第二目錄中創(chuàng)建第三文件并且向所述第三文件遷移所述第二文件的所述實際數(shù)據(jù); 建立所述第二文件的所述管理信息,以在所述第二文件從計算機接收到讀取訪問時引用所述第三文件; 將所述第一文件的所述實際數(shù)據(jù)的大小與所述第三文件的所述實際數(shù)據(jù)比較; 如果所述大小的比較的結(jié)果表示所述數(shù)據(jù)的大小相同,則將所述第一文件的所述實際數(shù)據(jù)的二進制數(shù)與所述第三文件的所述實際數(shù)據(jù)比較;以及 如果所述二進制數(shù)的比較的結(jié)果表示所述二進制數(shù)相同,則建立所述第一文件的所述管理信息,以在所述第一文件從所述計算機接收到讀取訪問時引用所述第三文件,并且刪除第一實際數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的文件存儲系統(tǒng),其中在接收到針對所述第一文件的寫入請求時,所述控制器: 在所述第一文件中存儲更新數(shù)據(jù); 在針對不是更新的數(shù)據(jù)的第一文件的讀取請求被接收到時,通過引用所述第三文件來讀取所述第三文件的所述實際數(shù)據(jù);以及 在針對與所述更新數(shù)據(jù)有關(guān)的所述第一文件的讀取請求被接收到時,讀取在所述第一文件中存儲的所述更新數(shù)據(jù)。
3.根據(jù)權(quán)利要求1所述的文件存儲系統(tǒng),其中在向所述第三文件遷移所述第二文件的所述實際數(shù)據(jù)時,所述控制器: 建立所述第三文件的所述管理信息,從而將所述第二文件的實際數(shù)據(jù)存儲區(qū)域指示為存儲所述第三文件的所述實際數(shù)據(jù)的存儲區(qū)域;以及 刪除所述第二文件的指示所述第二文件的所述實際數(shù)據(jù)存儲區(qū)域的所述管理信息。
4.根據(jù)權(quán)利要求1所述的文件存儲系統(tǒng),其中 所述第二目錄是索引目錄; 提供第三目錄,在所述第三目錄中,在所述第二目錄中存儲的文件的大小被設(shè)置為目錄名稱; 在所述第三目錄中創(chuàng)建所述第三文件,在所述第三目錄中,所述第三文件的大小被設(shè)置為所述目錄名稱;以及 為了將所述第三文件的所述實際數(shù)據(jù)的所述大小與所述第一文件的所述實際數(shù)據(jù)比較,所述控制器將所述大小與在所述第三目錄名稱中示出的大小比較,而不是與所述第三文件的所述實際數(shù)據(jù)的大小比較。
5.根據(jù)權(quán)利要求4所述的文件存儲系統(tǒng),其中 當大小比較的結(jié)果表示所述數(shù)據(jù)大小不同時,所述控制器:在所述第二目錄中創(chuàng)建第四目錄,使所述第一文件的所述大小被設(shè)置為所述目錄名稱; 在所述第四目錄中創(chuàng)建第四文件; 向所述第四文件遷移所述第一文件的所述實際數(shù)據(jù);并且 建立所述第一文件的所述管理信息,以在所述第一文件從所述計算機接收到讀取訪問時引用所述第四文件。
6.根據(jù)權(quán)利要求4所述的文件存儲系統(tǒng),其中 當二進制數(shù)比較的結(jié)果表示所述二進制數(shù)不同時,所述控制器: 在所述第三目錄中創(chuàng)建第四文件; 向所述第四文件遷移所述第一文件的所述實際數(shù)據(jù);并且 建立所述第一文件的所述管理信息,以在所述第一文件從所述計算機接收到讀取訪問時引用所述第四文件。
7.根據(jù)權(quán)利要求6所述的文件存儲系統(tǒng),其中在二進制數(shù)比較期間,所述控制器: 計算所述第一文件和所述第三文件的散列值; 改變所述第三文件的名稱以包含所述第三文件的所述散列值;以及 創(chuàng)建所述第四文件以具有包括所述第一文件的所述散列值的名稱。
8.根據(jù)權(quán)利要求4所述的文件存儲系統(tǒng),其中在所述大小的比較的結(jié)果表示所述數(shù)據(jù)的大小相同時,所述控制器: 檢查在所述第三目錄中存儲的文件的數(shù)目是否超過閾值; 如果所述檢查的結(jié)果表示在所述第三目錄中存儲的所述文件的數(shù)目超過所述閾值,則比較在所述第三目錄中存儲的所述文件和所述第一文件的散列值;以及 根據(jù)所述散列值的比較結(jié)果,對具有與所述第一文件相同的散列值的文件執(zhí)行與所述第一文件的二進制數(shù)比較。
9.根據(jù)權(quán)利要求8所述的文件存儲系統(tǒng),其中所述散列值比較通過將所述第一文件的計算的所述散列值與在所述第三目錄中存儲的所述文件名稱中包含的所述散列值比較來執(zhí)行。
10.根據(jù)權(quán)利要求4所述的文件存儲系統(tǒng),其中所述控制器: 對從在所述第一目錄中存儲的所述多個文件引用所述第三文件的引用數(shù)目計數(shù); 在引用所述第三文件的文件的所述引用數(shù)目變成零時,刪除所述第三文件;以及 在所述第三文件刪除后,當所述第三目錄中不再存在文件時,刪除所述第三目錄。
11.根據(jù)權(quán)利要求2所述的文件存儲系統(tǒng),其中所述控制器: 觀測在所述第一文件中存儲的所述更新數(shù)據(jù)相對于在所述第三文件中存儲的所述實際數(shù)據(jù)的比率;以及 在觀測的所述比率超過閾值時,從所述第三文件向所述第一文件復(fù)制除了在所述第三文件中存儲的所述實際數(shù)據(jù)的所述更新數(shù)據(jù)之外的部分,并且從所述第一文件的所述管理信息刪除用于引用所述第三文件的消息。
12.根據(jù)權(quán)利要求1所述的文件存儲系統(tǒng),其中在所述第一目錄中存儲的所述文件的所述文件大小的比較按照從具有最大數(shù)據(jù)的所述文件起的順序來執(zhí)行。
13.根據(jù)權(quán)利要求1所述的文件存儲系統(tǒng),其中所述第二目錄是隱藏的目錄。
14.一種文件存儲系統(tǒng)的單實例化方法,所述文件存儲系統(tǒng)包括: 控制器,用于管理多個文件,每個所述文件具有管理信息和實際數(shù)據(jù); 存儲介質(zhì),構(gòu)成用于存儲所述多個文件的卷; 其中所述卷包括第一目錄和第二目錄; 所述第一目錄存儲第一文件和第二文件; 其中所述控制器: 在所述第二目錄中創(chuàng)建第三文件并且向所述第三文件遷移所述第二文件的所述實際數(shù)據(jù); 建立所述第二文件的所述管理信息,以在所述第二文件從計算機接收到讀取訪問時引用所述第三文件; 將所述第一文件的所述實際數(shù)據(jù)的大小與所述第三文件的所述實際數(shù)據(jù)比較; 如果所述大小的比較的結(jié)果表示所述數(shù)據(jù)的大小相同,則將所述第一文件的所述實際數(shù)據(jù)的二進制數(shù)與所述第三文件的所述實際數(shù)據(jù)比較;以及 如果所述二進制數(shù)的比較的結(jié)果表示所述二進制數(shù)相同,則建立所述第一文件的所述管理信息,以在所述第一 文件從所述計算機接收到讀取訪問時引用所述第三文件,并且刪除第一實際數(shù)據(jù)。
【文檔編號】G06F17/30GK104081391SQ201280068182
【公開日】2014年10月1日 申請日期:2012年1月25日 優(yōu)先權(quán)日:2012年1月25日
【發(fā)明者】榎阪智則, 中村隆喜, 龜井仁志, 揚妻匡邦 申請人:株式會社日立制作所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
读书| 河西区| 甘肃省| 沅江市| 政和县| 张家港市| 福贡县| 女性| 阳春市| 揭西县| 宁乡县| 景谷| 湘乡市| 黑山县| 阿克陶县| 南江县| 辽阳县| 临夏县| 樟树市| 蒲江县| 观塘区| 阿荣旗| 丰宁| 桃园市| 富裕县| 双辽市| 临洮县| 柞水县| 库伦旗| 沂南县| 新昌县| 孟连| 青浦区| 高台县| 班玛县| 云龙县| 高尔夫| 衡阳市| 安泽县| 新疆| 望谟县|