文件映射壓縮的制作方法
【專利摘要】用于壓縮文件映射的方法、系統(tǒng)和裝置,包括在計(jì)算機(jī)存儲(chǔ)介質(zhì)上被編碼的計(jì)算機(jī)程序。在一個(gè)方面,一種方法包括訪問(wèn)由文件系統(tǒng)維護(hù)的文件,該文件系統(tǒng)管理對(duì)塊設(shè)備的訪問(wèn)。該文件包括與相應(yīng)的邏輯塊編號(hào)和相應(yīng)的塊索引關(guān)聯(lián)的多個(gè)活躍塊。該方法也包括:向文件指派文件索引,分析文件以確定最大塊索引和最小塊索引,并且標(biāo)識(shí)在多個(gè)活躍塊中的塊游程。每個(gè)塊游程包括相應(yīng)的開始?jí)K。對(duì)于塊游程中的每個(gè)塊游程,該方法包括標(biāo)識(shí)相應(yīng)長(zhǎng)度。對(duì)于每個(gè)開始?jí)K,該方法包括生成用于每個(gè)開始?jí)K的文件映射條目。該方法也包括在文件映射中存儲(chǔ)文件映射條目。
【專利說(shuō)明】文件映射壓縮
[0001]相關(guān)申請(qǐng)的交叉引用
[0002]本申請(qǐng)要求于2013年3月14日提交的第13/826,634號(hào)美國(guó)專利申請(qǐng)的優(yōu)先權(quán),該美國(guó)專利申請(qǐng)又是于2012年3月28日提交的第61/616,745號(hào)美國(guó)臨時(shí)專利申請(qǐng)的非臨時(shí)申請(qǐng)并且要求該美國(guó)臨時(shí)專利申請(qǐng)的優(yōu)先權(quán),上述專利申請(qǐng)的全部?jī)?nèi)容通過(guò)引用結(jié)合于此。
【技術(shù)領(lǐng)域】
[0003]本說(shuō)明書涉及壓縮文件映射(file map),并且具體地涉及壓縮用于虛擬機(jī)的文件映射。
【背景技術(shù)】
[0004]云計(jì)算是基于網(wǎng)絡(luò)的計(jì)算,在該基于網(wǎng)絡(luò)的計(jì)算中,在數(shù)據(jù)中心或者“服務(wù)器群”中容納的大型服務(wù)器匯集通常提供如遠(yuǎn)程終端用戶需要的計(jì)算資源和數(shù)據(jù)存儲(chǔ)。一些云計(jì)算服務(wù)允許終端用戶在云中運(yùn)行用戶提供的服務(wù)器軟件應(yīng)用(例如電子商務(wù)服務(wù)器應(yīng)用、web服務(wù)器或者文件服務(wù)器)。一些其它云計(jì)算服務(wù)向終端用戶提供對(duì)軟件應(yīng)用(比如字處理器)和其它常用應(yīng)用的訪問(wèn),這些終端用戶通過(guò)web瀏覽器或者其它客戶端側(cè)軟件利用這些應(yīng)用。用戶的電子數(shù)據(jù)文件通常存儲(chǔ)于服務(wù)器群中而不是用戶的個(gè)人計(jì)算設(shè)備上。
【發(fā)明內(nèi)容】
[0005]一般而言,可以在包括以下動(dòng)作的方法中體現(xiàn)在本說(shuō)明書中描述的主題內(nèi)容的一個(gè)創(chuàng)新方面,這些動(dòng)作是訪問(wèn)由文件系統(tǒng)維護(hù)的文件,該文件系統(tǒng)管理對(duì)塊設(shè)備的訪問(wèn)。文件包括多個(gè)活躍塊。多個(gè)活躍塊中的每個(gè)活躍塊與相應(yīng)邏輯塊編號(hào)和相應(yīng)塊索引關(guān)聯(lián),該塊索引代表塊在輸出文件中相對(duì)于其它塊的位置。該方法也包括向文件指派文件索引并且分析文件以確定在文件中包括的最大塊索引和最小塊索引。該方法也包括標(biāo)識(shí)在多個(gè)活躍塊中的塊游程。每個(gè)塊游程包括相應(yīng)開始?jí)K。一些塊游程包括在輸出文件中相互相鄰的多個(gè)塊。與相鄰塊關(guān)聯(lián)的邏輯塊編號(hào)增加一。對(duì)于塊游程中的每個(gè)塊游程,該方法包括標(biāo)識(shí)塊游程的相應(yīng)長(zhǎng)度。對(duì)于每個(gè)開始?jí)K,該方法包括生成用于每個(gè)開始?jí)K的文件映射條目。生成文件映射條目包括以下動(dòng)作:壓縮文件索引;基于最大塊索引和最小塊索引壓縮與開始?jí)K關(guān)聯(lián)的塊索引;并且壓縮與開始?jí)K關(guān)聯(lián)的塊游程的長(zhǎng)度。該方法也包括在文件映射中存儲(chǔ)文件映射條目。這一方面的其它實(shí)施例包括各自被配置為執(zhí)行方法的動(dòng)作的對(duì)應(yīng)計(jì)算機(jī)系統(tǒng)、裝置和在一個(gè)或者多個(gè)計(jì)算機(jī)存儲(chǔ)設(shè)備上記錄的計(jì)算機(jī)程序。一個(gè)或者多個(gè)計(jì)算機(jī)的系統(tǒng)可以被配置為借助讓軟件、固件、硬件或者它們的組合安裝于該系統(tǒng)上來(lái)執(zhí)行特定操作或者動(dòng)作,該軟件、固件、硬件或者它們的組合在操作中使該系統(tǒng)執(zhí)行這些動(dòng)作。一個(gè)或者多個(gè)計(jì)算機(jī)程序可以被配置為借助包括指令來(lái)執(zhí)行特定操作或者動(dòng)作,這些指令在由數(shù)據(jù)處理裝置執(zhí)行時(shí)使該裝置執(zhí)行這些動(dòng)作。
[0006]前述和其它實(shí)施例可以各自可選地單獨(dú)或者在組合中包括以下特征中的一個(gè)或者多個(gè)特征。該方法可以包括基于與文件映射條目關(guān)聯(lián)的邏輯塊編號(hào)按順序存儲(chǔ)文件映射條目。文件映射條目中的至少一個(gè)文件映射條目是具有格式〈壓縮的文件索引,壓縮的塊索引,壓縮的塊游程的長(zhǎng)度〉的三元組。壓縮文件索引和塊索引可以包括使用可變長(zhǎng)度壓縮來(lái)壓縮文件索引和塊索引。壓縮塊游程的長(zhǎng)度可以包括使用算術(shù)編碼、霍夫曼編碼或者通用編碼。文件映射可以包括與由文件系統(tǒng)維護(hù)的至少第二文件關(guān)聯(lián)的文件映射條目,并且壓縮文件索引可以包括基于由文件映射引用的文件數(shù)目壓縮文件索引。第二文件可以被指派與向文件指派的文件索引不同的第二文件索引。文件索引可以唯一地標(biāo)識(shí)文件,并且第二文件索引唯一地標(biāo)識(shí)第二文件。該方法可以包括在與塊設(shè)備關(guān)聯(lián)的初始化過(guò)程期間加載文件映射;并且對(duì)于在文件映射中包括的每第N個(gè)文件映射條目:在數(shù)據(jù)結(jié)構(gòu)中存儲(chǔ)指向第N個(gè)文件映射條目的指針,其中N是大于I的整數(shù),并且其中指向第N個(gè)文件映射條目的指針存儲(chǔ)于基于與除以N的第N個(gè)文件映射條目關(guān)聯(lián)的邏輯塊編號(hào)的位置。該方法可以包括接收對(duì)于訪問(wèn)特定塊的請(qǐng)求,其中特定塊與特定塊編號(hào)關(guān)聯(lián);并且標(biāo)識(shí)與特定塊對(duì)應(yīng)的文件映射條目而不對(duì)多于N個(gè)的文件映射條目進(jìn)行解碼。
[0007]可以實(shí)施在本文中描述的主題內(nèi)容的具體實(shí)施例以便實(shí)現(xiàn)以下優(yōu)點(diǎn)中的一個(gè)或者多個(gè)優(yōu)點(diǎn)。在一些實(shí)施方式中,壓縮的文件映射可以提供或者貢獻(xiàn)提高的文件訪問(wèn)速率,因?yàn)槲募芾砥饔捎跍p少的大小而可以在存儲(chǔ)器中存儲(chǔ)多個(gè)文件映射。此外,由于可以在存儲(chǔ)器中存儲(chǔ)多個(gè)文件映射,所以更不頻繁地在存儲(chǔ)器中交換輸入和輸出文件映射,這也可以提高文件訪問(wèn)速率和系統(tǒng)的性能。另一優(yōu)點(diǎn)可以是文件管理器可以訪問(wèn)數(shù)據(jù)而不先對(duì)整個(gè)文件映射進(jìn)行解碼。這可以增加文件訪問(wèn)性能,因?yàn)樵谠L問(wèn)數(shù)據(jù)之前不先對(duì)整個(gè)文件映射進(jìn)行解碼。
[0008]在附圖和以下描述中闡述在本說(shuō)明書中描述的主題內(nèi)容的一個(gè)或者多個(gè)實(shí)施例的細(xì)節(jié)。主題內(nèi)容的其它特征、方面和優(yōu)點(diǎn)將從該描述、附圖和權(quán)利要求中變得清楚。
【專利附圖】
【附圖說(shuō)明】
[0009]圖1示出包括多個(gè)虛擬機(jī)實(shí)例的分布式系統(tǒng)的示例。
[0010]圖2圖示對(duì)于與虛擬塊設(shè)備通信的示例請(qǐng)求。
[0011]圖3圖示示例數(shù)據(jù)文件和文件映射。
[0012]圖4是用于壓縮文件映射的示例過(guò)程的流程圖。
[0013]圖5是用于訪問(wèn)虛擬塊的示例過(guò)程的流程圖。
[0014]在各種附圖中的相似標(biāo)號(hào)和標(biāo)示指示相似要素。
【具體實(shí)施方式】
[0015]圖1是示例虛擬機(jī)系統(tǒng)100的示意圖示。系統(tǒng)100包括一個(gè)或者多個(gè)主機(jī)機(jī)器(如比如主機(jī)機(jī)器102)。一般而言,主機(jī)機(jī)器是一個(gè)或者多個(gè)數(shù)據(jù)處理裝置(比如架裝服務(wù)器或者其它計(jì)算設(shè)備)。數(shù)據(jù)處理裝置可以在不同的物理位置并且可以具有不同的能力和計(jì)算機(jī)架構(gòu)。主機(jī)機(jī)器可以通過(guò)內(nèi)部數(shù)據(jù)通信網(wǎng)絡(luò)116相互通信。內(nèi)部網(wǎng)絡(luò)116可以例如包括一個(gè)或者多個(gè)有線(例如以太網(wǎng))或者無(wú)線(例如W1-FI)網(wǎng)絡(luò)。在一些實(shí)施方式中,內(nèi)部網(wǎng)絡(luò)116是內(nèi)部網(wǎng)。主機(jī)機(jī)器也可以通過(guò)一個(gè)或者多個(gè)網(wǎng)關(guān)與在外部網(wǎng)絡(luò)(比如因特網(wǎng))上的設(shè)備通信,該一個(gè)或者多個(gè)網(wǎng)關(guān)是負(fù)責(zé)在內(nèi)部網(wǎng)絡(luò)116與外部網(wǎng)絡(luò)之間路由數(shù)據(jù)通信流量的數(shù)據(jù)處理裝置。其它類型的外部網(wǎng)絡(luò)是可能的。
[0016]主機(jī)機(jī)器102執(zhí)行如下主機(jī)操作系統(tǒng)106或者其它軟件,該主機(jī)操作系統(tǒng)或者其它軟件虛擬化下層主機(jī)機(jī)器硬件并且管理一個(gè)或者多個(gè)虛擬機(jī)的并行執(zhí)行(例如虛擬機(jī)監(jiān)視器或者管理程序)。例如,主機(jī)操作系統(tǒng)106管理虛擬機(jī)(VM) 110。雖然在圖1中未示出,但是主機(jī)機(jī)器102可以執(zhí)行第二虛擬機(jī)。VM(比如VM 110)可以包括下層主機(jī)機(jī)器硬件的模擬版本或者不同計(jì)算機(jī)架構(gòu)。硬件的模擬版本稱為虛擬硬件(例如虛擬硬件110a)。由虛擬硬件執(zhí)行的軟件稱為客戶軟件。在一些實(shí)施方式中,客戶軟件不能確定它是否正在被虛擬硬件或者被物理主機(jī)機(jī)器執(zhí)行。如果在VM中執(zhí)行的客戶軟件或者VM本身出故障或者放棄,則在主機(jī)機(jī)器上執(zhí)行的其它VM不會(huì)被影響。主機(jī)機(jī)器的(多個(gè))微處理器可以包括用于通過(guò)允許客戶軟件指令直接在主機(jī)機(jī)器的微處理器上被執(zhí)行而無(wú)需代碼重新編寫、重新編譯或者指令仿真來(lái)使虛擬硬件能夠高效地執(zhí)行軟件應(yīng)用的處理器級(jí)機(jī)制。
[0017]VM的客戶軟件可以包括客戶操作系統(tǒng)(例如客戶操作系統(tǒng)IlOb),該客戶操作系統(tǒng)是控制在VM內(nèi)執(zhí)行相應(yīng)客戶軟件應(yīng)用(例如客戶應(yīng)用IlOc)并且向那些應(yīng)用提供服務(wù)的軟件。例如,客戶操作系統(tǒng)可以是UNIX操作系統(tǒng)的變體。其它操作系統(tǒng)是可能的。每個(gè)VM可以執(zhí)行相同客戶操作系統(tǒng)或者不同客戶操作系統(tǒng)。在更多實(shí)施方式中,VM無(wú)需客戶操作系統(tǒng)以便執(zhí)行客戶軟件應(yīng)用??蛻舨僮飨到y(tǒng)對(duì)資源(比如網(wǎng)絡(luò)和虛擬盤存儲(chǔ))的訪問(wèn)由下層主機(jī)操作系統(tǒng)控制。
[0018]VM可以被分配網(wǎng)絡(luò)地址,它的客戶軟件可以通過(guò)該網(wǎng)絡(luò)地址與通過(guò)內(nèi)部網(wǎng)絡(luò)116或者因特網(wǎng)可達(dá)的其它進(jìn)程通信。例如,在VM 110上執(zhí)行的客戶軟件可以與在第二 VM上執(zhí)行的客戶軟件通信。在一些實(shí)施方式中,每個(gè)VM被分配一個(gè)或者多個(gè)唯一網(wǎng)際協(xié)議(IP)版本4或者版本6地址和一個(gè)或者多個(gè)用戶數(shù)據(jù)報(bào)協(xié)議(UDP)端口號(hào)。其它地址方案是可能的。
[0019]每個(gè)VM (例如VM 110)從下層主機(jī)操作系統(tǒng)的虛擬存儲(chǔ)器被分配虛擬存儲(chǔ)器頁(yè)面集合,并且從一個(gè)或者多個(gè)虛擬塊設(shè)備被分配虛擬盤塊用于由在VM上執(zhí)行的客戶軟件使用。例如,主機(jī)操作系統(tǒng)106向VM 110分配虛擬存儲(chǔ)器頁(yè)面和虛擬盤塊。在一些實(shí)施方式中,給定的VM不能訪問(wèn)向其它VM指派的虛擬存儲(chǔ)器頁(yè)面。例如,VM 110不能訪問(wèn)已經(jīng)向不同VM指派的存儲(chǔ)器頁(yè)面??梢钥缭絍M重啟來(lái)持續(xù)虛擬塊設(shè)備。
[0020]虛擬塊設(shè)備可以是虛擬化的存儲(chǔ)設(shè)備(例如虛擬化的硬盤驅(qū)動(dòng)器或者虛擬化的RAID陣列)。每個(gè)虛擬塊設(shè)備被組織成一個(gè)或者多個(gè)虛擬塊。每個(gè)虛擬塊是作為單元而被訪問(wèn)的預(yù)定義數(shù)量的數(shù)據(jù)。虛擬塊的大小可以根據(jù)系統(tǒng)約束和要求而變化。虛擬塊的一個(gè)示例大小可以是4千字節(jié)。每個(gè)虛擬塊與相應(yīng)虛擬塊編號(hào)關(guān)聯(lián)??梢越M織每個(gè)虛擬塊設(shè)備,從而虛擬塊編號(hào)是連續(xù)的。例如,虛擬塊設(shè)備的第一虛擬塊可以是跟隨有虛擬塊編號(hào)I等等的虛擬塊編號(hào)O。
[0021 ] 每個(gè)虛擬塊設(shè)備是物理塊設(shè)備118a_l 18d的匯集或者物理塊設(shè)備118a_l 18d的部分(例如物理塊設(shè)備118a-118d的一個(gè)或者多個(gè)物理塊)的匯集。物理塊設(shè)備118a-118n例如耦合到主機(jī)機(jī)器或者通過(guò)內(nèi)部網(wǎng)絡(luò)116可用。物理塊設(shè)備IISa-118η可以是任何類型的存儲(chǔ)設(shè)備。例如,物理塊設(shè)備118a-118n可以是硬盤驅(qū)動(dòng)器、網(wǎng)絡(luò)可訪問(wèn)存儲(chǔ)設(shè)備、RAID陣列等。與虛擬塊設(shè)備相似,每個(gè)物理塊設(shè)備118a-118n可以被組織成一個(gè)或者多個(gè)物理塊。每個(gè)物理塊可以是作為單位而被訪問(wèn)的預(yù)定義數(shù)量的數(shù)據(jù)。物理塊的大小可以根據(jù)系統(tǒng)約束和要求而變化。物理塊的一個(gè)示例大小可以是4千字節(jié)。在一些實(shí)施方式中,物理塊的大小等于虛擬塊的大小。每個(gè)物理塊與物理塊編號(hào)(例如邏輯塊編號(hào))關(guān)聯(lián),該物理塊編號(hào)指示物理塊相對(duì)于物理塊位于其上的存儲(chǔ)設(shè)備而言的相對(duì)位置。在物理塊設(shè)備118上的物理塊可以通過(guò)物理塊編號(hào)來(lái)組織,從而物理塊編號(hào)是連續(xù)和遞增的。例如,物理塊設(shè)備的第一物理塊可以是物理塊編號(hào)O,下一物理塊可以是物理塊編號(hào)1,等等。
[0022]對(duì)物理塊設(shè)備118a_118n的訪問(wèn)由文件系統(tǒng)管理。例如,文件系統(tǒng)可以管理對(duì)于從物理塊設(shè)備118a-118n讀取數(shù)據(jù)的請(qǐng)求,并且可以管理對(duì)于向物理塊設(shè)備118a_118n寫入數(shù)據(jù)的請(qǐng)求。文件系統(tǒng)可以是可以管理物理塊設(shè)備118a-118n的任何類型的文件系統(tǒng)。例如,文件系統(tǒng)可以是Google File System、分布式文件系統(tǒng)、NTFS文件系統(tǒng)等。
[0023]通過(guò)示例并且參照虛擬機(jī)110,在客戶應(yīng)用I1c或者客戶操作系統(tǒng)I1b例如嘗試對(duì)虛擬塊設(shè)備執(zhí)行輸入/輸出操作、啟動(dòng)網(wǎng)絡(luò)通信或者執(zhí)行權(quán)限操作時(shí),虛擬硬件IlOa被中斷,從而主機(jī)操作系統(tǒng)106可以代表虛擬機(jī)110執(zhí)行動(dòng)作。主機(jī)操作系統(tǒng)106可以用如下進(jìn)程執(zhí)行這些動(dòng)作,該進(jìn)程在內(nèi)核進(jìn)程空間106b、用戶進(jìn)程空間106a或者二者中執(zhí)行。備選地,主機(jī)操作系統(tǒng)106可以通過(guò)向在分離數(shù)據(jù)處理裝置上執(zhí)行的進(jìn)程發(fā)送請(qǐng)求來(lái)執(zhí)行動(dòng)作。
[0024]內(nèi)核進(jìn)程空間106b例如是為主機(jī)操作系統(tǒng)的內(nèi)核106d保留的虛擬存儲(chǔ)器,該內(nèi)核可以包括內(nèi)核擴(kuò)展和設(shè)備驅(qū)動(dòng)。內(nèi)核進(jìn)程空間具有提高的權(quán)限(有時(shí)稱為“管理程序模式”);也就是說(shuō),內(nèi)核106d可以執(zhí)行某些權(quán)限操作,這些權(quán)限操作脫離對(duì)在用戶進(jìn)程空間106a中運(yùn)行的進(jìn)程的限制。權(quán)限操作的示例包括對(duì)不同地址空間的訪問(wèn)、對(duì)在主機(jī)機(jī)器中的特殊功能處理器單元(比如存儲(chǔ)器管理單元)的訪問(wèn)等等。用戶進(jìn)程空間106a是虛擬存儲(chǔ)器的為用戶模式進(jìn)程保留的單獨(dú)部分。用戶模式進(jìn)程不能直接執(zhí)行權(quán)限操作。
[0025]例如,在客戶應(yīng)用IlOc或者客戶操作系統(tǒng)IlOb嘗試對(duì)虛擬塊設(shè)備執(zhí)行輸入/輸出操作(例如嘗試發(fā)起向虛擬塊設(shè)備的寫入或者從虛擬塊設(shè)備的讀取)時(shí),虛擬硬件IlOa被中斷,從而主機(jī)操作系統(tǒng)106可以使用塊設(shè)備管理器120來(lái)代表虛擬機(jī)110執(zhí)行動(dòng)作。塊設(shè)備管理器120可以被主機(jī)機(jī)器102執(zhí)行作為內(nèi)核進(jìn)程空間106b或者用戶進(jìn)程空間106a的一部分。備選地,塊設(shè)備管理器120可以在單獨(dú)的計(jì)算設(shè)備上執(zhí)行。塊設(shè)備管理器120可以是管理物理塊設(shè)備118a-118n的文件系統(tǒng)的一部分或者與該文件系統(tǒng)通信。
[0026]塊設(shè)備管理器120從虛擬機(jī)110接收對(duì)于與向虛擬機(jī)110分配的虛擬塊設(shè)備通信的請(qǐng)求。例如,請(qǐng)求可以包括對(duì)于從向虛擬機(jī)110分配的一個(gè)或者多個(gè)虛擬數(shù)據(jù)塊讀取或者向該一個(gè)或者多個(gè)虛擬數(shù)據(jù)塊寫入的請(qǐng)求。塊設(shè)備管理器120可以具有對(duì)可以包括數(shù)據(jù)(例如文件映射條目)的文件映射130的訪問(wèn),該數(shù)據(jù)將虛擬數(shù)據(jù)塊映射到在由文件系統(tǒng)維護(hù)的文件中的位置。在文件中的位置可以被文件系統(tǒng)用來(lái)從物理塊設(shè)備118a-118n之一讀取與虛擬數(shù)據(jù)塊對(duì)應(yīng)的物理數(shù)據(jù)塊。
[0027]圖2圖示處理對(duì)于讀取虛擬數(shù)據(jù)塊的示例請(qǐng)求。在圖2的示例請(qǐng)求中,虛擬機(jī)110向塊設(shè)備管理器120提供對(duì)于從特定虛擬塊讀取數(shù)據(jù)的請(qǐng)求204。例如,該請(qǐng)求可以通過(guò)向特定虛擬塊指派的唯一虛擬塊編號(hào)標(biāo)識(shí)特定虛擬塊。
[0028]在管理對(duì)物理塊設(shè)備118a_118n的訪問(wèn)的文件系統(tǒng)207中包括的或者可以與文件系統(tǒng)207通信的塊設(shè)備管理器120可以接收讀取請(qǐng)求204并且訪問(wèn)文件映射130以標(biāo)識(shí)與請(qǐng)求的虛擬塊對(duì)應(yīng)的文件映射條目。文件映射130可以包括用于向虛擬機(jī)302分配的每個(gè)虛擬塊的文件映射條目。文件映射條目可以基于虛擬塊編號(hào)來(lái)組織,從而虛擬塊編號(hào)是連續(xù)和遞增的。例如,在文件映射130中包括的第一文件映射條目可以與虛擬塊編號(hào)O關(guān)聯(lián),在文件映射130中包括的第二文件映射條目可以與虛擬塊編號(hào)I關(guān)聯(lián),等等。
[0029]每個(gè)文件映射條目可以包括如下數(shù)據(jù),該數(shù)據(jù)向文件系統(tǒng)207指示與虛擬塊對(duì)應(yīng)的物理塊的位置。例如,文件映射130可以包括文件映射條目,該文件映射條目將虛擬塊映射到由文件系統(tǒng)207維護(hù)的特定數(shù)據(jù)文件210以及在數(shù)據(jù)文件210中的位置(例如位置211b)。文件映射條目可以被文件系統(tǒng)207用來(lái)標(biāo)識(shí)包括與虛擬塊對(duì)應(yīng)的特定物理塊的物理塊設(shè)備118以及特定物理塊在物理塊設(shè)備118內(nèi)的位置。數(shù)據(jù)文件210可以是一組數(shù)據(jù)文件之一,該組數(shù)據(jù)文件被文件系統(tǒng)207維護(hù)并且被文件系統(tǒng)207用來(lái)標(biāo)識(shí)包括與虛擬數(shù)據(jù)塊對(duì)應(yīng)的物理數(shù)據(jù)塊的物理塊設(shè)備。在一些實(shí)施方式中,每個(gè)物理塊設(shè)備118與單個(gè)數(shù)據(jù)文件210關(guān)聯(lián)。在一些實(shí)施方式中,每個(gè)物理塊設(shè)備可以與多個(gè)數(shù)據(jù)文件210關(guān)聯(lián)。
[0030]在圖2的示例中,文件系統(tǒng)207可以接收對(duì)于讀取與虛擬塊編號(hào)對(duì)應(yīng)的數(shù)據(jù)塊的請(qǐng)求?;谠撜?qǐng)求,塊設(shè)備管理器120可以訪問(wèn)文件映射130,以標(biāo)識(shí)與請(qǐng)求的虛擬塊編號(hào)對(duì)應(yīng)的文件映射條目。文件映射條目可以標(biāo)識(shí)存儲(chǔ)與請(qǐng)求的虛擬塊對(duì)應(yīng)的物理數(shù)據(jù)塊的一個(gè)或者多個(gè)物理塊設(shè)備118a-118n以及在與請(qǐng)求的虛擬塊對(duì)應(yīng)的每個(gè)物理塊設(shè)備內(nèi)的位置(例如物理塊編號(hào))。
[0031]圖3示出包括示例數(shù)據(jù)文件和壓縮的文件映射的說(shuō)明性示例300。數(shù)據(jù)文件302和320各自包括標(biāo)識(shí)符(例如“數(shù)據(jù)文件A”和“數(shù)據(jù)文件B”)。每個(gè)標(biāo)識(shí)符可以是任何數(shù)目字節(jié)長(zhǎng)并且可以是唯一文字?jǐn)?shù)字串。一般而言,標(biāo)識(shí)符是文字?jǐn)?shù)字字符串并且需要多個(gè)字節(jié)以存儲(chǔ)標(biāo)識(shí)符。例如,示例標(biāo)識(shí)符是將需要多個(gè)字節(jié)的“/storage_locat1ns/cluster_locat1n/project/disk/segment003/3402439203940923_233453989333_l0099975423.log”。每個(gè)數(shù)據(jù)文件302和320與相應(yīng)物理塊設(shè)備關(guān)聯(lián)。在一些實(shí)施方式中,數(shù)據(jù)文件302和320與相同物理塊設(shè)備關(guān)聯(lián)但是代表相同物理塊設(shè)備的不同非重疊部分(例如分段)。
[0032]每個(gè)數(shù)據(jù)文件302和320包括一個(gè)或者多個(gè)條目302。每個(gè)數(shù)據(jù)文件302和320可以與數(shù)組相似布置并且包括一個(gè)或者多個(gè)條目。每個(gè)數(shù)據(jù)文件條目包括塊索引304和塊編號(hào)306。塊索引304標(biāo)識(shí)條目在數(shù)據(jù)文件內(nèi)的位置。例如,塊索引304可以與指向數(shù)組中的索引相似。塊編號(hào)306標(biāo)識(shí)與存儲(chǔ)與虛擬塊編號(hào)關(guān)聯(lián)的數(shù)據(jù)的物理塊設(shè)備關(guān)聯(lián)的物理塊編號(hào)。
[0033]每個(gè)塊編號(hào)306也與指示塊編號(hào)306活躍還是不活躍的狀態(tài)指示符306關(guān)聯(lián)。如果塊編號(hào)306與活躍狀態(tài)指示符308關(guān)聯(lián),則塊編號(hào)306與數(shù)據(jù)的當(dāng)前版本關(guān)聯(lián)并且反映當(dāng)前數(shù)據(jù)值,而如果塊編號(hào)306與不活躍狀態(tài)指示符308關(guān)聯(lián),則該塊編號(hào)與數(shù)據(jù)的更舊版本關(guān)聯(lián)并且不反映當(dāng)前數(shù)據(jù)值。在一些實(shí)施方式中,狀態(tài)指示符308是與塊編號(hào)306關(guān)聯(lián)的元數(shù)據(jù)。例如,可以在與塊編號(hào)306關(guān)聯(lián)的數(shù)據(jù)頭中包括狀態(tài)指示符308。
[0034]數(shù)據(jù)文件302和320可以由示例未壓縮文件映射325或者示例壓縮文件映射330來(lái)代表。未壓縮文件映射325包括文件映射條目327。每個(gè)文件映射條目327a-g對(duì)應(yīng)于虛擬塊編號(hào)并且包括數(shù)據(jù)文件標(biāo)識(shí)符和塊索引。文件映射條目327h對(duì)應(yīng)于向虛擬機(jī)分配的但是不包括數(shù)據(jù)的虛擬塊(例如數(shù)據(jù)未被寫入到的塊)。在一些實(shí)施方式中,未壓縮文件映射325可以被部分地壓縮。例如,可以對(duì)文件映射條目327e-327g進(jìn)行游程長(zhǎng)度壓縮。
[0035]壓縮的文件映射330包括文件映射條目332a_332f。每個(gè)文件映射條目332a_e對(duì)應(yīng)于虛擬塊。例如,文件映射條目332a對(duì)應(yīng)于虛擬塊編號(hào)O,并且文件映射條目332b對(duì)應(yīng)于虛擬塊編號(hào)I。
[0036]每個(gè)文件映射條目332可以包括壓縮的文件索引、壓縮的塊索引和壓縮的游程長(zhǎng)度??梢栽跀?shù)據(jù)結(jié)構(gòu)(如比如三元組)中組織文件映射條目。三元組可以具有形式〈壓縮的文件索引,壓縮的塊索引,壓縮的游程長(zhǎng)度 >。可以使用其它數(shù)據(jù)結(jié)構(gòu)。
[0037]壓縮的文件索引可以是唯一地標(biāo)識(shí)與請(qǐng)求的虛擬塊對(duì)應(yīng)的數(shù)據(jù)文件的索引。文件索引可以基于數(shù)據(jù)文件標(biāo)識(shí)符的數(shù)目并且可以使用可變長(zhǎng)度編碼算法(如比如均勻編碼算法)來(lái)壓縮。例如,均勻編碼算法可以壓縮文件索引并且使用Ceil(l0g2(數(shù)據(jù)文件數(shù)目+1))位長(zhǎng)的代碼來(lái)代表文件索引。如圖3中所示,代表文件索引的代碼等于分別與數(shù)據(jù)文件A和數(shù)據(jù)文件B對(duì)應(yīng)的01和10。在一些實(shí)施方式中,使用壓縮技術(shù)而不是可變長(zhǎng)度編碼算法來(lái)壓縮文件索引。此外,還可以使用自適應(yīng)或者靜態(tài)壓縮技術(shù)。可以存儲(chǔ)這樣的表,該表包括代碼和對(duì)應(yīng)的數(shù)據(jù)文件標(biāo)識(shí)符。該表可以被塊設(shè)備管理器用來(lái)翻譯代碼。
[0038]壓縮的塊索引可以標(biāo)識(shí)在數(shù)據(jù)文件內(nèi)與特定虛擬塊對(duì)應(yīng)的位置。例如,數(shù)據(jù)文件可以與數(shù)組相似布置,并且塊索引可以用作為用于訪問(wèn)在數(shù)據(jù)文件中的特定位置/條目的索引。與文件索引相似,塊索引可以使用可變長(zhǎng)度編碼算法(例如均勻編碼)來(lái)壓縮。用來(lái)壓縮塊索引的可變長(zhǎng)度編碼算法可以與用來(lái)對(duì)文件索引進(jìn)行編碼的可變長(zhǎng)度編碼算法相同或者可以不同。在一些實(shí)施方式中,用來(lái)壓縮文件索引的壓縮算法與用來(lái)壓縮塊索引的壓縮算法不同。
[0039]壓縮的塊索引可以使用Ceil(l0g2(MaX[i]-Min[i]+l)位長(zhǎng)的代碼來(lái)代表塊索引,其中Max[i]代表與在數(shù)據(jù)文件中包括的活躍塊關(guān)聯(lián)的最大塊索引,并且Min[i]代表與在數(shù)據(jù)文件中包括的活躍塊關(guān)聯(lián)的最小塊索引。如圖3中所見,與數(shù)據(jù)文件302關(guān)聯(lián)的壓縮的塊索引使用分別與塊索引0、5和2對(duì)應(yīng)的三位代碼000、101和010來(lái)代表,并且與數(shù)據(jù)文件B關(guān)聯(lián)的壓縮的塊索引使用分別與塊索引I和2對(duì)應(yīng)的I位代碼O和I來(lái)代表。在一些實(shí)施方式中,塊索引使用除了可變長(zhǎng)度編碼算法之外的壓縮技術(shù)來(lái)壓縮。此外,還可以使用自適應(yīng)或者靜態(tài)壓縮技術(shù)。代碼和對(duì)應(yīng)的塊索引值可以被存儲(chǔ)于這樣的表中,該表存儲(chǔ)代碼和對(duì)應(yīng)的數(shù)據(jù)文件標(biāo)識(shí)符。
[0040]壓縮的游程長(zhǎng)度可以代表基于物理塊編號(hào)按順序存儲(chǔ)的活躍塊的數(shù)目(“塊游程”)。參照數(shù)據(jù)文件302,物理塊4、物理塊5和物理塊6是活躍塊并且相互相鄰存儲(chǔ)于數(shù)據(jù)文件302中。作為結(jié)果,與在物理塊4開始的塊游程關(guān)聯(lián)的游程長(zhǎng)度等于三。每個(gè)塊游程包括開始?jí)K(即游程的第一個(gè)塊)。在以上示例中,開始?jí)K是物理塊4。在一些實(shí)例中,塊游程可以具有等于一個(gè)塊的游程長(zhǎng)度。例如,在物理塊O開始的塊游程等于1,并且開始?jí)K等于物理塊O。
[0041]游程長(zhǎng)度也可以使用各種壓縮技術(shù)來(lái)壓縮。例如,游程長(zhǎng)度可以使用可變長(zhǎng)度編碼算法(如例如算術(shù)編碼、霍夫曼編碼或者通用代碼(例如一元代碼、Golomb代碼、Rice代碼等))來(lái)壓縮。雖然圖3圖示壓縮的游程長(zhǎng)度為數(shù)字,但是每個(gè)文件映射條目可以包括用于代表壓縮的游程長(zhǎng)度的與編碼算法關(guān)聯(lián)的代碼。例如,如果游程長(zhǎng)度使用霍夫曼編碼來(lái)壓縮,則壓縮的游程長(zhǎng)度由霍夫曼代碼代表。編碼算法可以是自適應(yīng)的或者靜態(tài)的。塊索引和游程長(zhǎng)度可以用于游程長(zhǎng)度壓縮。用來(lái)代表游程長(zhǎng)度的代碼以及與代碼對(duì)應(yīng)的值可以存儲(chǔ)于表中。
[0042]在一些實(shí)施方式中,文件映射330包括不與虛擬塊編號(hào)對(duì)應(yīng)的文件映射條目332f。取而代之,文件映射條目332f可以被文件系統(tǒng)用來(lái)代表不活躍的塊或者不存儲(chǔ)數(shù)據(jù)的塊,例如數(shù)據(jù)尚未被寫入到這些塊。
[0043]圖4是用于壓縮文件映射的示例過(guò)程400的流程圖。過(guò)程400通過(guò)分析未壓縮的文件映射、構(gòu)建由文件映射引用的數(shù)據(jù)文件的列表并且收集用來(lái)對(duì)文件映射條目進(jìn)行編碼的統(tǒng)計(jì)量來(lái)開始(在402)。例如,塊設(shè)備管理器120可以遍歷未壓縮的文件映射(例如未壓縮的文件映射325)并且構(gòu)建與物理塊設(shè)備118 (或者物理塊設(shè)備118的部分)對(duì)應(yīng)的、將在文件映射中代表的數(shù)據(jù)文件(例如數(shù)據(jù)文件302和320)的列表,物理塊設(shè)備118 (或者物理塊設(shè)備118的這些部分)對(duì)應(yīng)于向特定VM(例如VM 110)分配的虛擬塊設(shè)備。
[0044]如以上描述的那樣,為每個(gè)數(shù)據(jù)文件收集用來(lái)對(duì)文件映射條目進(jìn)行編碼的統(tǒng)計(jì)量(在402)。例如,在塊設(shè)備管理器120構(gòu)建數(shù)據(jù)文件列表時(shí),塊設(shè)備管理器120可以確定用于每個(gè)數(shù)據(jù)文件的統(tǒng)計(jì)量。統(tǒng)計(jì)量可以包括信息(如比如每個(gè)數(shù)據(jù)文件在文件映射中被引用的頻率,例如多少文件映射條目引用該數(shù)據(jù)文件)??梢曰趬K游程調(diào)整數(shù)據(jù)文件引用的頻率。例如,參照未壓縮的文件映射325,塊設(shè)備管理器120將把文件映射條目327e-327g視為對(duì)數(shù)據(jù)文件A的單個(gè)引用。此外,統(tǒng)計(jì)量還可以包括與由每個(gè)數(shù)據(jù)文件引用的活躍塊對(duì)應(yīng)的最大塊索引和最小塊索引。
[0045]參照?qǐng)D3的示例未壓縮文件映射325,塊設(shè)備管理器120可以分析未壓縮的文件映射325并且可以確定兩個(gè)數(shù)據(jù)文件(例如數(shù)據(jù)文件302和數(shù)據(jù)文件320)被引用。此外,塊設(shè)備管理器120還可以確定數(shù)據(jù)文件302被引用三次(塊4-6的游程視為一次引用)并且數(shù)據(jù)文件320被引用兩次。此外,塊設(shè)備管理器120可以確定由數(shù)據(jù)文件302引用的最大塊索引和最小塊索引分別等于5和0,并且由數(shù)據(jù)文件320引用的最大塊索引和最小塊索引分別等于2和I (數(shù)據(jù)位置B的塊索引O是不活躍塊)。
[0046]串行化數(shù)據(jù)文件的條目(在406)。例如,塊設(shè)備管理器可以基于與在數(shù)據(jù)文件中的條目關(guān)聯(lián)的塊編號(hào)生成臨時(shí)文件映射。參照?qǐng)D2中的示例,塊設(shè)備管理器120可以生成臨時(shí)文件映射,該臨時(shí)文件映射基于與數(shù)據(jù)文件的條目關(guān)聯(lián)的塊編號(hào)來(lái)串行化這些條目。臨時(shí)映射可以與以下臨時(shí)映射相似:
[0047]塊編號(hào)O:數(shù)據(jù)文件 A,塊索引=0,max[i]/min[i] = [5,0]
[0048]塊編號(hào)1:數(shù)據(jù)文件 B,塊索引=2, max[i]/min[i] = [2, I]
[0049]塊編號(hào)2:數(shù)據(jù)文件 A,塊索引=5, max[i]/min[i] = [5, O]
[0050]塊編號(hào)3:數(shù)據(jù)文件 B,塊索引=l,max[i]/min[i] = [2,I]
[0051]塊編號(hào)4:數(shù)據(jù)文件 A,塊索引=2,max[i]/min[i] = [5,0]
[0052]塊編號(hào)5:數(shù)據(jù)文件 A,塊索引=3,max[i]/min[i] = [5,0]
[0053]塊編號(hào)6:數(shù)據(jù)文件 A,塊索引=4, max[i]/min[i] = [5, O]
[0054]從臨時(shí)文件映射提取三元組并且生成壓縮的文件映射條目(在408)。例如,塊設(shè)備管理器120可以分析在臨時(shí)文件映射中的每個(gè)條目并且生成三元組。三元組可以包括壓縮的文件索引(例如代表文件索引的代碼)、壓縮的塊索引(例如代表塊索引的代碼)和壓縮的游程長(zhǎng)度(例如代表游程長(zhǎng)度的代碼)。
[0055]文件索引可以被均勻編碼以高效地代表數(shù)據(jù)文件。例如,塊設(shè)備管理器120可以基于數(shù)據(jù)文件總數(shù)向每個(gè)數(shù)據(jù)文件指派代表文件索引的唯一代碼。文件索引被均勻編碼以高效地代表數(shù)據(jù)文件標(biāo)識(shí)符。例如,可以以ceil(l0g2(數(shù)據(jù)文件數(shù)目+1))位來(lái)代表文件索引。參照?qǐng)D3的示例數(shù)據(jù)文件302和320,塊設(shè)備管理器120可以使用兩位代碼(即ceil (1g2(2+1))位長(zhǎng)的代碼)來(lái)代表數(shù)據(jù)文件標(biāo)識(shí)符。塊設(shè)備管理器120可以向數(shù)據(jù)文件302指派兩位代碼(例如01)并且向數(shù)據(jù)文件320指派不同的兩位代碼(例如10)。由于數(shù)據(jù)文件標(biāo)識(shí)符通常是長(zhǎng)文字-數(shù)字串,所以被均勻編碼的文件索引可以使用更少存儲(chǔ)器來(lái)存儲(chǔ)。
[0056]塊索引可以被均勻編碼以高效地代表塊索引。例如,塊設(shè)備管理器120可以使用由數(shù)據(jù)文件引用的最大塊索引和最小塊索引,以壓縮與數(shù)據(jù)文件關(guān)聯(lián)的塊索引。與數(shù)據(jù)文件關(guān)聯(lián)的塊索引可以使用ceil (1g2 (最大塊索引-最小塊索引+1))位長(zhǎng)的代碼來(lái)代表。參照示例數(shù)據(jù)文件302和320,用于數(shù)據(jù)文件A 302的塊索引可以使用三位代碼(例如000、
010、100等)來(lái)代表,而用于數(shù)據(jù)文件B 320的關(guān)聯(lián)塊索引可以使用一位代碼(例如O和I)來(lái)代表。
[0057]也可以對(duì)臨時(shí)文件映射的條目進(jìn)行游程長(zhǎng)度編碼。例如,塊設(shè)備管理器120可以分析臨時(shí)文件映射的每個(gè)條目并且確定條目是否是塊游程的開始(“開始?jí)K”)。例如,塊設(shè)備管理器120可以分析臨時(shí)文件映射的條目并且確定塊編號(hào)O對(duì)應(yīng)于單個(gè)塊的游程(例如開始?jí)K等于塊零并且游程長(zhǎng)度等于I)而塊編號(hào)四對(duì)應(yīng)于三個(gè)塊的游程(開始?jí)K等于塊四并且游程長(zhǎng)度等于三)。
[0058]每個(gè)游程長(zhǎng)度可以使用可變編碼算法(如比如霍夫曼代碼、算術(shù)代碼和通用代碼)來(lái)壓縮。三元組可以包括代表游程長(zhǎng)度的代碼(例如霍夫曼代碼或者通用代碼)。
[0059]可以周期性地執(zhí)行過(guò)程400。例如,可以在預(yù)定數(shù)量的時(shí)間已經(jīng)流逝之后執(zhí)行過(guò)程400。預(yù)定數(shù)量的時(shí)間可以基于系統(tǒng)要求或者處理器/系統(tǒng)能力。此外,可以在寫入預(yù)定數(shù)目的塊之后執(zhí)行過(guò)程400。例如,可以在預(yù)定數(shù)目的寫入請(qǐng)求之后執(zhí)行過(guò)程400。此外,可以在關(guān)閉或者保存文件之后執(zhí)行過(guò)程400。例如,可以在VM(例如VM 110)的用戶關(guān)閉或者保存在虛擬塊設(shè)備上存儲(chǔ)的文件之后執(zhí)行過(guò)程400。
[0060]圖5是用于訪問(wèn)虛擬塊的示例過(guò)程500的流程圖。過(guò)程500通過(guò)向存儲(chǔ)器中加載壓縮的文件映射來(lái)開始(在502)。例如,在初始化虛擬機(jī)110、虛擬塊設(shè)備或者物理塊設(shè)備118期間,壓縮的文件映射可以被加載到存儲(chǔ)器(如比如隨機(jī)存取存儲(chǔ)器)中。
[0061]對(duì)壓縮的文件映射進(jìn)行解碼(在504)。例如,塊設(shè)備管理器120可以基于壓縮的文件映射的編碼對(duì)壓縮的文件映射進(jìn)行解碼。塊設(shè)備管理器120可以遍歷文件映射并且標(biāo)識(shí)文件索引列表。參照?qǐng)D2的示例,塊設(shè)備管理器120可以遍歷文件映射230并且確定有兩個(gè)數(shù)據(jù)文件,因?yàn)橛袃蓚€(gè)不同文件索引(例如兩個(gè)兩位代碼)。此外,塊設(shè)備管理器120還可以確定與每個(gè)數(shù)據(jù)文件關(guān)聯(lián)的最大塊索引和最小塊索引。
[0062]塊索引然后可以對(duì)每個(gè)壓縮的文件映射條目進(jìn)行解碼。例如,塊設(shè)備管理器120可以從壓縮的文件映射條目對(duì)代表文件索引的第一條目進(jìn)行解碼。在一些實(shí)施方式中,塊設(shè)備管理器120通過(guò)從壓縮的文件映射條目提取第一 ceil (1g2 (數(shù)據(jù)文件數(shù)目+1))位來(lái)對(duì)文件索引進(jìn)行解碼。參照?qǐng)D3的示例壓縮文件映射230,塊設(shè)備管理器120可以確定文件映射條目的、與代表文件索引的代碼對(duì)應(yīng)的前兩位。塊索引然后可以從壓縮的文件映射條目對(duì)代表壓縮的塊索引的下一條目進(jìn)行解碼。在一些實(shí)施方式中,塊設(shè)備管理器120可以通過(guò)從壓縮的文件映射條目提取下一 ceil (1g2 (最大塊索引-最小塊索引+1))位來(lái)對(duì)塊索引進(jìn)行解碼。參照?qǐng)D3的示例壓縮文件映射230,塊設(shè)備管理器120可以提取與代表塊索引的代碼對(duì)應(yīng)的接下來(lái)的三位。塊設(shè)備管理器120可以訪問(wèn)表,以解釋代表文件索引和塊索引的代碼。
[0063]在文件映射被解碼時(shí),每第N個(gè)文件映射條目的位置存儲(chǔ)于數(shù)據(jù)結(jié)構(gòu)中(在506)。例如,在塊設(shè)備管理器120對(duì)文件映射條目進(jìn)行解碼時(shí),塊設(shè)備管理器120可以在解壓的文件映射中存儲(chǔ)指向每第N個(gè)條目的指針。指針可以存儲(chǔ)于數(shù)組中。參照?qǐng)D3的示例文件映射230并且假設(shè)N = 2,塊設(shè)備管理器120可以在數(shù)組中存儲(chǔ)指向壓縮的文件映射條目0、2和4的指針?;谖募成錀l目的順序存儲(chǔ)指針。例如,在數(shù)組中的第一條目(索引O)將存儲(chǔ)指向文件映射條目O的指針,并且在數(shù)組中的第二條目(索引I)將存儲(chǔ)指向文件映射條目2的指針。N的值可以是任何數(shù)并且可以基于系統(tǒng)要求和處理/系統(tǒng)能力來(lái)選擇。
[0064]每個(gè)數(shù)組可以是元組。例如,每個(gè)數(shù)組可以存儲(chǔ)元組,該元組包括指向文件映射條目的指針和開始?jí)K。在以上示例中,在數(shù)組中的第一條目將存儲(chǔ)指向文件映射條目O的指針和開始?jí)KO。通過(guò)存儲(chǔ)元組,塊設(shè)備管理器120可以存儲(chǔ)在塊游程中包括的文件映射條目的位置。例如,在數(shù)組中的與在文件映射條目〈文件索引=1,塊索引=4,游程長(zhǎng)度=3>中代表的塊游程中包括的虛擬塊7對(duì)應(yīng)的第四條目將存儲(chǔ)指向文件映射條目4的指針和游程的開始?jí)K(例如塊編號(hào)4)。
[0065]以下示出第二示例未壓縮文件映射。
[0066]文件映射條目
[0067]O:<文件索引1,塊索引0,游程長(zhǎng)度=1>
[0068]I:<文件索引1,塊索引3,游程長(zhǎng)度=6>
[0069]2:<文件索引2,塊索引2,游程長(zhǎng)度=3>
[0070]如果假設(shè)N等于2,則數(shù)組可以與以下數(shù)組相似:
[0071]O:<指向文件映射條目O的指針,開始?jí)K=0>
[0072]I:<指向文件映射條目I的指針,開始?jí)K=1>
[0073]2:<指向文件映射條目I的指針,開始?jí)K=1>
[0074]3:<指向文件映射條目I的指針,開始?jí)K=1>
[0075]4:<指向文件映射條目2的指針,開始?jí)K=2>
[0076]如以上所見,塊編號(hào)2、4和6對(duì)應(yīng)于指向文件映射條目I的數(shù)組索引1、2和3,因?yàn)樵陂_始于塊I的游程中包括塊編號(hào)2、4和6。
[0077]在生成指針數(shù)組(在506)之后,可以從存儲(chǔ)器去除解碼的文件映射。在VM之后,已經(jīng)初始化虛擬塊設(shè)備或者物理塊設(shè)備,可以接收對(duì)于訪問(wèn)特定塊編號(hào)的請(qǐng)求(在508)。例如,在VM 110上執(zhí)行的應(yīng)用可以請(qǐng)求訪問(wèn)在特定虛擬塊(例如虛擬塊I)中存儲(chǔ)的數(shù)據(jù)。塊設(shè)備管理器120可以接收讀取請(qǐng)求。
[0078]塊設(shè)備管理器可以確定與最接近請(qǐng)求的虛擬塊并且小于請(qǐng)求的虛擬塊的第N個(gè)文件映射條目對(duì)應(yīng)的數(shù)組索引(在510)。例如,如果請(qǐng)求的虛擬塊等于3,則塊設(shè)備管理器120可以確定最接近請(qǐng)求的虛擬塊并且小于請(qǐng)求的虛擬塊的第N個(gè)文件映射條目是在數(shù)組(例如數(shù)組索引I)中的第二條目中存儲(chǔ)的虛擬塊2。
[0079]可以基于指針數(shù)組確定與請(qǐng)求的虛擬塊對(duì)應(yīng)的文件映射條目(在512)。例如,塊設(shè)備管理器120可以訪問(wèn)與最接近請(qǐng)求的虛擬塊的第N個(gè)文件映射條目對(duì)應(yīng)的數(shù)組并且使用在數(shù)組條目中存儲(chǔ)的指針來(lái)訪問(wèn)第N個(gè)文件映射條目。塊設(shè)備管理器120然后可以對(duì)其余文件映射條目進(jìn)行解碼直至解壓正確的文件映射條目。例如,塊設(shè)備管理器120可以訪問(wèn)第二數(shù)組條目(索引=D并且使用在數(shù)組條目中存儲(chǔ)的指針來(lái)訪問(wèn)在文件映射條目2的文件映射。塊設(shè)備管理器120然后可以對(duì)其余文件映射條目進(jìn)行解碼直至它到達(dá)用于請(qǐng)求的塊3的文件映射條目。這可以允許塊設(shè)備管理器120對(duì)N個(gè)或者更少的文件映射條目進(jìn)行解碼以用于向文件映射中的任何訪問(wèn),并且避免對(duì)于每個(gè)對(duì)訪問(wèn)文件映射的請(qǐng)求對(duì)整個(gè)文件映射進(jìn)行解碼。這也可以允許向文件映射中的隨機(jī)訪問(wèn)而不對(duì)整個(gè)文件映射進(jìn)行解碼。
[0080] 與請(qǐng)求的虛擬塊對(duì)應(yīng)的文件映射條目被解碼并且返回到文件系統(tǒng),文件系統(tǒng)然后可以使用該信息來(lái)訪問(wèn)在與請(qǐng)求的虛擬塊編號(hào)對(duì)應(yīng)的物理塊編號(hào)存儲(chǔ)的數(shù)據(jù)。
[0081 ] 可以在數(shù)字電子電路中,或者在包括在本說(shuō)明書中公開的結(jié)構(gòu)及其結(jié)構(gòu)等效物的計(jì)算機(jī)軟件、固件或者硬件中,或者在它們中的一項(xiàng)或者多項(xiàng)的組合中實(shí)施在本說(shuō)明書中描述的主題內(nèi)容和操作的實(shí)施例。可以實(shí)施在本說(shuō)明書中描述的主題內(nèi)容的實(shí)施例為一個(gè)或者多個(gè)計(jì)算機(jī)程序,即,在計(jì)算機(jī)存儲(chǔ)介質(zhì)上被編碼的用于由數(shù)據(jù)處理裝置執(zhí)行或者控制數(shù)據(jù)處理裝置的操作的一個(gè)或者多個(gè)計(jì)算機(jī)程序指令模塊。備選地或者附加地,可以在機(jī)器生成的電、光或者電磁信號(hào)上對(duì)程序指令進(jìn)行編碼,該電、光或者電磁信號(hào)被生成為對(duì)信息進(jìn)行編碼以用于向適當(dāng)接收器裝置發(fā)送來(lái)用于由數(shù)據(jù)處理裝置執(zhí)行。計(jì)算機(jī)存儲(chǔ)介質(zhì)可以是計(jì)算機(jī)可讀存儲(chǔ)設(shè)備、計(jì)算機(jī)可讀存儲(chǔ)基質(zhì)、隨機(jī)或者串行存取存儲(chǔ)器陣列或者設(shè)備、或者它們中的一項(xiàng)或者多項(xiàng)的組合,或者被包括在計(jì)算機(jī)可讀存儲(chǔ)設(shè)備、計(jì)算機(jī)可讀存儲(chǔ)基質(zhì)、隨機(jī)或者串行存取存儲(chǔ)器陣列或者設(shè)備、或者它們中的一項(xiàng)或者多項(xiàng)的組合中。另夕卜,盡管計(jì)算機(jī)存儲(chǔ)介質(zhì)不是傳播的信號(hào),但是計(jì)算機(jī)存儲(chǔ)介質(zhì)可以是在人為地生成的傳播的信號(hào)中被編碼的計(jì)算機(jī)程序指令的源或者目的地。計(jì)算機(jī)存儲(chǔ)介質(zhì)也可以是一個(gè)或者多個(gè)單獨(dú)的物理部件或者介質(zhì)(例如多個(gè)CD、盤或者其它存儲(chǔ)設(shè)備),或者被包括在一個(gè)或者多個(gè)單獨(dú)的物理部件或者介質(zhì)中。
[0082]可以實(shí)施在本說(shuō)明書中描述的操作為由數(shù)據(jù)處理裝置對(duì)在一個(gè)或者多個(gè)計(jì)算機(jī)可讀存儲(chǔ)設(shè)備上存儲(chǔ)的或者從其它來(lái)源接收的數(shù)據(jù)執(zhí)行的操作。
[0083]術(shù)語(yǔ)“數(shù)據(jù)處理裝置”涵蓋所有種類的用于處理數(shù)據(jù)的裝置、設(shè)備和機(jī)器,舉例而言,包括可編程處理器、計(jì)算機(jī)、片上系統(tǒng)或者前述各項(xiàng)的多個(gè)或者組合。該裝置可以包括專用邏輯電路(例如FPGA(現(xiàn)場(chǎng)可編程門陣列)或者ASIC(專用集成電路))。該裝置除了硬件之外也可以包括為討論的計(jì)算機(jī)程序創(chuàng)建執(zhí)行環(huán)境的代碼,例如構(gòu)成處理器固件、協(xié)議棧、數(shù)據(jù)庫(kù)管理系統(tǒng)、操作系統(tǒng)、跨平臺(tái)運(yùn)行時(shí)間環(huán)境、虛擬機(jī)或者它們中的一項(xiàng)或者多項(xiàng)的組合的代碼。該裝置和執(zhí)行環(huán)境可以實(shí)現(xiàn)各種不同的計(jì)算模型基礎(chǔ)設(shè)施,比如web服務(wù)、分布式計(jì)算和網(wǎng)格計(jì)算基礎(chǔ)設(shè)施。
[0084]可以用包括編譯或者解譯語(yǔ)言、說(shuō)明或者過(guò)程語(yǔ)言在內(nèi)的任何形式的編程語(yǔ)言來(lái)編寫計(jì)算機(jī)程序(也稱為程序、軟件、軟件應(yīng)用、腳本或者代碼),并且可以用任何形式來(lái)部署它,包括被部署為單獨(dú)程序或者被部署為適合于在計(jì)算環(huán)境中使用的模塊、部件、子例程、對(duì)象或者其它單元。計(jì)算機(jī)程序可以但是無(wú)需對(duì)應(yīng)于在文件系統(tǒng)中的文件。程序可以存儲(chǔ)于保持其它程序或者數(shù)據(jù)(例如存儲(chǔ)于標(biāo)記語(yǔ)言文檔中的一個(gè)或者多個(gè)腳本)的文件的一部分中,專用于討論的程序的單個(gè)文件中,或者多個(gè)協(xié)調(diào)的文件(例如存儲(chǔ)一個(gè)或者多個(gè)模塊、子程序或者代碼的各部分的文件)中。計(jì)算機(jī)程序可以被部署為在一個(gè)計(jì)算機(jī)上或者在位于一個(gè)地點(diǎn)或者跨多個(gè)地點(diǎn)分布并且通過(guò)通信網(wǎng)絡(luò)互連的多個(gè)計(jì)算機(jī)上被執(zhí)行。
[0085]在本說(shuō)明書中描述的過(guò)程和邏輯流程可以被一個(gè)或者多個(gè)可編程處理器執(zhí)行,該一個(gè)或者多個(gè)可編程處理器執(zhí)行一個(gè)或者多個(gè)計(jì)算機(jī)程序,以通過(guò)對(duì)輸入數(shù)據(jù)進(jìn)行操作并且生成輸出來(lái)執(zhí)行動(dòng)作。過(guò)程和邏輯流程也可以由專用邏輯電路(例如FPGA(現(xiàn)場(chǎng)可編程門陣列)或者ASIC(專用集成電路))來(lái)執(zhí)行,并且也可以實(shí)施裝置為該專用邏輯電路。
[0086]舉例而言,適合用于執(zhí)行計(jì)算機(jī)程序的處理器包括通用微處理器和專用微處理器兩者以及任何種類的數(shù)字計(jì)算機(jī)的任何一個(gè)或者多個(gè)處理器。一般而言,處理器可以從只讀存儲(chǔ)器或者隨機(jī)存取存儲(chǔ)器或者二者接收指令和數(shù)據(jù)。計(jì)算機(jī)的基本單元是用于根據(jù)指令執(zhí)行動(dòng)作的處理器以及用于存儲(chǔ)指令和數(shù)據(jù)的一個(gè)或者多個(gè)存儲(chǔ)器設(shè)備。一般而言,計(jì)算機(jī)也可以包括用于存儲(chǔ)數(shù)據(jù)的一個(gè)或者多個(gè)海量存儲(chǔ)設(shè)備(例如磁盤、光磁盤或者光盤),或者被操作地耦合為從該一個(gè)或者多個(gè)海量存儲(chǔ)設(shè)備接收數(shù)據(jù)或者向該一個(gè)或者多個(gè)海量存儲(chǔ)設(shè)備傳送數(shù)據(jù)或者二者。然而,計(jì)算機(jī)無(wú)需具有這樣的設(shè)備。另外,可以在另一設(shè)備(聊舉數(shù)例,例如電視機(jī)(該電視機(jī)具有在該電視機(jī)中嵌入或者耦合到該電視機(jī)的一個(gè)或者多個(gè)處理器)、移動(dòng)電話、個(gè)人數(shù)字助理(PDA)、移動(dòng)音頻或者視頻播放器、游戲控制臺(tái)、全球定位系統(tǒng)(GPS)接收器或者便攜存儲(chǔ)設(shè)備(例如通用串行總線(USB)閃存驅(qū)動(dòng)))中嵌入計(jì)算機(jī)。適合用于存儲(chǔ)計(jì)算機(jī)程序指令和數(shù)據(jù)的設(shè)備包括所有形式的非易失性存儲(chǔ)器、介質(zhì)和存儲(chǔ)器設(shè)備(舉例而言,包括半導(dǎo)體存儲(chǔ)器設(shè)備(例如EPROM、EEPROM和閃存設(shè)備);磁盤(例如內(nèi)部硬盤或者可拆卸盤);光磁盤;以及⑶-ROM和DVD-ROM盤。處理器和存儲(chǔ)器可以由專用邏輯電路補(bǔ)充或者并入專用邏輯電路中。
[0087]為了提供與用戶的交互,在本說(shuō)明書中描述的主題內(nèi)容的實(shí)施例可以被實(shí)施于計(jì)算機(jī)上,該計(jì)算機(jī)具有用于向用戶顯示信息的顯示設(shè)備(例如CRT(陰極射線管)或者LCD(液晶顯示器)監(jiān)視器)以及用戶可以通過(guò)其向計(jì)算機(jī)提供輸入的鍵盤和指點(diǎn)設(shè)備(例如鼠標(biāo)或者軌跡球)。其它種類的設(shè)備也可以用來(lái)提供與用戶的交互;例如,向用戶提供的反饋可以是任何形式的感官反饋(例如視覺反饋、聽覺反饋或者觸覺反饋);并且可以用包括聲音、話音或者觸覺輸入在內(nèi)的任何形式接收來(lái)自用戶的輸入。此外,計(jì)算機(jī)可以通過(guò)向用戶使用的設(shè)備發(fā)送文檔和從該設(shè)備接收文檔;例如,通過(guò)響應(yīng)于從在用戶的客戶端設(shè)備上的web瀏覽器接收的請(qǐng)求向該web瀏覽器發(fā)送網(wǎng)頁(yè)來(lái)與用戶交互。
[0088]可以在計(jì)算系統(tǒng)中實(shí)施在本說(shuō)明書中描述的主題內(nèi)容的實(shí)施例,該計(jì)算系統(tǒng)包括后端部件(例如作為數(shù)據(jù)服務(wù)器),或者包括中間件部件(例如應(yīng)用服務(wù)器),或者包括前端部件(例如具有圖形用戶界面或者Web瀏覽器(用戶可以通過(guò)該圖形用戶界面或者Web瀏覽器與在本說(shuō)明書中描述的主題內(nèi)容的實(shí)施方式交互)的客戶端計(jì)算機(jī)),或者一個(gè)或者多個(gè)這樣的后端部件、中間件部件或者前端部件的任何組合??梢酝ㄟ^(guò)任何數(shù)字?jǐn)?shù)據(jù)通信形式或者介質(zhì)(例如通信網(wǎng)絡(luò))互連系統(tǒng)的部件。通信網(wǎng)絡(luò)的示例包括局域網(wǎng)(“LAN”)和廣域網(wǎng)(“WAN”)、互連網(wǎng)絡(luò)(例如因特網(wǎng))和對(duì)等網(wǎng)絡(luò)(例如自組織對(duì)等網(wǎng)絡(luò))。
[0089]計(jì)算系統(tǒng)可以包括客戶端和服務(wù)器??蛻舳撕头?wù)器一般相互遠(yuǎn)離并且通常通過(guò)通信網(wǎng)絡(luò)交互。借助在相應(yīng)計(jì)算機(jī)上運(yùn)行并且相互具有客戶端-服務(wù)器關(guān)系的計(jì)算機(jī)程序,產(chǎn)生客戶端和服務(wù)器的關(guān)系。在一些實(shí)施例中,服務(wù)器向客戶端設(shè)備發(fā)送數(shù)據(jù)(例如HTML頁(yè)面)(例如用于向與客戶端設(shè)備交互的用戶顯示數(shù)據(jù)以及從該用戶接收用戶輸入的目的)??梢栽诜?wù)器從客戶端設(shè)備接收在客戶端設(shè)備生成的數(shù)據(jù)(例如用戶交互的結(jié)果)。
[0090]盡管本說(shuō)明書包含許多具體實(shí)施細(xì)節(jié),但是不應(yīng)解釋這些為限制任何發(fā)明的或者可以要求保護(hù)的內(nèi)容的范圍,而實(shí)際上描述特定發(fā)明的特定實(shí)施例所特有的特征。也可以在單個(gè)實(shí)施例中組合實(shí)施在本說(shuō)明書中在單獨(dú)的實(shí)施例的情境中描述的某些特征。反言之,也可以在多個(gè)實(shí)施例中單獨(dú)地或者在任何適當(dāng)子組合中實(shí)施在單個(gè)實(shí)施例的情境中描述的各種特征。另外,雖然以上可以描述特征為在某些組合中動(dòng)作并且甚至初始地這樣要求保護(hù),但是來(lái)自要求保護(hù)的組合的一個(gè)或者多個(gè)特征可以在一些情況下從該組合中被刪除,并且要求保護(hù)的組合可以涉及子組合或者子組合的變化。
[0091]相似地,盡管在附圖中以特定順序描繪操作,但是這不應(yīng)被理解為要求以所示特定順序或者以依次順序執(zhí)行這樣的操作或者執(zhí)行所有所示操作以實(shí)現(xiàn)希望的結(jié)果。在某些境況中,多任務(wù)和并行處理可以是有利的。另外,在以上描述的實(shí)施例中的各種系統(tǒng)部件的分離不應(yīng)被理解為在所有實(shí)施例中要求這樣的分離,并且應(yīng)當(dāng)理解描述的程序部件和系統(tǒng)一般可以被一起集成于單個(gè)軟件產(chǎn)品中或者封裝成多個(gè)軟件產(chǎn)品。
[0092]因此,已經(jīng)描述了主題內(nèi)容的特定實(shí)施例。其它實(shí)施例在所附權(quán)利要求的范圍內(nèi)。在一些情況下,在權(quán)利要求中記載的動(dòng)作可以按不同順序來(lái)執(zhí)行而仍然實(shí)現(xiàn)希望的結(jié)果。此外,在附圖中描繪的過(guò)程不必需要所示特定順序或者依次順序以實(shí)現(xiàn)希望的結(jié)果。在某些實(shí)施方式中,多任務(wù)和并行處理可能是有利的。
【權(quán)利要求】
1.一種計(jì)算機(jī)實(shí)施的方法,包括: 訪問(wèn)由文件系統(tǒng)維護(hù)的文件,所述文件系統(tǒng)管理對(duì)塊設(shè)備的訪問(wèn),其中所述文件包括多個(gè)活躍塊,其中所述多個(gè)活躍塊中的每個(gè)活躍塊與相應(yīng)的邏輯塊編號(hào)和相應(yīng)的塊索引關(guān)聯(lián),所述塊索引代表所述塊在輸出文件中相對(duì)于其它塊的位置; 向所述文件指派文件索引; 分析所述文件,以確定在所述文件中包括的最大塊索引和最小塊索引; 標(biāo)識(shí)在所述多個(gè)活躍塊中的塊游程,其中每個(gè)塊游程包括相應(yīng)的開始?jí)K,其中一些塊游程包括在所述輸出文件中相互相鄰的多個(gè)塊,其中與相鄰的所述塊關(guān)聯(lián)的所述邏輯塊編號(hào)增加一; 對(duì)于所述塊游程中的每個(gè)塊游程,標(biāo)識(shí)所述塊游程的相應(yīng)長(zhǎng)度; 對(duì)于每個(gè)開始?jí)K,生成用于每個(gè)開始?jí)K的文件映射條目,其中生成所述文件映射條目包括: 壓縮所述文件索引; 基于所述最大塊索引和所述最小塊索引,壓縮與所述開始?jí)K關(guān)聯(lián)的所述塊索引;并且 壓縮與所述開始?jí)K關(guān)聯(lián)的所述塊游程的長(zhǎng)度;并且 在文件映射中存儲(chǔ)所述文件映射條目。
2.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)實(shí)施的方法,還包括: 基于與所述文件映射條目關(guān)聯(lián)的所述邏輯塊編號(hào),按順序存儲(chǔ)所述文件映射條目。
3.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)實(shí)施的方法,其中所述文件映射條目中的至少一個(gè)文件映射條目是具有格式〈壓縮的文件索引,壓縮的塊索引,壓縮的所述塊游程的長(zhǎng)度 > 的三元組。
4.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)實(shí)施的方法,其中壓縮所述文件索引和所述塊索引包括使用可變長(zhǎng)度壓縮來(lái)壓縮所述文件索引和所述塊索引。
5.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)實(shí)施的方法,其中壓縮所述塊游程的長(zhǎng)度包括使用算術(shù)編碼、霍夫曼編碼或者通用編碼。
6.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)實(shí)施的方法,其中所述文件映射包括與由所述文件系統(tǒng)維護(hù)的至少第二文件關(guān)聯(lián)的文件映射條目,并且其中壓縮所述文件索引包括基于由所述文件映射引用的文件數(shù)目來(lái)壓縮所述文件索引。
7.根據(jù)權(quán)利要求6所述的計(jì)算機(jī)實(shí)施的方法,其中所述第二文件被指派第二文件索弓I,所述第二文件索引與向所述文件指派的所述文件索引不同。
8.根據(jù)權(quán)利要求7所述的計(jì)算機(jī)實(shí)施的方法,其中所述文件索引唯一地標(biāo)識(shí)所述文件,并且所述第二文件索引唯一地標(biāo)識(shí)所述第二文件。
9.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)實(shí)施的方法,還包括: 在與所述塊設(shè)備關(guān)聯(lián)的初始化過(guò)程期間,加載所述文件映射;并且 對(duì)于在所述文件映射中包括的每第N個(gè)文件映射條目: 在數(shù)據(jù)結(jié)構(gòu)中存儲(chǔ)指向所述第N個(gè)文件映射條目的指針,其中N是大于I的整數(shù),并且其中指向所述第N個(gè)文件映射條目的所述指針被存儲(chǔ)于基于與所述第N個(gè)文件映射條目關(guān)聯(lián)的所述邏輯塊編號(hào)除以N的位置。
10.根據(jù)權(quán)利要求9所述的計(jì)算機(jī)實(shí)施的方法,還包括: 接收對(duì)于訪問(wèn)特定塊的請(qǐng)求,其中所述特定塊與特定邏輯塊編號(hào)關(guān)聯(lián); 訪問(wèn)所述數(shù)據(jù)結(jié)構(gòu),以標(biāo)識(shí)與最接近所述特定邏輯塊編號(hào)的所述第N個(gè)文件映射條目對(duì)應(yīng)的指針,其中與最接近所述特定邏輯塊編號(hào)的所述第N個(gè)文件映射條目對(duì)應(yīng)的所述邏輯塊編號(hào)小于所述特定塊編號(hào); 基于與最接近所述特定邏輯塊編號(hào)的所述第N個(gè)文件映射條目對(duì)應(yīng)的所述指針,標(biāo)識(shí)與所述特定塊對(duì)應(yīng)的所述文件映射條目;并且 對(duì)與所述特定塊對(duì)應(yīng)的所述文件映射條目進(jìn)行解碼。
11.根據(jù)權(quán)利要求9所述的計(jì)算機(jī)實(shí)施的方法,還包括: 接收對(duì)于訪問(wèn)特定塊的請(qǐng)求,其中所述特定塊與特定塊編號(hào)關(guān)聯(lián);并且 標(biāo)識(shí)與所述特定塊對(duì)應(yīng)的所述文件映射條目而不對(duì)多于N個(gè)的文件映射條目進(jìn)行解碼。
12.—種系統(tǒng),包括: 存儲(chǔ)指令的存儲(chǔ)器;以及 一個(gè)或者多個(gè)處理器,被配置為執(zhí)行所述指令,所述指令使所述一個(gè)或者多個(gè)處理器執(zhí)行操作,所述操作包括: 訪問(wèn)由文件系統(tǒng)維護(hù)的文件,所述文件系統(tǒng)管理對(duì)塊設(shè)備的訪問(wèn),其中所述文件包括多個(gè)活躍塊,其中所述多個(gè)活躍塊中的每個(gè)活躍塊與相應(yīng)的邏輯塊編號(hào)和相應(yīng)的塊索引關(guān)聯(lián),所述塊索引代表所述塊在輸出文件中相對(duì)于其它塊的位置; 向所述文件指派文件索引; 分析所述文件,以確定在所述文件中包括的最大塊索引和最小塊索引; 標(biāo)識(shí)在所述多個(gè)活躍塊中的塊游程,其中每個(gè)塊游程包括相應(yīng)的開始?jí)K,其中一些塊游程包括在所述輸出文件中相互相鄰的多個(gè)塊,其中與相鄰的所述塊關(guān)聯(lián)的所述邏輯塊編號(hào)增加一; 對(duì)于所述塊游程中的每個(gè)塊游程,標(biāo)識(shí)所述塊游程的相應(yīng)長(zhǎng)度; 對(duì)于每個(gè)開始?jí)K,生成用于每個(gè)開始?jí)K的文件映射條目,其中生成所述文件映射條目包括: 壓縮所述文件索引; 基于所述最大塊索引和所述最小塊索引,壓縮與所述開始?jí)K關(guān)聯(lián)的所述塊索引;并且 壓縮與所述開始?jí)K關(guān)聯(lián)的所述塊游程的長(zhǎng)度;并且 在文件映射中存儲(chǔ)所述文件映射條目。
13.根據(jù)權(quán)利要求12所述的系統(tǒng),其中所述操作還包括: 基于與所述文件映射條目關(guān)聯(lián)的所述邏輯塊編號(hào),按順序存儲(chǔ)所述文件映射條目。
14.根據(jù)權(quán)利要求12所述的系統(tǒng),其中所述文件映射條目中的至少一個(gè)文件映射條目是具有格式〈壓縮的文件索引,壓縮的塊索引,壓縮的所述塊游程的長(zhǎng)度 > 的三元組。
15.根據(jù)權(quán)利要求12所述的系統(tǒng),其中壓縮所述文件索引和所述塊索引包括使用可變長(zhǎng)度壓縮來(lái)壓縮所述文件索引和所述塊索引。
16.根據(jù)權(quán)利要求12所述的系統(tǒng),其中壓縮所述塊游程的長(zhǎng)度包括使用算術(shù)編碼、霍夫曼編碼或者通用編碼。
17.根據(jù)權(quán)利要求12所述的系統(tǒng),其中所述文件映射包括與由所述文件系統(tǒng)維護(hù)的至少第二文件關(guān)聯(lián)的文件映射條目,并且其中壓縮所述文件索引包括基于由所述文件映射引用的文件數(shù)目來(lái)壓縮所述文件索引。
18.根據(jù)權(quán)利要求17所述的系統(tǒng),其中所述第二文件被指派第二文件索引,所述第二文件索引與向所述文件指派的所述文件索引不同。
19.根據(jù)權(quán)利要求18所述的系統(tǒng),其中所述文件索引唯一地標(biāo)識(shí)所述文件,并且所述第二文件索引唯一地標(biāo)識(shí)所述第二文件。
20.根據(jù)權(quán)利要求12所述的系統(tǒng),其中所述操作還包括: 在與所述塊設(shè)備關(guān)聯(lián)的初始化過(guò)程期間,加載所述文件映射;并且 對(duì)于在所述文件映射中包括的每第N個(gè)文件映射條目: 在數(shù)據(jù)結(jié)構(gòu)中存儲(chǔ)指向所述第N個(gè)文件映射條目的指針,其中N是大于I的整數(shù),并且其中指向所述第N個(gè)文件映射條目的所述指針被存儲(chǔ)于基于與所述第N個(gè)文件映射條目關(guān)聯(lián)的所述邏輯塊編號(hào)除以N的位置。
21.根據(jù)權(quán)利要求20所述的系統(tǒng),其中所述操作還包括: 接收對(duì)于訪問(wèn)特定塊的請(qǐng)求,其中所述特定塊與特定邏輯塊編號(hào)關(guān)聯(lián); 訪問(wèn)所述數(shù)據(jù)結(jié)構(gòu),以標(biāo)識(shí)與最接近所述特定邏輯塊編號(hào)的所述第N個(gè)文件映射條目對(duì)應(yīng)的指針,其中與最接近所述特定邏輯塊編號(hào)的所述第N個(gè)文件映射條目對(duì)應(yīng)的所述邏輯塊編號(hào)小于所述特定塊編號(hào); 基于與最接近所述特定邏輯塊編號(hào)的所述第N個(gè)文件映射條目對(duì)應(yīng)的所述指針,標(biāo)識(shí)與所述特定塊對(duì)應(yīng)的所述文件映射條目;并且 對(duì)與所述特定塊對(duì)應(yīng)的所述文件映射條目進(jìn)行解碼。
22.根據(jù)權(quán)利要求20所述的系統(tǒng),其中所述操作還包括: 接收對(duì)于訪問(wèn)特定塊的請(qǐng)求,其中所述特定塊與特定塊編號(hào)關(guān)聯(lián);并且 標(biāo)識(shí)與所述特定塊對(duì)應(yīng)的所述文件映射條目而不對(duì)多于N個(gè)的文件映射條目進(jìn)行解碼。
23.一種存儲(chǔ)指令的計(jì)算機(jī)可讀介質(zhì),所述指令在由處理設(shè)備執(zhí)行時(shí)使所述處理設(shè)備執(zhí)行操作,所述操作包括: 訪問(wèn)由文件系統(tǒng)維護(hù)的文件,所述文件系統(tǒng)管理對(duì)塊設(shè)備的訪問(wèn),其中所述文件包括多個(gè)活躍塊,其中所述多個(gè)活躍塊中的每個(gè)活躍塊與相應(yīng)的邏輯塊編號(hào)和相應(yīng)的塊索引關(guān)聯(lián),所述塊索引代表所述塊在輸出文件中相對(duì)于其它塊的位置; 向所述文件指派文件索引; 分析所述文件,以確定在所述文件中包括的最大塊索引和最小塊索引; 標(biāo)識(shí)在所述多個(gè)活躍塊中的塊游程,其中每個(gè)塊游程包括相應(yīng)的開始?jí)K,其中一些塊游程包括在所述輸出文件中相互相鄰的多個(gè)塊,其中與相鄰的所述塊關(guān)聯(lián)的所述邏輯塊編號(hào)增加一; 對(duì)于所述塊游程中的每個(gè)塊游程,標(biāo)識(shí)所述塊游程的相應(yīng)長(zhǎng)度; 對(duì)于每個(gè)開始?jí)K,生成用于每個(gè)開始?jí)K的文件映射條目,其中生成所述文件映射條目包括: 壓縮所述文件索引; 基于所述最大塊索引和所述最小塊索引,壓縮與所述開始?jí)K關(guān)聯(lián)的所述塊索引;并且 壓縮與所述開始?jí)K關(guān)聯(lián)的所述塊游程的長(zhǎng)度;并且 在文件映射中存儲(chǔ)所述文件映射條目。
24.根據(jù)權(quán)利要求23所述的計(jì)算機(jī)可讀介質(zhì),其中所述操作還包括: 基于與所述文件映射條目關(guān)聯(lián)的所述邏輯塊編號(hào),按順序存儲(chǔ)所述文件映射條目。
25.根據(jù)權(quán)利要求23所述的計(jì)算機(jī)可讀介質(zhì),其中所述文件映射條目中的至少一個(gè)文件映射條目是具有格式〈壓縮的文件索引,壓縮的塊索引,壓縮的所述塊游程的長(zhǎng)度 > 的三元組。
26.根據(jù)權(quán)利要求23所述的計(jì)算機(jī)可讀介質(zhì),其中壓縮所述文件索引和所述塊索引包括使用可變長(zhǎng)度壓縮來(lái)壓縮所述文件索引和所述塊索引。
27.根據(jù)權(quán)利要求23所述的計(jì)算機(jī)可讀介質(zhì),其中壓縮所述塊游程的長(zhǎng)度包括使用算術(shù)編碼、霍夫曼編碼或者通用編碼。
28.根據(jù)權(quán)利要求23所述的計(jì)算機(jī)可讀介質(zhì),其中所述文件映射包括與由所述文件系統(tǒng)維護(hù)的至少第二文件關(guān)聯(lián)的文件映射條目,并且其中壓縮所述文件索引包括基于由所述文件映射引用的文件數(shù)目來(lái)壓縮所述文件索引。
29.根據(jù)權(quán)利要求28所述的計(jì)算機(jī)可讀介質(zhì),其中所述第二文件被指派第二文件索弓I,所述第二文件索引與向所述文件指派的所述文件索引不同。
30.根據(jù)權(quán)利要求29所述的計(jì)算機(jī)可讀介質(zhì),其中所述文件索引唯一地標(biāo)識(shí)所述文件,并且所述第二文件索引唯一地標(biāo)識(shí)所述第二文件。
31.根據(jù)權(quán)利要求23所述的計(jì)算機(jī)可讀介質(zhì),其中所述操作還包括: 在與所述塊設(shè)備關(guān)聯(lián)的初始化過(guò)程期間,加載所述文件映射;并且 對(duì)于在所述文件映射中包括的每第N個(gè)文件映射條目: 在數(shù)據(jù)結(jié)構(gòu)中存儲(chǔ)指向所述第N個(gè)文件映射條目的指針,其中N是大于I的整數(shù),并且其中指向所述第N個(gè)文件映射條目的所述指針被存儲(chǔ)于基于與所述第N個(gè)文件映射條目關(guān)聯(lián)的所述邏輯塊編號(hào)除以N的位置。
32.根據(jù)權(quán)利要求23所述的計(jì)算機(jī)可讀介質(zhì),其中所述操作還包括: 接收對(duì)于訪問(wèn)特定塊的請(qǐng)求,其中所述特定塊與特定邏輯塊編號(hào)關(guān)聯(lián); 訪問(wèn)所述數(shù)據(jù)結(jié)構(gòu),以標(biāo)識(shí)與最接近所述特定邏輯塊編號(hào)的所述第N個(gè)文件映射條目對(duì)應(yīng)的指針,其中與最接近所述特定邏輯塊編號(hào)的所述第N個(gè)文件映射條目對(duì)應(yīng)的所述邏輯塊編號(hào)小于所述特定塊編號(hào); 基于與最接近所述特定邏輯塊編號(hào)的所述第N個(gè)文件映射條目對(duì)應(yīng)的所述指針,標(biāo)識(shí)與所述特定塊對(duì)應(yīng)的所述文件映射條目;并且 對(duì)與所述特定塊對(duì)應(yīng)的所述文件映射條目進(jìn)行解碼。
33.根據(jù)權(quán)利要求32所述的計(jì)算機(jī)可讀介質(zhì),其中所述操作還包括: 接收對(duì)于訪問(wèn)特定塊的請(qǐng)求,其中所述特定塊與特定塊編號(hào)關(guān)聯(lián);并且 標(biāo)識(shí)與所述特定塊對(duì)應(yīng)的所述文件映射條目而不對(duì)多于N個(gè)的文件映射條目進(jìn)行解碼。
【文檔編號(hào)】G06F3/06GK104205035SQ201380017136
【公開日】2014年12月10日 申請(qǐng)日期:2013年3月22日 優(yōu)先權(quán)日:2012年3月28日
【發(fā)明者】A·卡達(dá)施 申請(qǐng)人:谷歌公司