專利名稱:物件導(dǎo)向儲存裝置的磁盤配置方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種物件導(dǎo)向儲存裝置(Object-Based Storage Device,OSD)的磁盤 配置(Disk Layout)方法。
背景技術(shù):
現(xiàn)行使用的網(wǎng)絡(luò)儲存架構(gòu)的下有網(wǎng)絡(luò)磁盤機(Network-attachedStorage, NAS) 及儲存區(qū)域網(wǎng)絡(luò)(Storage Area Network, SAN) , NAS的問題在于元數(shù)據(jù)(metadata)都放在 文檔伺服器上,當(dāng)大量的使用者存取時,會造成伺服器本身的效能低落,因此在SAN所提供 了比NAS更多的優(yōu)點的同時,卻又產(chǎn)生了網(wǎng)絡(luò)安全性上的問題。因此OSD被提出來做為網(wǎng) 絡(luò)儲存上效能及安全性的一個解決方案。 OSD為一種在網(wǎng)絡(luò)儲存架構(gòu)下能夠提供自我管理、分享及安全性儲存的一種儲 存方法,其將部份較低階的功能如空間管理由文檔系統(tǒng)移至磁盤裝置本身,裝置的存取則 為標(biāo)準(zhǔn)物件界面。此外,在此OSD架構(gòu)下,又定義了物件存取的內(nèi)容及方法,其特殊的架 構(gòu)及規(guī)格也必須要有相對應(yīng)的磁盤輸出方法搭配。目前針對OSD架構(gòu)的實作方式有兩 類,第一類為利用傳統(tǒng)文檔系統(tǒng)模擬,如Li皿x下的第二延伸文檔系統(tǒng)(Second Extended FileSystem, Ext2);第二類為相關(guān)于OSD的磁盤配置新方法的研究,例如,物件導(dǎo)向文 檔系統(tǒng)(Object-Based File System, OBFS)及其衍生的物件導(dǎo)向儲存裝置文檔系統(tǒng) (Object-based Storage Device File System,OSDFS),其架構(gòu)Ext2大致相同,不同的部份 只在其設(shè)計為可變區(qū)塊的大小及索引方式,然而其設(shè)計有其限制所在。以下針對此二類方 法作說明。 該磁盤配置非針對OSD的物件特性而設(shè)計。 OSD是以物件為基礎(chǔ)并以唯一的識別碼(ID)做為識別物件的根據(jù)。物件又分成 根(Root)、分區(qū)(Partition)、收集(Collection)及使用者(User)四種類型,而這四種物 件類型又分別有不同的屬性配置。因此,為了要針對其特殊規(guī)格而設(shè)計,必須要有特別的物 件描述方式儲存在實體裝置中。 圖1是顯示Ext2的磁盤配置的示意圖。如圖1所示,在一磁盤分割(Partition) 中,除了記錄文檔系統(tǒng)信息的超級區(qū)塊(Superblock)之外,依照分割區(qū)的大小劃分多個區(qū) 塊群組(Block Group)。在Superblock中記錄了區(qū)塊的總數(shù)量、已經(jīng)使用及未使用的區(qū)塊、 inode數(shù)量...等等。每一區(qū)塊群組包括一群組信息,其記錄對應(yīng)區(qū)塊群組的已使用區(qū)塊、 未使用區(qū)塊、inode以及真正存放數(shù)據(jù)的數(shù)據(jù)區(qū)塊。文檔與目錄的相關(guān)信息皆存放在inode 中,其中目錄被視為一種特殊形式的文檔,可據(jù)以建立階層關(guān)系。 圖2是顯示OBFS的磁盤配置的示意圖。參考圖2, OSDFS (以O(shè)BFS為基礎(chǔ))的整 體架構(gòu)與Ext2大致相同,其將整個磁盤分割成同樣大小的大范圍的區(qū)域(Region),例如, 256MB。區(qū)域的大小視需要來分配,此外,可以依文檔大小需求,再將每一區(qū)域劃分成全部都 是大區(qū)塊或小區(qū)塊。每一區(qū)域中會有記錄已使用或未使用的區(qū)塊信息,以及真正存放數(shù)據(jù) 的數(shù)據(jù)區(qū)塊。每一區(qū)域的元數(shù)據(jù)(Metadata)存放在onode中,其中元數(shù)據(jù)是用來存放每一個物件的狀態(tài),其利用區(qū)域識別碼(Region ID)及物件識別碼來進行索引。 目前大部份的OSD文檔系統(tǒng)技術(shù)是利用現(xiàn)行傳統(tǒng)的文檔系統(tǒng)(例如,ext2、
ext3...等)來模擬。傳統(tǒng)上Li皿x操作系統(tǒng)的磁盤配置是以內(nèi)節(jié)點(inode)為基礎(chǔ),因為
其metadata (如建立時間等)沒辦法完整的描述一個物件,只能以模擬物件的方式進行,與
OSD所欲表達的精神與特性實有不同。此外,一些新的OSD的磁盤配置方法(例如,OBFS或
OSDFS)是結(jié)合現(xiàn)行的文檔系統(tǒng)及OSD的部份特性而設(shè)計,并非完全專門針對OSD的規(guī)格中
的特性而開發(fā),其未提供完整的屬性的儲存,所以其描述物件的能力也相對不足。 此外,在網(wǎng)絡(luò)儲存架構(gòu)下的物件可攜性問題、硬盤空間使用無彈性且無法充份利
用、無法配合現(xiàn)行操作系統(tǒng)架構(gòu)、無法有效索引物件以及無整體性等問題。因此,現(xiàn)今文檔
系統(tǒng)的存取方式無法完整有效的將OSD的特性顯露出來,此外,尚需通過其它的輔助的方
式才能展現(xiàn)物件的附屬關(guān)系。
發(fā)明內(nèi)容
本發(fā)明實施例揭示了一種物件導(dǎo)向儲存裝置的磁盤配置方法,其適用于一磁盤。 該方法包括下列步驟初始化該磁盤,并且新增一個Root物件。當(dāng)新增該Root物件時,在 該磁盤中第一個可使用的區(qū)塊開始配置一組區(qū)塊,其分別儲存該Root物件屬性(此后物 件屬性包括規(guī)格書上定義的屬性(attributes)加上前述的metadata)、一未使用區(qū)塊索 引表以及一 Partition物件索引表,其中該Root根據(jù)該Partition物件索引表來索引一 Partition物件的位置。當(dāng)新增一 Partition物件時,在該磁盤中配置一組區(qū)塊,其分別儲 存該Partition物件的屬性、一 Collection物件索引表以及一 User物件索引表,其中該 Partition物件根據(jù)該Collection物件索引表來索引Collection物件的位置以及根據(jù)該 User物件索引表來索引一 User物件的位置。當(dāng)新增一 Collection物件時,在該磁盤中配 置一組區(qū)塊,其分別儲存該Collection物件的屬性以及一 User物件識別碼索引表,其中 該Collection物件根據(jù)該User物件識別碼索引表來索引一 User物件識別碼。當(dāng)新增一 User物件時,在該磁盤中配置一組區(qū)塊,其分別儲存該User物件的屬性以及該User物件的 數(shù)據(jù)。 本發(fā)明實施例還揭示了一種物件導(dǎo)向儲存裝置的磁盤配置方法,其對一磁盤進 行磁盤配置,使得該磁盤具有一 Root物件、至少一 Partition物件以及至少一 User物 件。該Root物件還提供Root物件屬性、一未使用區(qū)塊索引表以及該Root物件用來索引一 Partition物件位置的一 Partition物件索引表。該Partition物件還提供Partition物 件屬性、該Partition物件用來索引一 Collection物件位置的一 Collection物件索引表 以及該Partition物件用來索引一 User物件位置的一 User物件索引表。該User物件還 提供User物件屬性以及ser物件數(shù)據(jù)。
圖1是顯示Ext2的磁盤配置的示意圖。
圖2是顯示0BFS的磁盤配置的示意圖。
圖3是顯示本發(fā)明實施例的磁盤配置的示意圖。 圖4是顯示本發(fā)明實施例的User物件的數(shù)據(jù)區(qū)塊的排列方式的示意圖。
8
圖5是顯示本發(fā)明實施例的物件索引表中的區(qū)塊組關(guān)聯(lián)的示意圖。 圖6是顯示本發(fā)明實施例的Partition物件中的配置示意圖。 圖7是顯示本發(fā)明實施例的User物件索引表的內(nèi)容存取的示意圖 圖8A 8D是顯示本發(fā)明實施例的物件導(dǎo)向儲存裝置的磁盤配置方法的步驟流程圖。 圖9 14是顯示本發(fā)明實施例的物件導(dǎo)向儲存裝置的磁盤配置的流程圖。 附圖符號說明 SN 下一組區(qū)塊的起始位置 SP 前一組區(qū)塊的起始位置 S801. S808 流程步驟
具體實施例方式
為了使本發(fā)明的目的、特征、及優(yōu)點能更明顯易懂,下文特舉較佳實施例,并結(jié)合
附3至圖14,做詳細的說明。本發(fā)明說明書提供不同的實施例來說明本發(fā)明不同實施
方式的技術(shù)特征。其中,實施例中的各元件的配置是為說明之用,并非用以限制本發(fā)明。且
實施例中的附圖標(biāo)號的部分重復(fù),是為了簡化說明,并非意指不同實施例之間的關(guān)聯(lián)性。 本發(fā)明實施例揭示了 一種物件導(dǎo)向儲存裝置的磁盤配置方法。 磁盤配置是儲存永久數(shù)據(jù)的基本方式。若傳統(tǒng)文檔系統(tǒng)要快速、穩(wěn)定的存取硬
盤,并呈現(xiàn)相關(guān)內(nèi)容給終端使用者(end-user),通常使用階層形式來儲存文檔系統(tǒng)(例如,
Ex2、Ext3、NTFS...等等),這些文檔系統(tǒng)都有其特定的磁盤配置方式。然而,以物件形式存
在的數(shù)據(jù)儲存方式有其特殊需求,包括特定的物件類別及每一物件類別的屬性,必須根據(jù)
識別碼來進行存取。目前僅有0BFS及0SDFS制定出其磁盤配置方式,但是在數(shù)據(jù)存取上仍
被受到限制。 基于0SD規(guī)格書的定義,物件的使用數(shù)量是沒有限制的。本發(fā)明支持0SD規(guī)格書 的定義,且提供非必要性的支持。圖3是顯示本發(fā)明實施例的磁盤配置的示意圖。參考圖 3,本實施例的磁盤配置包含Root物件屬性,Partition物件的屬性,User物件的屬性,以 及User物件的數(shù)據(jù)區(qū)。磁盤的使用上不預(yù)設(shè)任何的分割,而以磁盤能支持的為極限,其中 Root物件(即,相等于Ext2的Superblock)包含屬性以及可使用區(qū)塊或已使用Partition 的物件索引。此外,本發(fā)明可以無限制切割Root物件成為多個Partition物件。除了屬性 區(qū)塊外,Partition物件更包含可使用區(qū)塊、已使用Collection物件索引及User物件索引。 另外,Collection物件也記錄了其下的User物件識別碼(User Object ID)。每一種物件 都有索引可供直接存取到物件屬性及數(shù)據(jù)所在的區(qū)塊。
以下先說明物件導(dǎo)向儲存裝置(0SD)所要表達的儲存概念。 OSD是一個經(jīng)標(biāo)準(zhǔn)實作后用來儲存成為物件的數(shù)據(jù)的裝置,其中每一個物件依照 數(shù)據(jù)的順序來儲存,且并賦予每一物件一識別碼,使得存取數(shù)據(jù)都要通過物件識別碼。對外 而言,數(shù)據(jù)是指一個物件,而非區(qū)塊組成的文檔,并且利用一安全機制將物件存放在儲存媒 體中。物件種類包括Root物件、Partition物件、Collection物件以及User物件。每一物 件包括各自的屬性,分別說明如下 Root物件用來描述邏輯單元(Logic Unit)的儲存空間以及用來管理Partition物件。Partition物件用來描述給Collection物件及User物件使用的儲存空間,以及描述 Collection物件及User物件的安全性、空間限制 等原則。Collection物件為用來分 類與索引User物件的管理性物件。User物件用來存放使用者數(shù)據(jù)。
下文將分為數(shù)個部分來說明本發(fā)明的OSD的磁盤配置。
磁盤配置概念 在建立了磁盤邏輯單元(Logic Unit)之后,請參考圖3的實施例說明以本發(fā)明進 行磁盤配置的儲存結(jié)構(gòu)。假設(shè)預(yù)設(shè)存放的基本單位是以一個區(qū)塊(Block)大小為4K字節(jié), 或者使用者可以自訂區(qū)塊大小。但基于屬性數(shù)據(jù)存放的便利性、空間使用上的完整性、以及 配合操作系統(tǒng)存儲器管理機制,以4K大小的區(qū)塊最適合。 Root物件即為描述OSD本身,亦即當(dāng)使用者欲以O(shè)SD存放物件,即可將OSD視為唯 一的Root物件。Root物件有其屬性,因此第一個區(qū)塊即存放Root物件的屬性數(shù)據(jù),第一個 區(qū)塊是在位移1024字節(jié)之處。如果整個硬盤是給OSD使用,則必須保留磁區(qū)給開機管理程 序(Boot Loader),而接在屬性區(qū)塊之后的是未使用區(qū)塊索引表。在未使用區(qū)塊索引表之后 是存放Partition物件索引表。因為Partition物件可以無限制的產(chǎn)生,因此需要可以存 放大量Partition物件的表格,表格的配置及使用方式會在之后說明。 [OO36] Partition物件是 一 個用來儲存Collection物件與User物件的容器 (Container)。當(dāng)建立一個新的Partition物件時,會建立Partition物件的屬性區(qū)塊,接 在之后的是已使用的Collection物件索引表及User物件索引表。
基本屬性數(shù)據(jù) 除了規(guī)格書定義的屬性及metadata之外,本發(fā)明仍可自訂多個屬性以搭配操作 系統(tǒng)及磁盤配置的需求。因此,除規(guī)格書定義的屬性,以下每一物件種類說明可能產(chǎn)生的額 外屬性,但并非用以限定本發(fā)明。 「Root物件可能的額外屬性」:其類似Ext2的Superblock的功能,其記錄所有區(qū)塊 使用的信息、屬性使用的區(qū)塊數(shù)量、與各物件的索引表相關(guān)的記錄、定位區(qū)塊的長度(32或 64位)、物件識別碼的長度(32或64位)、物件識別碼的計數(shù)器等,或其它所需的屬性。
「Partition物件的可能額外屬性」其記錄與Collection物件及User物件的索 引表相關(guān)的記錄,包括起始位置及每次配置表格的大小等,或其它所需的屬性。
「Collection物件可能的額外屬性」:其記錄User物件索引表的大小及位置等。因 為User物件和Collection物件是多對多的關(guān)系,所以必須要相互索引以快速尋找。
「User物件可能的額外屬性」由于User物件負(fù)責(zé)存放數(shù)據(jù),因此若數(shù)據(jù)量很小, 也就是屬性加數(shù)據(jù)小于一個區(qū)塊(如4K bytes)大小時,可以將該數(shù)據(jù)當(dāng)成屬性儲存,就 是在屬性表內(nèi)會有一個為屬性內(nèi)數(shù)據(jù)(In-property Data)的字段,數(shù)據(jù)存放在此字段中。 或其它所需的屬性。 如果User物件的數(shù)據(jù)不是以In-property Data的形式存在,則代表該數(shù)據(jù)是存 在于額外的區(qū)塊中,因此User物件必須要記錄使用的區(qū)塊,在其屬性表中有一個屬性,其 稱為區(qū)塊串列(Block List)。 區(qū)塊串列由多個連續(xù)記錄組成,每一個記錄存放數(shù)據(jù)區(qū)塊的位置及其長度,即先 定義1或2個字節(jié)記載后面銜接的數(shù)據(jù)區(qū)塊所記錄的數(shù)量,接下來以位置及長度為一組記 載數(shù)據(jù)區(qū)塊的記錄,其中每一記錄的格式為記錄內(nèi)容是分區(qū)配置(Extent-based)的方式存在,也就是以位置(Location)+連續(xù)區(qū)塊長度(Length),以32位的配置來說,其每一記錄 的使用空間為位置(32位)+連續(xù)區(qū)塊長度(32位)=8字節(jié)。定位用的位置是指第n個 區(qū)塊的位置,而非實際地址,其中實際地址必須利用公式計算而得,該公式表示為nX區(qū)塊 大小(例如,4K、8K、...)。以一個4K的區(qū)塊為例,當(dāng)位置(Location)為100時,其實際地 址為100X4K。以下說明公式中的變數(shù)。 圖4是說明User物件區(qū)塊串列屬性的數(shù)據(jù)區(qū)塊的排列方式,其中第1個字段為1 個字節(jié),用來記錄已儲存數(shù)據(jù)區(qū)塊的數(shù)量,因此最多可存放255個不連續(xù)區(qū)塊。
位置(例如,長度為32位)可以使用232個區(qū)塊,定址到232X4K = 17592G字節(jié) =16T字節(jié)的地址空間。 長度(例如,長度為32位)使用連續(xù)區(qū)塊的數(shù)量,單一個連續(xù)區(qū)塊可以使用 232X4K= 175926字節(jié)=16T字節(jié)的硬盤空間。 舉例來說,若屬性只用一個區(qū)塊,一個區(qū)塊大小為4K,假設(shè)基本屬性的部份占了 3K的空間,剩于1K的空間給區(qū)塊串列使用,則最多可以記錄(1024-2)/8 = 127個不連續(xù) 的數(shù)據(jù)空間;或者給屬性內(nèi)數(shù)據(jù)存放1K的數(shù)據(jù)。若從未使用區(qū)塊索引表取得可以存放的空 間,但是記錄的數(shù)量超過該可以存放的空間,表示空間使用將近完畢而造成磁區(qū)使用過于 分散,故需要進行磁盤重組。
索引及表格的使用 由于索引表在磁盤配置扮演重要的數(shù)據(jù)定位及尋找的功能,以下將細部說明各種 索引表分類及其使用方式。每一種索引表將從其最基本的表格結(jié)構(gòu)說明起,之后會以例子 說明其用法。為了因應(yīng)無限制物件使用的需求,在本發(fā)明實施例中設(shè)計幾種特殊的表格,包 括物件索引表、未使用區(qū)塊索引表以及Collection物件的User物件識別碼索引表。
物件索引表 在0SD中是以物件為存取為核心,如何快速尋找及大量儲存物件變成此磁盤配置 的核心工作,因此必須設(shè)計符合需求的物件索引。
Table結(jié)構(gòu)及其連結(jié) 物件索引表使用預(yù)設(shè)一次配置所需數(shù)量的區(qū)塊,其預(yù)設(shè)數(shù)量會記載在Root物 件的屬性中。假設(shè)一組區(qū)塊包括數(shù)個區(qū)塊不夠使用時,亦即超過上限臨界值(Upper Threshold),可以再動態(tài)分配一組新的未使用的區(qū)塊,其是根據(jù)未使用區(qū)塊索引表來取得 分配。當(dāng)將多組區(qū)塊連結(jié)使用時,假設(shè)有m組區(qū)塊,如果記錄因刪除導(dǎo)致降低到第m-l組的 下限臨界值(LowerThreshold),則將第m組區(qū)塊釋放移除。 區(qū)塊組之間彼此有連結(jié)的關(guān)系,假設(shè)區(qū)塊定位使用32位=8字節(jié),每一組區(qū)塊的 第一個區(qū)塊的前面保留16字節(jié),前8個字節(jié)為前一組區(qū)塊的起始位置(Start location of previous set ofblocks (SP)),其記錄前一組區(qū)塊的位置,而后8個字節(jié)為下一組區(qū)塊的 起始位置(Start location of next set ofblocks (SN)),其記錄下一組區(qū)塊的位置。如 果只有一組區(qū)塊,則SP及SN都表示為NULL。如果有多組區(qū)塊,則第一組區(qū)塊的SP表示為 NULL,而最后一組區(qū)塊的SN表示為NULL。如果其中一組區(qū)塊的數(shù)據(jù)將近額滿,亦即超過臨 界值(其中該臨界值屬于Root的額外屬性),則必須再增加一組新的區(qū)塊,如圖5所示。
存放于物件索引表的記錄物件索引表可包括屬于Root物件的Partition物件索引表(Partition0bjectTable)、屬于Partition物件的Collection物件索引表(Collection ObjectTable)以及
User物件索引表(User Object Table),每一物件索引表內(nèi)部所存放的每一筆記錄代表一
個物件索引,而物件索引的格式為物件識別碼(Obiect ID)加上位置(Location),則一物
件索引表可以記載的索引數(shù)量公式為
-組區(qū)塊可記錄躬,糧=一組區(qū)=;"。
索引長度 如果物件識別碼(包括Partition識別碼(Partition ID)、收集識別碼(Collection ID)以及使用者識別碼(User Object ID))的長度為32位(4字節(jié)),區(qū)塊位置(Block Location)固定為32位時,則一筆記錄的長度為Obiect ID+Location = 8字節(jié)。因此,1個4K大小的區(qū)塊如果以8字節(jié)做為記錄單位,則可儲存4096-8-8/8 = 510個記錄。
另外,如果物件識別碼的長度為64位(8字節(jié)),區(qū)塊位置(BlockLocation)固定為32位時,則一筆記錄的長度為Object ID+Location = 12字節(jié)。因此,1個4K大小的區(qū)塊如果以12字節(jié)為記錄單位,扣除SP及SN各占8字節(jié),則可存放(4096-8-8)/12 = 340個記錄。 由于整個物件索引表是以連結(jié)多組區(qū)塊所形成,以一次一組16個區(qū)塊來看,共占用16X4K = 64K的數(shù)據(jù)空間。若物件識別碼的長度為32位,則可存放(16X4096-8-8)/8 = 8190個物件索引。若物件識別碼的長度為64位,則以單一組區(qū)塊可
存放(lex4096-8-8)/12 = s站o個物件索引。 未使用區(qū)塊索引表(Free Block Table) 未使用區(qū)塊索引表可定義在Root物件中。若要取得空間,必須要跟Root物件中
的未使用區(qū)塊請求適合的大小。未使用區(qū)塊索引表內(nèi)部所存放的每一筆記錄代表一個連續(xù)
的未使用的空間,未使用的區(qū)塊記錄如果是多組分散的,則形成一個多筆記錄,而每一筆記
錄的格式也是利用分區(qū)配置的方式記錄,位置(Location)+區(qū)塊長度(Length)。 以一次一組8個區(qū)塊來看,共占用8 X 4K = 32K的數(shù)據(jù)空間,可記錄510X8 = 4080
筆不連續(xù)未使用的儲存空間。 記錄內(nèi)容會因執(zhí)行新增、尋找、刪除及修改(因釋放區(qū)塊所產(chǎn)生的合并,需要修改大小)等操作而變動。在對磁盤進行格式化時,會忽略損毀的區(qū)塊,只在未使用區(qū)塊索引表中記錄正常的區(qū)塊。因此,格式化磁盤時如果沒有損壞的區(qū)塊,則在格式化完成后僅會在未使用區(qū)塊索引表中產(chǎn)生一筆記錄。相對的,格式化磁盤時如果有損壞的區(qū)塊,則在格式化完成后會在未使用區(qū)塊索引表中產(chǎn)生對應(yīng)損壞區(qū)塊的多筆記錄。
Collection物件的User物件識別碼索引表 在Collection物件中,除了屬性本身之外,也包括儲存User物件識別碼的記錄,所述記錄是存放在User物件識別碼索引表中。User物件識別碼索引表(User Object IDTable)可視為Collection物件的數(shù)據(jù),且其記錄了 User物件識別碼。識別碼索引表的增加及減少也是利用上述閾值規(guī)則。以一次一組4個區(qū)塊來看,共占用4X4K二 16K的數(shù)據(jù)空間。 若物件識別碼的長度為32位,則可存放(4096/4) X 4 = 4096個User物件識別碼。若物件識別碼的長度為64位,則可存放(4096/8) X4 = 2048個User物件識別碼。
各種物件存取方法的說明
Root物件 —開始先存放Root物件的屬性區(qū)塊,接下來利用一組區(qū)塊存放整個磁盤邏輯單元的未使用區(qū)塊索引表,再利用一組區(qū)塊存放Partition物件索引表,以下說明Partition物件存取的一些操作。 以新增Partition物件為例,從未使用區(qū)塊索引表取得一筆記錄可以有適當(dāng)數(shù)量的區(qū)塊給Partition物件,其中這些區(qū)塊包括Partition物件的屬性、預(yù)設(shè)使用區(qū)塊數(shù)量的Collection物件索引表以及預(yù)設(shè)使用區(qū)塊數(shù)量的User物件索引表,再加入一筆Partition物件索引到Partition物件索引表中,并且修改Root物件的相關(guān)屬性值。完成Partition物件配置后便可將此記錄的位置往后移,移到已使用的區(qū)塊位置之后。
以移除Partition物件為例,移除Partition物件包括強制性移除與非強制性移除。強制性移除必須將Parti tion物件里所有的Co 11 ection物件與User物件移除,才能移除Partition物件。非強制性移除則與移除一個清空的Partition物件一樣,將Partition物件及其以下的Collection物件及User物件使用的區(qū)塊記錄歸還未使用區(qū)塊索引表,然后從Partition物件索引表將該Partition物件的索引移除,并且修改Root物件的相關(guān)屬性值。 就改變Partition大小來說,只需修改Partition物件的相關(guān)屬性值。
Partition物件 先存放Partition物件的屬性區(qū)塊,利用 一 組區(qū)塊存放Co 11 ection物件索引表與User物件索引表。Collection物件索引表為選擇性的,如果系統(tǒng)選擇不支持使用Collection物件,則不放置Collection物件索引表。有關(guān)Partition物件及其內(nèi)容的存取如圖6所示。 改變Partition大小 只須修改Partition物件的相關(guān)屬性值。 Collection物件存取 Collection物件存取是選擇性的,在格式化時決定要不要支持Collection物件,其存取方式包括新增與移除Collection物件。新增Collection物件是從未使用區(qū)塊索引表取得適當(dāng)大小的區(qū)塊,以存放Collection物件屬性及User物件識別碼索引表(UserObject ID Table),之后加入一筆Collection物件索引到Partition物件的Collection物件索引表中,并修改Partition物件的相關(guān)屬性值。 移除Collection物件是將Collection物件索引從Collection物件索引表中移除,再將Collection物件屬性及User物件識別碼索引表使用的區(qū)塊釋放回Root物件的未使用區(qū)塊索引表中,并修改Partition物件的相關(guān)屬性值。
User物件的存取 User物件的存取包括新增User物件、移除User物件以及改變User物件的數(shù)據(jù)區(qū)塊。 新增User物件是先從Root物件的未使用區(qū)塊索引表取得區(qū)塊,包括給予屬性及數(shù)據(jù)使用的區(qū)塊,再加入一筆User物件索引到Partition物件的User物件索引表中,并修改Partition物件的相關(guān)屬性值。
移除User物件是將User物件屬性及數(shù)據(jù)的區(qū)塊釋放回Root物件的未使用區(qū)塊索引表中,再從Partition物件的User物件索弓|表中將User物件索弓I移除,并修改Partition物件的相關(guān)屬性值。 User物件的數(shù)據(jù)區(qū)塊是將數(shù)據(jù)使用的區(qū)塊記錄在屬性值中,因此當(dāng)數(shù)據(jù)大小有改變時會連帶牽動屬性及未使用區(qū)塊索引表的記錄。 需注意到,Partition物件不是根據(jù)Partition物件索引表產(chǎn)生而是程序建立產(chǎn)生。在產(chǎn)生Partition物件之后,會產(chǎn)生一個Partition的ID索引,這個ID索引會放到Partition物件索引表里。 Collection物件(選擇性(Optional)) Collection物件為選擇性的支持,因此在磁盤格式化過程中可以選擇要不要加入此物件。當(dāng)有支持此物件時,可以新增及刪除User物件的ID索引。因為User物件的ID索引是放在Collection物件的User物件識別碼索引表中,所以索引表的增減也適用上述閾值規(guī)則。 需注意到,Collection物件不是根據(jù)Collection物件索引表產(chǎn)生而是程序建立產(chǎn)生。在產(chǎn)生Collection物件之后,會產(chǎn)生一個Collection的ID索引,這個ID索引會放到Collection物件索引表里。
User物件 User物件為真正存放數(shù)據(jù)的物件類別,如圖7所示,當(dāng)前一組存放物件索引的表格不足時,就會用到一組新的表格。 存取User物件的操作包括新增User物件、刪除User物件以及改變物件數(shù)據(jù)。
新增User物件是先從Root物件的未使用區(qū)塊索引表中取得適當(dāng)大小足夠的空間,以取得一次性的足夠儲存空間為主。如果不能從單一筆記錄取得的足夠的連續(xù)空間,則必須使用多筆記錄的不連續(xù)的空間,計算取得不連續(xù)空間的大小到足夠?qū)懭氪宋锛?shù)據(jù)。接著,修改User物件屬性,然后加入一筆數(shù)據(jù)到Partition物件的User物件索引表中。
刪除User物件是將ID索引從Partition物件的User物件索引表中移除,并將屬性中使用到的區(qū)塊歸還到Root物件的未使用區(qū)塊索引表。從User物件的屬性中可以得知,如果物件屬于某些Collection物件,則必須從Partition物件的Collection物件索引表中去找到對映的Collection物件,并從這些Collection物件的User物件識別碼索引表里移除里面的User物件的ID記錄。 數(shù)據(jù)會因存取而造成空間使用上的改變。如果預(yù)先配置的儲存空間足夠,則直接修改User物件的數(shù)據(jù)長度的屬性即可。如果儲存空間不足,則必須從Root物件的未使用區(qū)塊索引表中請求區(qū)塊來使用。如果因為刪除數(shù)據(jù)而產(chǎn)生多余的區(qū)塊,則歸還到Root物件的未使用區(qū)塊索引表中。 使用In-property data時,如果是數(shù)據(jù)縮減,只會修改User物件的數(shù)據(jù)長度屬性內(nèi)容。如果數(shù)據(jù)長度增加而不足以存放在屬性區(qū)塊中時,則必須向Root物件的未使用區(qū)塊索引表中要求分配未使用的區(qū)塊,并將原有的In-property data數(shù)據(jù)移至被分配的區(qū)塊中。是否支持此屬性可以由格式化時預(yù)設(shè),或者當(dāng)設(shè)定屬性時改變。 以上簡單說明了本發(fā)明實施例的磁盤配置與各物件的功能與使用方式,下文將說明物件導(dǎo)向儲存裝置的磁盤配置方法的實施流程。
14
需注意到,User物件不是根據(jù)User物件索引表產(chǎn)生而是程序建立產(chǎn)生。在產(chǎn)生User物件之后,會產(chǎn)生一個User的ID索引,這個ID索引會放到User物件索引表里。
圖8A是顯示本發(fā)明實施例的物件導(dǎo)向儲存裝置的磁盤配置方法的步驟流程圖。
首先,在初始執(zhí)行磁盤配置時,新增一個Root物件(步驟S801),即在一磁盤中配置一組區(qū)塊,其分別儲存Root物件的屬性、未使用區(qū)塊索引表(Free Block Table)以及Root物件用來索引Partition物件的位置的Partition物件索引表(步驟S802),如圖9所示。 需注意到,在配置給該Root物件的該組區(qū)塊中,包括給Partition物件屬性使用的一個區(qū)塊,給未使用區(qū)塊索引表的一或一個以上的區(qū)塊,給Partition物件索引表使用的一或一個以上的區(qū)塊。上述區(qū)塊是根據(jù)Root物件屬性值而定,而Root物件的屬性是在磁盤初始格式化之后就決定,也就是利用格式化參數(shù)或者預(yù)設(shè)值來決定上述區(qū)塊。
當(dāng)新增一個Partition物件時(步驟S803),在該磁盤中另外配置一組區(qū)塊,其分別儲存第1Partition物件的屬性、Partition物件用來索引Collection物件位置的Collection物件索引表以及Partition物件用來索引User物件位置的User物件索引表(步驟S804),例如圖10所示。此時,Partition物件索引表的內(nèi)容如圖ll所示,其中第1分割區(qū)在第IO個區(qū)塊位置。 需注意到,在配置給該Partition物件的該組區(qū)塊中,包括給Partition物件屬性使用的一個區(qū)塊,給Collection物件索引表使用的一個或一個以上的區(qū)塊,給User物件索引表使用的一個或一個以上的區(qū)塊。上述區(qū)塊是根據(jù)Root物件屬性值而定,而Root物件的屬性是在磁盤初始格式化之后就決定,也就是利用格式化參數(shù)或者預(yù)設(shè)值來決定上述區(qū)塊。 當(dāng)新增一個Collection物件時(步驟S805),在該磁盤中另外配置一組區(qū)塊,其分別儲存第lCollection物件的屬性以及Collection物件用來索弓l User ID的User物件識別碼索引表(步驟S806),如圖12所示,其中User物件識別碼索引表是用以得知Collection物件包括哪些User物件。 需注意到,Collection物件存取是選擇性的。在配置給該Collection物件的該組區(qū)塊中,包括給Collection物件屬性使用的一個區(qū)塊,區(qū)塊給User物件識別碼索引表使用的一或一個以上的區(qū)塊。上述區(qū)塊是根據(jù)Root物件屬性值而定,而Root物件的屬性是在磁盤初始格式化之后就決定,也就是利用格式化參數(shù)或者預(yù)設(shè)值來決定上述區(qū)塊。
若再新增一個Collection物件,即在該磁盤中另外配置一組區(qū)塊,其分別儲存第2Collection物件的屬性以及Collection物件用來索引User ID的User物件識別碼索引表,如圖13所示,其中User物件識別碼索引表是用以得知Collection物件包括哪些User物件。 當(dāng)新增一個User物件時(步驟S807),在該磁盤中另外配置一組區(qū)塊,其分別儲存User物件的屬性以及User物件的數(shù)據(jù)(Data)(步驟S808),如圖14所示。需注意到,在配置給該User物件的該組區(qū)塊中,包括給User物件屬性使用的一個區(qū)塊,以及給User物件的數(shù)據(jù)區(qū)塊使用的零或零個以上的區(qū)塊。屬性區(qū)塊是固定配置,數(shù)據(jù)區(qū)塊則根據(jù)應(yīng)用程序的需要可事先配置(可不必儲存數(shù)據(jù))或者動態(tài)延伸。數(shù)據(jù)區(qū)塊的位置記錄在User物件屬性中。
15
需注意到,Root物件可以產(chǎn)生不限數(shù)量的Partition物件,Partition物件可以產(chǎn)生不限數(shù)量的Collection物件及User物件。 以下進一步說明Partition物件、Collection物件與User物件的新增與刪除操作流程實施例。 圖8B是顯示本發(fā)明實施例的新增與刪除Partition物件的步驟流程圖。
首先,判斷新增或刪除Partition物件(步驟S811)。若欲新增Partition物件,則在一磁盤中的配置一組區(qū)塊,其分別儲存Partition物件的屬性、Partition物件用來索引Collection物件位置的Collection物件索引表以及Partition物件用來索引User物件的位置的User物件索引表,并且修改Root物件屬性以及修改Root物件的未使用區(qū)塊索引表(步驟S812)。若欲刪除Partition物件,則判斷Partition物件是否含有Collection或User物件(步驟S813)。若Partition物件含有Collection或User物件,則刪除所有Collection物件及User物件(步驟S814)。若Partition物件未含有Collection或User物件,則修改Root物件屬性以及修改Root物件的未使用區(qū)塊索引表(步驟S815)。
圖8C是顯示本發(fā)明實施例的新增與刪除Collection物件的步驟流程圖。
首先,判斷新增或刪除Collection物件(步驟S821)。若欲新增Collection物件,則在一磁盤中的配置一組區(qū)塊,其分別儲存Collection物件的屬性以及Collection物件用來索引User物件識別碼的User物件識別碼索引表,并且修改Partition物件屬性及Partition物件的Collection物件索引表,以及修改Root物件屬性及Root物件的未使用區(qū)塊索引表(步驟S822)。若欲刪除Collection物件,則刪除Collection物件及User識別碼索引表(步驟S823),并且修改Partition物件屬性及Partition物件的Collection物件索引表,修改Root物件屬性,以及修改Root物件的未使用區(qū)塊索引表(步驟S824)。
圖8D是顯示本發(fā)明實施例的新增與刪除User物件的步驟流程圖。
首先,判斷新增或刪除User物件(步驟S831)。若欲新增User物件,則在一磁盤中的配置一組區(qū)塊,其分別儲存User物件的屬性、User物件儲存數(shù)據(jù)的空間,并且修改Partition物件屬性及Partition物件的User物件索引表,修改Root物件屬性,以及修改Root物件的未使用區(qū)塊索引表(步驟S832)。若欲刪除User物件,則判斷User物件是否屬于Collection物件(步驟S833)。若User物件屬于Collection物件,則刪除所有Collection物件中含有User物件識別碼的索引(步驟S834)。若User物件不屬于Collection物件,則修改Partition物件屬性與Partition物件的User物件索引表,修改Root物件屬性,以及修改Root物件的未使用區(qū)塊索引表(步驟S835)。
如上所述,藉由本發(fā)明實施例的物件導(dǎo)向儲存裝置的磁盤配置方法,當(dāng)物件管理裝置無法使用或找不到物件時,可以從儲存裝置中直接存取,而當(dāng)儲存裝置無法隨著物件管理裝置移植時,可以不需要物件管理裝置,而可以從儲存裝置中直接索引與存取數(shù)據(jù)。
由于索引表是用于存取物件,因此可以利用數(shù)據(jù)快取的方式來存取藉由本發(fā)明的磁盤配置所實作而成的系統(tǒng)。索引表所占的記體空間不大,當(dāng)讀取索引表中的數(shù)據(jù)時,以一次讀取一整組區(qū)塊到存儲器中,并預(yù)先掃描并分析這組區(qū)塊,在掃描時同時記錄在索引表中未使用記錄的位置。在索引表中產(chǎn)生未使用記錄的位置的原因在于索引表在存取記錄時,會有刪除記錄的操作,因而在索引表中產(chǎn)生記錄缺口 (Record Holes)(即,未使用的記錄)。
若發(fā)現(xiàn)在快取的索引表中有未使用記錄的位置,則先以填入這些記錄缺口為優(yōu)先 (即,新增操作),若沒有時就附加在索引表中的最后記錄之后面。當(dāng)找到欲刪除的記錄時, 將記錄的內(nèi)容全設(shè)為O(表示為NULL),則該記錄即被刪除。在索引表中尋找記錄的速度是 影響磁盤配置的關(guān)鍵,可利用循序搜尋(Sequential Search)或其它搜尋方式來實現(xiàn)。
排序的數(shù)據(jù)可加快記錄的尋找,而記錄排序的方式是依照各個索引表的功能性, 并且根據(jù)不同的關(guān)鍵(Key)值來排序。。 以從頭開始分配連續(xù)的區(qū)塊為主,如遇到文檔變更而需要額外的儲存區(qū)塊,但是 無法分配后面的連續(xù)區(qū)塊,則新分配的區(qū)塊以最接近的區(qū)塊為原則,并且以不連續(xù)空間方 式儲存。當(dāng)遇到大型的新文檔時,則以分配連續(xù)的空間為優(yōu)先,或者以能取得的最多的連續(xù) 空間為主。對未使用區(qū)塊可執(zhí)行新增、列表及刪除操作。 尋找索引表的操作可利用相關(guān)的演算法來執(zhí)行。每一索引表所分配的一組區(qū)塊數(shù) 量皆可以參數(shù)化方式來訂定。可以提供工具將表格最佳化處理,以縮短尋找時間,例如將表 格排序,并且以不產(chǎn)生更多不連續(xù)空間為原則。
綜上所述,本發(fā)明的實施例提供 在硬盤起始規(guī)畫方面,包括Root物件的metadata,傳統(tǒng)文檔系統(tǒng)配置稱為超級區(qū) 塊(Superblock)、Partition物件索引表以及未使用區(qū)塊索引表。在連續(xù)空間取得方面,由 單一的未使用區(qū)塊索引表取得,其為extent-based。在物件屬性存取方面,只要取得物件位 置,即可直接存取屬性與物件索引表,直接索引分類各物件。在數(shù)據(jù)存取方面,由屬性內(nèi)取 得數(shù)據(jù)或由區(qū)塊串列的記錄讀取。在現(xiàn)有實作的支持方面,實作完成Li皿x上OSD模擬文 檔系統(tǒng)的核心層模塊。 在物件索引方面,以集中的記錄形成的表格,可一次性的讀取所有的索引數(shù)據(jù)形 成快取。并輔以搜尋演算法。在物件屬性方面,metadata合并物件屬性連同數(shù)據(jù)部份可形成 一連續(xù)記錄。還可自訂屬性。在物件的階層關(guān)系方面,清楚的階層式配置。支持所有的物件。 在操作系統(tǒng)的支持方面,完全搭配系統(tǒng)緩沖管理的需求做成核心模塊(Kernel Module),以 文檔方式展現(xiàn)或另成一獨立存取模式。在硬體整合方面,利用簡單的配置設(shè)計,可單獨設(shè)計 IC晶片存取物件,以達成OSD所要求的空間管理等功能一并整合至儲存裝置中。因表格皆 可快取,數(shù)據(jù)直接定位。 本發(fā)明的方法,或特定型態(tài)或其部份,可以以程序碼的型態(tài)存在。程序碼可以包含 于實體媒體,如軟盤、光盤片、硬盤、或是任何其他機器可讀取(如計算機可讀取)儲存媒 體,其中,當(dāng)程序碼被機器,如計算機載入且執(zhí)行時,此機器變成用以參與本發(fā)明的裝置。程 序碼也可以通過一些傳送媒體,如電線或電纜、光纖、或是任何傳輸型態(tài)進行傳送,其中,當(dāng) 程序碼被機器,如計算機接收、載入且執(zhí)行時,此機器變成用以參與本發(fā)明的裝置。當(dāng)在一 般用途處理單元實作時,程序碼結(jié)合處理單元提供一操作類似于應(yīng)用特定邏輯電路的獨特 裝置。 雖然本發(fā)明已以較佳實施例揭示如上,然其并非用以限定本發(fā)明,本領(lǐng)域的技術(shù) 人員在不脫離本發(fā)明的精神和范圍的前提下可作各種的更動與潤飾,因此本發(fā)明的保護范 圍以本發(fā)明的權(quán)利要求為準(zhǔn)。
1權(quán)利要求
一種物件導(dǎo)向儲存裝置的磁盤配置方法,其適用于一磁盤,包括下列步驟初始化該磁盤,且新增一根(Root)物件;當(dāng)新增該Root物件時,在該磁盤中配置一或多組區(qū)塊,其分別儲存該Root物件的屬性、一未使用區(qū)塊索引表以及一分割區(qū)(Partition)物件索引表,其中該Root物件根據(jù)該Partition物件索引表來索引一Partition物件的位置;新增一Partition物件;當(dāng)新增該Partition物件時,在該磁盤中配置一或多組區(qū)塊,其分別儲存該Partition物件的屬性、一收集(Collection)物件索引表以及一使用者(User)物件索引表,其中該Partition物件根據(jù)該Collection物件索引表來索引Collection物件的位置以及根據(jù)該User物件索引表來索引一User物件的位置;新增一User物件;以及當(dāng)新增該User物件時,在該磁盤中配置一組或多組區(qū)塊,其分別儲存該User物件的屬性以及該User物件的數(shù)據(jù)。
2. 如權(quán)利要求l所述的物件導(dǎo)向儲存裝置的磁盤配置方法,其還包括新增一 Collection物件,并且在該磁盤中配置一組或多組區(qū)塊,其分別儲存該Collection物件的 屬性以及一 User物件識別碼索引表,其中該Collection物件根據(jù)該User物件識別碼索引 表來索引一User識別碼。
3. 如權(quán)利要求1所述的物件導(dǎo)向儲存裝置的磁盤配置方法,其中,根據(jù)該Root物件的 該Partition物件索引表取得上述Partition物件。
4. 如權(quán)利要求l所述的物件導(dǎo)向儲存裝置的磁盤配置方法,其中,根據(jù)該Partition物 件的該Collection物件索引表取得上述Collection物件。
5. 如權(quán)利要求l所述的物件導(dǎo)向儲存裝置的磁盤配置方法,其中,根據(jù)該Partition物 件的該User物件索引表取得上述User物件。
6. 如權(quán)利要求l所述的物件導(dǎo)向儲存裝置的磁盤配置方法,其中,該Partition物件索 引表、該Collection物件索引表以及該User物件索引表為一或多組區(qū)塊所組成并且用以 分別存放Partition物件識別碼、Collection物件識別碼與User物件識別碼,以及分別存 放上述Partition物件、Collection物件、與User物件的起始位置。
7. 如權(quán)利要求1所述的物件導(dǎo)向儲存裝置的磁盤配置方法,其中,該未使用區(qū)塊索引 表內(nèi)所存放的每一筆記錄代表一個連續(xù)的未使用的空間,而每一筆記錄的格式表示為位置 加上連續(xù)區(qū)塊長度。
8. 如權(quán)利要求2所述的物件導(dǎo)向儲存裝置的磁盤配置方法,其中,該Collection物件 的該User物件識別碼索引表可直接索引該User物件的識別碼。
9. 如權(quán)利要求8所述的物件導(dǎo)向儲存裝置的磁盤配置方法,其中,當(dāng)該User物件識別 碼在該User物件寫入該磁盤且該User物件屬于該Collection物件時,則將該User物件 識別碼加入該Collection物件的該User物件識別碼索引表。
10. 如權(quán)利要求l所述的物件導(dǎo)向儲存裝置的磁盤配置方法,其中,該Root物件的屬性 可包括記錄該磁盤中的所有區(qū)塊使用的信息、該屬性使用的區(qū)塊數(shù)量、與各物件的索引表 相關(guān)的記錄、一定位區(qū)塊的長度、一物件識別碼的長度以及相關(guān)于該物件識別碼的計數(shù)器。
11. 如權(quán)利要求1所述的物件導(dǎo)向儲存裝置的磁盤配置方法,其中,該Partition物件的屬性可包括記錄與該Collection物件索引表以及該User物件索引表相關(guān)的記錄,包括 起始位置及每次配置表格的大小。
12. 如權(quán)利要求1所述的物件導(dǎo)向儲存裝置的磁盤配置方法,其中,該Collection物件 的屬性可包括記錄該User物件索引表的大小及位置。
13. 如權(quán)利要求l所述的物件導(dǎo)向儲存裝置的磁盤配置方法,其中,該User物件的數(shù)據(jù) 可當(dāng)成屬性內(nèi)數(shù)據(jù)(In-property Data)來儲存。
14. 如權(quán)利要求13所述的物件導(dǎo)向儲存裝置的磁盤配置方法,其中,若該數(shù)據(jù)不是以 In-property Data的形式存在,則該User物件記錄該數(shù)據(jù)是存在于一額外的區(qū)塊串列中, 其中該區(qū)塊串列由多個連續(xù)記錄組成,每一個記錄存放數(shù)據(jù)區(qū)塊的位置及其長度。
15. 如權(quán)利要求1所述的物件導(dǎo)向儲存裝置的磁盤配置方法,其中,每一物件索引表使 用預(yù)設(shè)數(shù)量的區(qū)塊,該預(yù)設(shè)數(shù)量記載在Root物件的屬性中。
16. 如權(quán)利要求1所述的物件導(dǎo)向儲存裝置的磁盤配置方法,其中,當(dāng)區(qū)塊定位使用一 定量字節(jié),則每一組區(qū)塊的第一區(qū)塊的前面保留兩個定量的字節(jié),其中第一個定量字節(jié)為 前一組區(qū)塊的起始位置(SP),用以記錄前一組區(qū)塊的位置,而第二個定量字節(jié)為下一組區(qū) 塊的起始位置(SN),用以記錄下一組區(qū)塊的位置。
17. 如權(quán)利要求16所述的物件導(dǎo)向儲存裝置的磁盤配置方法,其中,當(dāng)只有一組區(qū) 塊時,則該組區(qū)塊的SP及SN都表示為NULL,而當(dāng)有多組區(qū)塊,則第一組區(qū)塊的SP表示為 NULL,而最后一組區(qū)塊的SN表示為NULL。
18. 如權(quán)利要求16所述的物件導(dǎo)向儲存裝置的磁盤配置方法,其中,每一該物件索引表內(nèi)部所存放的每一筆記錄代表一個物件索引,而該物件索引的格式為物件識別碼加上位置,則一組區(qū)塊的物件索引表可以記載的索引數(shù)量表示為力口^Ai^a右P(納敝且 一組區(qū)塊大小-5"尸-SV一組區(qū)塊可記錄索引的數(shù)量=-^〕, v &-。索引長度
19. 如權(quán)利要求1所述的物件導(dǎo)向儲存裝置的磁盤配置方法,其中,可對上述每一物件 執(zhí)行新增、移除與改變等操作。
20. 如權(quán)利要求19所述的物件導(dǎo)向儲存裝置的磁盤配置方法,其中,新增任一 Partition物件,其還包括下列步驟在該磁盤中的配置一組區(qū)塊,其分別儲存該Partition物件的屬性、該Partition物件 用來索引一 Collection物件位置的一 Collection物件索引表以及該Partition物件用來 索引一 User物件位置的一 User物件索引表;以及修改該Root物件屬性以及該Root物件的該未使用區(qū)塊索引表。
21. 如權(quán)利要求20所述的物件導(dǎo)向儲存裝置的磁盤配置方法,刪除任一 Partition物 件,其還包括下列步驟 判斷該Partition物件是否含有至少一 Collection物件或一 User物件;若該Partition物件含有至少一 Collection物件或一 User物件,則刪除所有Collection物件及User物件;以及若該Partition物件未含有任何Collection物件或User物件,則修改該Root物件屬性以及該Root物件的該未使用區(qū)塊索引表。
22. 如權(quán)利要求21所述的物件導(dǎo)向儲存裝置的磁盤配置方法,其中,新增任一Collection物件,其還包括下列步驟在該磁盤中的配置一組區(qū)塊,其分別儲存該Collection物件的屬性以及該 Collection物件用來索引一 User物件識別碼的一 User物件識別碼索引表;以及修改該Partition物件的屬性、該Partition物件的Collection物件索引表、該Root 物件屬性以及該Root物件的該未使用區(qū)塊索引表。
23. 如權(quán)利要求22所述的物件導(dǎo)向儲存裝置的磁盤配置方法,其中,刪除任一 Collection物件,其還包括下列步驟刪除該Collection物件以及該User識別碼索引表;以及修改該Partition物件屬性、該Partition物件的該Collection物件索引表、修改 Root物件屬性以及該Root物件的該未使用區(qū)塊索引表。
24. 如權(quán)利要求20所述的物件導(dǎo)向儲存裝置的磁盤配置方法,其中,新增任一 User物 件,其還包括下列步驟在該磁盤中的配置一組區(qū)塊,其分別儲存該User物件的屬性與該User物件儲存數(shù)據(jù) 的空間;以及修改該Partition物件屬性、該Partition物件的該User物件索引表、該Root物件屬 性以及該Root物件的該未使用區(qū)塊索引表。
25. 如權(quán)利要求24所述的物件導(dǎo)向儲存裝置的磁盤配置方法,其中,刪除任一 User物 件,其還包括下列步驟判斷該User物件是否屬于該Collection物件;若該User物件屬于該Collection物件,則刪除所有Collection物件中含有User物 件識別碼的索引;若該User物件不屬于該Collection物件,則修改該Partition物件屬性與該 Partition物件的該User物件索引表、該Root物件屬性以及該Root物件的該未使用區(qū)塊 索引表。
26. —種計算機可記錄媒體,用以儲存一計算機程序,上述計算機程序包括復(fù)數(shù)程序碼 片段,其用以載入至一計算機系統(tǒng)中并且使得上述計算機系統(tǒng)執(zhí)行一種物件導(dǎo)向儲存裝置 的磁盤配置方法,包括初始化該磁盤,并且新增一個根(Root)物件;當(dāng)新增該Root物件時,在該磁盤中配置第一組區(qū)塊,其分別儲存該Root物件的屬 性、一未使用區(qū)塊索引表以及一分割區(qū)(Partition)物件索引表,其中該Root根據(jù)該 Partition物件索引表來索引一 Partition物件的位置;新增一 Partition物件;當(dāng)新增該Partition物件時,在該磁盤中配置第二組區(qū)塊,其分別儲存該Partition 物件的屬性、一收集(Collection)物件索引表以及一使用者(User)物件索引表,其中該 Partition物件根據(jù)該Collection物件索引表來索引Collection物件的位置以集根據(jù)該 User物件索引表來索引一 User物件的位置;新增一 User物件;以及當(dāng)新增該User物件時,在該磁盤中配置第四組區(qū)塊,其分別儲存該User物件的屬性以 及該User物件的數(shù)據(jù)。
27. 如權(quán)利要求26所述的計算機可記錄媒體,其還包括新增一 Collection物件,并且 在該磁盤中配置第三組區(qū)塊,其分別儲存該Collection物件的屬性以及一 User物件識別 碼索引表,其中該Collection物件根據(jù)該User物件識別碼索引表來索引一 User識別碼。
28. 如權(quán)利要求26所述的計算機可記錄媒體,其中,根據(jù)該Root物件的該Partition 物件索引表可得知包括哪些Partition物件。
29. 如權(quán)利要求26所述的計算機可記錄媒體,其中,根據(jù)該Partition物件的該 Collection物件索引表可得知包括哪些Collection物件。
30. 如權(quán)利要求26所述的計算機可記錄媒體,其中,根據(jù)該Partition物件的該User 物件索引表可得知包括哪些User物件。
31. 如權(quán)利要求26所述的計算機可記錄媒體,其中,所述物件索引表為一或多組區(qū)塊 所組成并且用以存放物件識別碼,其中各組區(qū)塊記錄其前后區(qū)塊的位置以供該Partition 物件索引表、Co 11 ection物件索引表以及User物件索引表參照使用。
32. 如權(quán)利要求26所述的計算機可記錄媒體,其中,該未使用區(qū)塊索引表內(nèi)所存放的 每一筆記錄代表一個連續(xù)的未使用的空間,而每一筆記錄的格式表示為位置加上連續(xù)區(qū)塊 長度。
33. 如權(quán)利要求26所述的計算機可記錄媒體,其中,該Collection物件的該User物件 索引表可直接索引該User物件的識別碼。
34. 如權(quán)利要求33所述的計算機可記錄媒體,其中,當(dāng)該User物件識別碼在該User 物件寫入該磁盤且該User物件屬于該Collection物件時,則將該User物件識別碼加入該 Collection物件的該User物件索引表。
35. 如權(quán)利要求26所述的計算機可記錄媒體,其中,該Root物件的屬性記錄該磁盤中 的所有區(qū)塊使用的信息、該屬性使用的區(qū)塊數(shù)量、與各物件的索引表相關(guān)的記錄、一定位區(qū) 塊的長度、一物件識別碼的長度以及相關(guān)于該物件識別碼的計數(shù)器。
36. 如權(quán)利要求26所述的計算機可記錄媒體,其中,該Partition物件的屬性記錄與 該Collection物件索引表以及該User物件索引表相關(guān)的記錄,包括起始位置及每次配置 表格的大小。
37. 如權(quán)利要求26所述的計算機可記錄媒體,其中,該Collection物件的屬性記錄該 User物件索引表的大小及位置。
38. 如權(quán)利要求26所述的計算機可記錄媒體,其中,該User物件的數(shù)據(jù)是當(dāng)成屬性來 儲存。
39. 如權(quán)利要求38所述的計算機可記錄媒體,其中,若該數(shù)據(jù)不是以屬性內(nèi)數(shù)據(jù) (In-property Data)的形式存在,則該User物件記錄該數(shù)據(jù)是存在于一額外的區(qū)塊串列 中,其中該區(qū)塊串列由多個連續(xù)記錄組成,每一個記錄存放數(shù)據(jù)區(qū)塊的位置及其長度。
40. 如權(quán)利要求26所述的計算機可記錄媒體,其中,每一物件索引表使用預(yù)設(shè)數(shù)量的 區(qū)塊,該預(yù)設(shè)數(shù)量記載在Root物件的屬性中。
41. 如權(quán)利要求26所述的計算機可記錄媒體,其中,當(dāng)區(qū)塊定位使用一定量字節(jié),則 每一組區(qū)塊的第一區(qū)塊的前面保留兩個定量的字節(jié),其中第一個定量字節(jié)為前一組區(qū)塊的 起始位置(SP),用以記錄前一組區(qū)塊的位置,而第二個定量字節(jié)為下一組區(qū)塊的起始位置 (SN),用以記錄下一組區(qū)塊的位置。
42. 如權(quán)利要求26所述的計算機可記錄媒體,其中,當(dāng)只有一組區(qū)塊時,則該組區(qū)塊的 SP及SN都表示為NULL,而當(dāng)有多組區(qū)塊,則第一組區(qū)塊的SP表示為NULL,而最后一組區(qū)塊 的SN表示為NULL。
43. 如權(quán)利要求26所述的計算機可記錄媒體,其中,每一物件索引表內(nèi)部所存放的每 一筆記錄代表一個物件索引,而該物件索引的格式為物件識別碼加上位置,則一組區(qū)塊的 物件索引表可以記載的索引數(shù)量表示為-組區(qū)塊可記錄躬i的數(shù)量=一組區(qū)=;"。索引長度
44. 如權(quán)利要求26所述的計算機可記錄媒體,其中,可對上述每一物件執(zhí)行新增、移除 與改變等操作。
45. —種物件導(dǎo)向儲存裝置的磁盤配置方法,包括下列步驟 對一磁盤進行磁盤配置,使得該磁盤具有一根(Root)物件,其更提供Root物件屬性、一未使用區(qū)塊索引表以及該Root物件用 來索引一分割區(qū)(Partition)物件位置的一 Partition物件索引表;至少一 Partition物件,其更提供Partition物件屬性、該Partition物件用來索引一 收集(Collection)物件位置的一 Collection物件索引表以及該Partition物件用來索引 一使用者(User)物件位置的一User物件索引表;以及至少一 User物件,其中該User物件更提供User物件屬性以及User物件數(shù)據(jù)。
46. 如權(quán)利要求26所述的計算機可記錄媒體,其還包括至少一 Collection物件,其中 該Collection物件更提供Collection物件屬性以及該Collection物件用來索引一 User 識別碼的一 User物件識別碼索引表。
全文摘要
一種物件導(dǎo)向儲存裝置的磁盤配置方法。初始化一磁盤,并且新增一個根(Root)物件,同時在該磁盤中配置一組區(qū)塊以分別儲存該Root物件的屬性、一未使用區(qū)塊索引表以及一分割區(qū)(Partition)物件索引表。當(dāng)新增一Partition物件時,在該磁盤中配置一組區(qū)塊以分別儲存該Partition物件的屬性、一收集(Collection)物件索引表以及一使用者(User)物件索引表,其中該Partition物件根據(jù)該Collection物件索引表來索引Collection物件的位置以及根據(jù)該User物件索引表來索引一User物件的位置。當(dāng)新增一Collection物件或一User物件時,在該磁盤中配置二組區(qū)塊以分別儲存對應(yīng)的數(shù)據(jù)。
文檔編號G06F3/06GK101751390SQ20081017800
公開日2010年6月23日 申請日期2008年12月8日 優(yōu)先權(quán)日2008年12月8日
發(fā)明者林旭政 申請人:財團法人工業(yè)技術(shù)研究院