專利名稱:利用至少一個數(shù)據(jù)存儲器實現(xiàn)存儲容量分配及管理方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
背景技術(shù):
由于對數(shù)據(jù)處理或數(shù)據(jù)計算設(shè)備的數(shù)據(jù)存儲需求的增長,用戶希望增加一個或更多額外的數(shù)據(jù)存儲驅(qū)動器。不幸地,增加額外的數(shù)據(jù)存儲驅(qū)動器是一艱巨的任務(wù)。用戶需要拆卸,配置,及重新連接一個或多個數(shù)據(jù)存儲驅(qū)動器,以容納額外的數(shù)據(jù)存儲驅(qū)動器。而且,增加的數(shù)據(jù)存儲驅(qū)動器需要通過一系列冗長的步驟而被手動配置。某些情況下,還需要執(zhí)行一個或多個應(yīng)用軟件以對增加的存儲驅(qū)動器充分地分區(qū)。而且,在多數(shù)情況下,用戶希望通過鏡像和分段存儲驅(qū)動器以支持增加的冗余度及吞吐量。然而,這個任務(wù)通常包括多具復(fù)雜的步驟及會很難執(zhí)行。因此,隨著用戶數(shù)據(jù)存儲需求的增加,能夠快速有效地增加數(shù)據(jù)存儲容量以迎合用戶需求變得越來越重要。
通過結(jié)合附圖的本申請的其余部分而對比本發(fā)明的一些特征的這個系統(tǒng),現(xiàn)有的和傳統(tǒng)的實現(xiàn)方法的局限性和弊端是顯而易見的。
發(fā)明內(nèi)容
本發(fā)明的特征結(jié)合至少一種硬盤驅(qū)動器容量分配及管理的方法及系統(tǒng)。本發(fā)明的各種特征允許利用一個或多個硬盤驅(qū)動器的某些部分或某些扇區(qū)構(gòu)成一個或多個數(shù)據(jù)庫。本發(fā)明的上述特征與之后的至少一個附圖結(jié)合而被充分地揭示及描述,在權(quán)利要求中給出了更完整的描述。
根據(jù)本發(fā)明的一個特征,提出一種利用一個或多個數(shù)據(jù)存儲驅(qū)動器實現(xiàn)數(shù)據(jù)庫的方法,包括第一,建立一第一分區(qū)表和一第二分區(qū)表,所述第一分區(qū)表是所述第二分區(qū)表的鏡像,所述第一和/或第二分區(qū)表規(guī)定了數(shù)據(jù)存儲驅(qū)動器中一個或多個分區(qū)的位置和大小,所述數(shù)據(jù)驅(qū)動器是數(shù)據(jù)存儲設(shè)備的所述一個或多個數(shù)據(jù)存儲器中的一個;及第二,生成一第一數(shù)據(jù)庫信息塊和一第二數(shù)據(jù)庫信息塊,所述第一數(shù)據(jù)庫信息塊是所述第二數(shù)據(jù)庫信息塊的鏡像,所述第一或第二數(shù)據(jù)庫信息塊用于識別及連接一個或多個分區(qū),所述第一和/或第二數(shù)據(jù)庫信息塊存儲于所述一個或多個數(shù)據(jù)存儲驅(qū)動器的每個所述分區(qū)內(nèi)。
優(yōu)選地,所述方法進一步包括識別所述一個或多個分區(qū)內(nèi)至少一個或多個程序塊及窗格;及連接所述一個或多個程序塊及窗格以形成所述數(shù)據(jù)庫。
優(yōu)選地,所述存儲驅(qū)動器包括硬盤驅(qū)動器。
根據(jù)本發(fā)明的另一個特征,提供了一種利用一個或多個數(shù)據(jù)存儲驅(qū)動器調(diào)整數(shù)據(jù)庫分區(qū)大小的方法,包括首先,生成一第一數(shù)據(jù)庫信息塊和一第二數(shù)據(jù)庫信息塊,所述第一和第二數(shù)據(jù)庫信息塊位于每個分區(qū)的起始端,所述第一和第二數(shù)據(jù)庫信息塊用于識別所述分區(qū)。
優(yōu)選地,所述方法進一步包括其次,在所述每一個第一和第二數(shù)據(jù)庫信息塊內(nèi)生成一用于存儲第一值的第一字段;及在所述第一和第二數(shù)據(jù)庫信息塊內(nèi)利用所述第一值反向測量所述分區(qū)大小調(diào)整的變化量。
優(yōu)選地,所述方法進一步包括第三,在每一個所述第一和第二數(shù)據(jù)庫信息塊內(nèi)生成一用于存儲第二值的第二字段;在所述第一和第二數(shù)據(jù)庫信息塊內(nèi)利用所述第二值正向測量所述分區(qū)大小調(diào)整的變化量。
優(yōu)選地,所述方法進一步包括第四,生成一用于存儲第三值的第三字段,所述第三值指示所述分區(qū)調(diào)整前的大??;及第五,生成一用于存儲第四值的第四字段,所述第四值指示完成調(diào)整后所述分區(qū)的大小。
優(yōu)選地,該方法進一步包括在每一個所述第一和第二數(shù)據(jù)庫信息塊內(nèi)生成存儲第一指示符的第一字段;及利用位于所述第一和第二數(shù)據(jù)庫信息塊內(nèi)的第一指示符前向測量所示調(diào)整大小的測量所述分區(qū)大小調(diào)整的變化量。
優(yōu)選地,所述方法進一步包括第三,生成一能夠存儲第二指示符的第二字段,所述第二指示符指示所述分區(qū)被調(diào)整大小之前的大??;及第四,產(chǎn)生一能夠存儲第三指示符的第三字段,所述第三指示符指示所述分區(qū)被調(diào)整大小之后的大小。
根據(jù)本發(fā)明的一個特征,提供了一種利用數(shù)據(jù)存儲系統(tǒng)實現(xiàn)數(shù)據(jù)庫的方法,所述數(shù)據(jù)存儲系統(tǒng)包括至少一個數(shù)據(jù)存儲驅(qū)動器。所述方法包括為每一個所述存儲驅(qū)動器建立一第一分區(qū)表和一第二分區(qū)表,所述第一分區(qū)表和第二分區(qū)表彼此為鏡像;優(yōu)選地,所述第一和第二分區(qū)表中的至少一個分區(qū)表為所述數(shù)據(jù)庫的下一分區(qū)提供位置;優(yōu)選地,如果所述第一或第二分區(qū)表中的一個是激活的,在或者所述第一或者所述第二分區(qū)表的未激活的分區(qū)表上執(zhí)行所述分區(qū)表的更新。
根據(jù)本發(fā)明的一個特征的,提供了一種包括至少一個在數(shù)據(jù)存儲驅(qū)動器的數(shù)據(jù)存儲設(shè)備內(nèi)實現(xiàn)數(shù)據(jù)庫的方法,所述方法包括利用所述一個或多個數(shù)據(jù)存儲驅(qū)動器分配存儲容量;利用所述一個或多個數(shù)據(jù)存儲驅(qū)動器對所述數(shù)據(jù)庫進行數(shù)據(jù)分段;利用所述一個或多個數(shù)據(jù)存儲驅(qū)動器對所述數(shù)據(jù)庫進行數(shù)據(jù)鏡像;優(yōu)選地,所述數(shù)據(jù)存儲驅(qū)動器包括硬盤驅(qū)動器。
根據(jù)本發(fā)明的一個特征,提供了一種利用至少一個數(shù)據(jù)存儲驅(qū)動器為數(shù)據(jù)庫增加分區(qū)的方法,其包括第一,建立一第一數(shù)據(jù)庫信息塊和一第二數(shù)據(jù)庫信息塊,所述第一和第二數(shù)據(jù)庫信息塊位于每個分區(qū)的起始端,用于識別所述分區(qū);第二,在每個所述第一和第二數(shù)據(jù)庫信息塊內(nèi)生成一存儲第一值的第一字段;第三,一第二字段用于存儲第二值,所述第二值指示所述分區(qū)增加前的大??;
第四,生成一存儲第三值的第三字段,所述第三值指示所述分區(qū)增加后的大小。
根據(jù)本發(fā)明的一個特征,提供了一種利用一個或多個數(shù)據(jù)存儲驅(qū)動器而實現(xiàn)數(shù)據(jù)庫的系統(tǒng),其包括一存儲器;一固化在所述存儲器內(nèi)的軟件;及一執(zhí)行所述軟件的處理器,通過執(zhí)行所述軟件建立一第一分區(qū)表和一第二分區(qū)表,所述第一分區(qū)表是所述第二分區(qū)表的鏡像,所述第一和/或第二分區(qū)表提供所述至少一個數(shù)據(jù)存儲器的至少一個分區(qū)的位置和大小信息。
優(yōu)選地,所述執(zhí)行能夠生成一第一數(shù)據(jù)庫信息塊及一第二數(shù)據(jù)庫信息塊,所述第一和第二數(shù)據(jù)庫信息塊位于所述一個或多個分區(qū)的每個分區(qū)的起始端,所述第二和第二數(shù)據(jù)庫信息塊用于識別所述一個或多個數(shù)據(jù)存儲驅(qū)動器的一個或多個分區(qū)。
所述一個或多個數(shù)據(jù)存儲驅(qū)動器包括硬盤驅(qū)動器。
從下述的描述及附圖中,本發(fā)明的這些及其它優(yōu)點、特征及新穎性同具體實施例的描述會被充分地理解。
圖1是本發(fā)明一實施例中使用網(wǎng)絡(luò)附加存儲設(shè)備(NAS)的典型系統(tǒng)結(jié)構(gòu)圖;圖2是本發(fā)明一實施例的網(wǎng)絡(luò)附加存儲設(shè)備的結(jié)構(gòu)方框圖;圖3是本發(fā)明一實施例的NAS芯片(NASoC)的結(jié)構(gòu)方框圖;圖4是本發(fā)明一實施例的網(wǎng)絡(luò)存儲附加設(shè)備內(nèi)至少一個硬盤驅(qū)動器的數(shù)據(jù)庫分配及管理流程圖;
圖5是本發(fā)明一實施例的有效容量均為13.5GB的名為“Surya”和“Manasi”的兩磁盤驅(qū)動器的示意圖;圖6是本發(fā)明一實施例的建立共享區(qū)的瀏覽器如Netscape截屏圖;圖7是本發(fā)明一實施例的創(chuàng)建或刪除與至少一個數(shù)據(jù)庫相關(guān)聯(lián)的至少一個共享區(qū)的瀏覽器截屏圖;圖8是本發(fā)明一實施例的使用本發(fā)明的文件存儲機制的磁盤或數(shù)據(jù)存儲驅(qū)動器的結(jié)構(gòu)框圖;圖9是本發(fā)明一實施例的磁盤或數(shù)據(jù)存儲驅(qū)動器的一分區(qū)的結(jié)構(gòu)框圖;圖10是本發(fā)明一實施例的一磁盤頭文件的結(jié)構(gòu)框圖;圖11是本發(fā)明一實施例的數(shù)據(jù)庫信息塊的結(jié)構(gòu)框圖;圖12是本發(fā)明一實施例的允許網(wǎng)絡(luò)存儲設(shè)備利用至少一個數(shù)據(jù)存儲驅(qū)動器實現(xiàn)至少一個數(shù)據(jù)庫的啟動程序流程圖;圖13是本發(fā)明一實施例的數(shù)據(jù)存儲設(shè)備中一數(shù)據(jù)存儲驅(qū)動器的分區(qū)大小調(diào)整操作流程圖。
具體實施例方式
本發(fā)明的特征至少提出一種數(shù)據(jù)存儲驅(qū)動器容量分配和管理方法和系統(tǒng)。本發(fā)明的各種特征允許對已有一個或多個數(shù)據(jù)存儲驅(qū)動器的系統(tǒng)增加一個或多個數(shù)據(jù)存儲驅(qū)動器。在增加了一個或多個數(shù)據(jù)存儲驅(qū)動器后,該系統(tǒng)被配置成可以滿足一個或多個用戶的數(shù)據(jù)存儲需要。增加數(shù)據(jù)存儲驅(qū)動器后,所有的數(shù)據(jù)存儲驅(qū)動器可被集中地分析并重新進行配置,以符合用戶的要求。本發(fā)明的一個代表性的實施例中,所有數(shù)據(jù)存儲驅(qū)動器中的任何未使用或者未分配的空間將被劃分成一個或多個數(shù)據(jù)庫,以使任何數(shù)據(jù)存儲驅(qū)動器內(nèi)的任何時候可獲得的存儲空間都將得到利用。
所述數(shù)據(jù)存儲設(shè)備包括一個或多個數(shù)據(jù)存儲驅(qū)動器,如硬盤驅(qū)動器,或者其他類型的驅(qū)動器。所述數(shù)據(jù)存儲設(shè)備可以是幾種不同類型的數(shù)據(jù)存儲驅(qū)動器的結(jié)合。數(shù)據(jù)存儲驅(qū)動器包括任何類型的能存儲數(shù)據(jù)的介質(zhì)。下文中所稱的“硬盤驅(qū)動器”可選地指數(shù)據(jù)存儲驅(qū)動器或任何其他驅(qū)動器或者包括有數(shù)據(jù)存儲介質(zhì)的元件。在一個代表性的實施例中,一個或多個數(shù)據(jù)存儲驅(qū)動器或硬盤驅(qū)動器結(jié)合構(gòu)成一個數(shù)據(jù)存儲設(shè)備。所述數(shù)據(jù)存儲設(shè)備包括一個或多個數(shù)據(jù)存儲驅(qū)動器或硬盤驅(qū)動器。在本發(fā)明的一個代表性的實施例中,所述數(shù)據(jù)存儲設(shè)備進一步結(jié)合了一個或多個附加數(shù)據(jù)存儲驅(qū)動器或硬盤驅(qū)動器。
而且,本發(fā)明的特征提供了一種由一個或多個硬盤驅(qū)動器提供的數(shù)據(jù)存儲空間的自動建庫、鏡像及分段的方法及系統(tǒng)。另外,執(zhí)行獨立冗余磁盤陣列(Redundant Access Independent Disk,簡稱RAID)功能時,本發(fā)明允許使用不同大小及速度的驅(qū)動器。
本發(fā)明的各種特征允許利用一個或多個硬盤驅(qū)動器的部分空間構(gòu)成至少一個數(shù)據(jù)庫。所述數(shù)據(jù)庫可被視為邏輯驅(qū)動器。所述一個或多個硬盤驅(qū)動器中未被分配的存儲空間可以被重分及一個或多個分區(qū)接下來被記分地鏈接以形成數(shù)據(jù)庫。所述一個或多個分區(qū)可利用所述一個或多個硬盤驅(qū)動器進行鏡像或分割。多個硬盤驅(qū)動器的分區(qū)可被用于創(chuàng)建數(shù)據(jù)庫。例如,用第一硬盤驅(qū)動器的一個分區(qū)及第二硬盤驅(qū)動器的一個分區(qū)相結(jié)合而形成一個數(shù)據(jù)庫。在本發(fā)明的一個代表性的實施例中,可集合所有的硬盤驅(qū)動器以增加存儲容量和/或提供鏡像或數(shù)據(jù)分割空間。在一個代表性的實施例中,被組合或被連接的多個硬盤驅(qū)動器可物理地包含于一個單獨的數(shù)據(jù)存儲設(shè)備中。所述數(shù)據(jù)存儲設(shè)備還可以被接入本地局域網(wǎng),例如,為任何數(shù)量的數(shù)據(jù)處理或計算設(shè)備提供存儲設(shè)備。所述數(shù)據(jù)處理或計算裝置可以包括一臺或多臺電子計算機。本發(fā)明的另一個特征提供了由一個或多個用戶對存儲設(shè)備內(nèi)的一個或多個數(shù)據(jù)庫的共享訪問。以下所說的數(shù)據(jù)存儲設(shè)備均可以稱為網(wǎng)絡(luò)附加存儲設(shè)備(NAS)。一個數(shù)據(jù)庫可通過創(chuàng)建一個或多個共享區(qū)被一個或多個用戶訪問。在一個代表性的實施例中,一個數(shù)據(jù)庫可以包括一個或多個共享區(qū)。每個共享區(qū)占用所述數(shù)據(jù)庫的一個分區(qū)。
圖1是本發(fā)明一實施例中使用網(wǎng)絡(luò)存儲設(shè)備100的典型系統(tǒng)結(jié)構(gòu)圖。所述網(wǎng)絡(luò)存儲設(shè)備100為一個或多個數(shù)據(jù)存儲裝置提供數(shù)據(jù)存儲。如圖1所示,一開關(guān)裝置連接所述網(wǎng)絡(luò)存儲設(shè)備100及一個或多個數(shù)據(jù)處理裝置。所述開關(guān)裝置可提供無線或有線連接,例如,一無線路由器利用以下無線或有線數(shù)據(jù)通訊協(xié)議中的任何一種10/100以太網(wǎng)協(xié)議、千兆位以太網(wǎng)協(xié)議、802.11x協(xié)議、藍牙協(xié)議等。所述一個或多個數(shù)據(jù)存儲設(shè)備包括數(shù)碼攝像機、數(shù)碼相機、MP3播放器、PDA、一個或多個個人錄影機。如圖1所示,所述個人錄影機可配置一硬盤驅(qū)動器,也可以沒有硬盤驅(qū)動器。在一代表性的實施例中,所述個人錄影機可以是具有個人錄影機功能的機頂盒(set-top-box),下文所提到的個人錄影機亦包括具有錄影機功能的機頂盒。如圖1所示,所述個人攝影機連接能顯示多媒體內(nèi)容的電視機或顯示器。所述網(wǎng)絡(luò)存儲設(shè)備100的使用為一個或多個個人錄影機接收的多媒體內(nèi)容提供一集中存儲設(shè)備,任何不帶存儲設(shè)備如硬盤驅(qū)動器的個人錄影機可將其收到的數(shù)據(jù)存儲至網(wǎng)絡(luò)存儲設(shè)備100。而且,包括個人錄影機在內(nèi)的數(shù)據(jù)處理裝置存儲的任何數(shù)據(jù)均可以方便地被其他任何數(shù)據(jù)處理裝置訪問和瀏覽。例如,不帶硬盤的個人錄影機可以訪問由帶硬盤的錄影機存儲在網(wǎng)絡(luò)存儲設(shè)備100內(nèi)的多媒體內(nèi)容,反之亦然。因而所述網(wǎng)絡(luò)存儲設(shè)備100進一步實現(xiàn)了所述一個或多個數(shù)據(jù)處理裝置間的數(shù)據(jù)共享。因所述網(wǎng)絡(luò)存儲設(shè)備提供遠程存儲機制,其可被所述一個或多個數(shù)據(jù)處理裝置視為“虛擬存儲設(shè)備”。所述網(wǎng)絡(luò)存儲設(shè)備100的這種配置使其很容易擴充存儲容量,例如所述網(wǎng)絡(luò)存儲設(shè)備100可以接入一個或多個額外的硬盤驅(qū)動器。網(wǎng)絡(luò)存儲設(shè)備100可以設(shè)計得更容易接入額外的數(shù)據(jù)存儲驅(qū)動器如硬盤驅(qū)動器。可以用相匹配的電纜和/或連接器來連接附加的硬盤驅(qū)動器和網(wǎng)絡(luò)存儲設(shè)備100。因此網(wǎng)絡(luò)存儲設(shè)備100提出了一種符合未來數(shù)據(jù)存儲的增長趨勢的易調(diào)整大小及靈活的數(shù)據(jù)存儲機制。此外,網(wǎng)絡(luò)存儲設(shè)備100還可實現(xiàn)數(shù)據(jù)鏡像和數(shù)據(jù)分割讀寫。
圖2是本發(fā)明一實施例中網(wǎng)絡(luò)存儲設(shè)備200的結(jié)構(gòu)方框圖。所述網(wǎng)絡(luò)存儲設(shè)備200包括印刷電路板(NAS PCB)202,包括一個或多個元件。所述一個或多個元件通過所述印刷電路板(PCB)202相互電連接。所述一個或多個元件包括網(wǎng)絡(luò)存儲設(shè)備芯片(NASoC)204、隨機存儲器208、閃速存儲器212、交流電源接口216、電源220、接口模塊224、無線收發(fā)器/天線模塊228、一個或多個硬盤驅(qū)動器232及控制器236。所述接口模塊224可能包括下列的一個或多個接口IEEE1394、USB、10/100以太網(wǎng)、千兆位以太網(wǎng)、PCI、SATA、ATA、IDE、SCSI、GPIO等等。所述無線收發(fā)器/天模塊228可以是附加模塊或者是迷你PCI卡,可與NAS的印刷電路板202連接,也可以裝配于所述印刷電路板202上。所述一個或多個硬盤驅(qū)動器232依賴于NAS 200的設(shè)計而包括任何數(shù)量的硬盤驅(qū)動器。所述印刷電路板202可設(shè)計為能夠接納適當數(shù)量的硬盤驅(qū)動器。需要用到的硬盤驅(qū)動器的數(shù)量取決于NAS 200提供的鏡像或數(shù)據(jù)分段(即RAID)的類型。本發(fā)明還提出了分配一個或多個硬盤驅(qū)動器的一個或多個部分形成數(shù)據(jù)庫的方法。例如,為了產(chǎn)生一個數(shù)據(jù)庫,某一硬盤驅(qū)動器上的一部分與另一個硬盤驅(qū)動器上的一部分相鏈接。本發(fā)明的進一步的特征通過給NAS增加額外的硬盤驅(qū)動器來擴充存儲量。本發(fā)明的另一個特征包括使用一個或多個不同大小或速度的一個或多個數(shù)據(jù)存儲驅(qū)動器以實現(xiàn)一個或多個數(shù)據(jù)庫的數(shù)據(jù)鏡像和數(shù)據(jù)分段(即各種RAID層功能的執(zhí)行)。在一個實施例中,控制器236為連接到NASoC 204的任何一個設(shè)備(如硬盤驅(qū)動器)提供控制,所述控制器可以是IDE控制器或者SATA控制器。所述NASoC 204可以是含有一個處理器或者一個中央處理單元(CPU)204的集成電路芯片。
圖3是根據(jù)本發(fā)明的一實施例的NAS芯片(NASoC)300的結(jié)構(gòu)方框圖。所述NASoC 300是一安裝于前述的NAS PCB上的集成電路。該NASoC 300提供了一個或多個允許NAS正確運行的功能。所述NASoC 300包括中央處理單元(CPU)304,片上隨機存取存儲器308、以太網(wǎng)/MAC控制器312、加密加速器316、安全/驗證、密鑰交換、數(shù)據(jù)權(quán)利管理(DRM)電路320及一組接口324,328,332,336,340。所述接口324,328,332,336,340包括如下的類型的接口,例如USB設(shè)備接口324、PCI主機接口332、GPIO/LCD/閃存介質(zhì)接口328、ATA接口336、USB主機接口340。所述NAS芯片300可與圖2所述的一個或多個部件相通信和/或連接。
如圖2所示,NAS可與不同數(shù)量的硬盤驅(qū)動器相連接,其取決于其數(shù)據(jù)存儲量及RAID(數(shù)據(jù)鏡像和/或數(shù)據(jù)分割)的要求。所述NAS 200的底座可根據(jù)使用的類型配置1、2、4個或更多的硬盤驅(qū)動器。例如,所述NAS可以利用四個硬盤驅(qū)動器來實現(xiàn)RAID 1+0(同時數(shù)據(jù)鏡像及數(shù)據(jù)分割),適合用于小型辦公室或商業(yè)環(huán)境中。本發(fā)明的特征提供了在執(zhí)行RAID功能時,可以使用不同容量、類型或速度的硬盤驅(qū)動器。在家庭用戶環(huán)境里,所述NAS可僅使用一個或兩個硬盤驅(qū)動器,因為需要的存儲容量通常要小于辦公室或商業(yè)環(huán)境的需求。同樣地,NAS所采用的存儲器部件也會因使用類型的不同而不同。由于數(shù)據(jù)存儲需求增加了,相應(yīng)的數(shù)據(jù)存儲頻率也增大了,需要通過增加NAS的存儲容量提高NAS的性能,以滿足操作的需求。例如,可增加閃存或DRAM的容量而改善NAS的性能,底座的大小、電源電路及其它部件都需要進行相應(yīng)的調(diào)整。
在一個實施例中,當NAS啟動或上電時,NASoC(204或300)內(nèi)的處理器240執(zhí)行固化在隨機存儲器208或閃存212里的軟件或固件。所述軟件或固件的執(zhí)行會產(chǎn)生一個或多個用戶界面,以使用戶利用一個或多個硬盤驅(qū)動器內(nèi)的部分空間構(gòu)建一個或多個數(shù)據(jù)庫。所述用戶界面可進一步結(jié)合一個或多個數(shù)據(jù)庫配置一個或多個RAID層。
在一個實施例中,所述軟件的執(zhí)行可使用戶工作站(如客戶端工作站)中的http服務(wù)器顯示預(yù)先設(shè)置的用戶界面。在一個實施例中,處理器204所執(zhí)行的軟件包括有操作系統(tǒng)(如微軟的Windows操作系統(tǒng))能夠識別的配置文件,因而可以通過Windows瀏覽器程序執(zhí)行及瀏覽。在用戶完成對NAS的初始化過程之前,所述設(shè)置文檔是可訪問的。初始化過程中會產(chǎn)生一個或多個用于后續(xù)過程中訪問所述配置程序的驗證密碼。所述微軟Windows操作系統(tǒng)包括WindowsXP、2000、ME、98、Pocket PC等。點擊Windows瀏覽器顯示出來的所述配置問文件的文件名執(zhí)行所述配置文件時,用戶的數(shù)據(jù)處理設(shè)備中會顯示一用戶界面。然后用戶可以提供一個或多個輸入來初始化或配置NAS。所述輸入包括以下內(nèi)容NAS名稱、管理員名稱、管理員密碼、一個或多個交替安全執(zhí)行器、時間、時區(qū)、網(wǎng)絡(luò)時間服務(wù)器、因特網(wǎng)協(xié)議地址、數(shù)據(jù)庫名稱、RAID指示符、數(shù)據(jù)庫共享區(qū)名稱以及共享區(qū)訪問口令。數(shù)據(jù)庫名稱、RAID指示符、數(shù)據(jù)庫共享區(qū)名稱和共享區(qū)訪問口令是用于NAS內(nèi)硬盤驅(qū)動器管理的主要參數(shù)。在一個實施例中,前述的磁盤驅(qū)動器管理參數(shù)存儲于NAS的閃存內(nèi),如圖2所示。所述閃存可以是非易失性隨機存取存儲器(NVRAM)。
圖4是根據(jù)本發(fā)明的一個實施例的網(wǎng)絡(luò)存儲設(shè)備內(nèi)的一個或多個硬盤驅(qū)動器的數(shù)據(jù)庫分配及管理流程圖。在404步驟中,用戶訪問相應(yīng)的磁盤管理用戶界面。在一個實施例中,需要用戶將一個授權(quán)密碼輸入用戶介面后,產(chǎn)生該磁盤管理用戶界面。在一個代表性的實施例中,為了產(chǎn)生包括所述磁盤管理用戶界面在內(nèi)的一個或多個用戶界面,需要執(zhí)行一個配置文件。圖5所示為瀏覽器的截屏圖,如Windows瀏覽器或Netscape,其提供了一個允許用戶輸入一個或多個磁盤庫參數(shù)的示例性的磁盤管理界面。在步驟408中,用戶確定要被創(chuàng)建的數(shù)據(jù)庫的數(shù)量及類型。如圖5所示,用戶可輸入新的數(shù)據(jù)庫名稱,對一個或多個磁盤驅(qū)動器提供的磁盤空間進行分配。圖5中顯示了兩個磁盤驅(qū)動器,分別命名為Surya和Manasi,均具有13.5Gb的可用容量。該用戶界面中提供了用于調(diào)整磁盤空間分配大小的字段,其還允許用戶選擇是否需要對數(shù)據(jù)庫進行鏡像或分割。在步驟412中,用戶需要確定所述一個或多個驅(qū)動器中用于組成數(shù)據(jù)庫的空間的分配。在步驟416,用戶需要為創(chuàng)建的數(shù)據(jù)庫指定RAID層。在一個代表性的實施例中,可以通過用戶界面指定以下RAID層RAID0、RAID1、和RAID0+1。在420步驟中,為之前產(chǎn)生的一個或多個數(shù)據(jù)庫創(chuàng)建一個或多個共享。圖6是根據(jù)本發(fā)明的一個實施例所提供的一個瀏覽器的截屏圖,如Netscape瀏覽器,其有助于為存儲于數(shù)據(jù)庫內(nèi)的共享數(shù)據(jù)的共享的建立或共享目錄。一個數(shù)據(jù)庫可含有一個或多個共享區(qū)。在一個代表性的實施例中,一個共享區(qū)內(nèi)還可以包括一個或多個數(shù)據(jù)文件的子目錄。共享區(qū)允許一個或多個用戶訪問數(shù)據(jù)庫內(nèi)的存儲空間。當管理員分配給用戶一個密碼時,該用戶就獲得共享訪問權(quán)限。如圖6所示,管理員可使用所述圖形用戶界面給共享區(qū)設(shè)置密碼。如果在一個數(shù)據(jù)庫里有超過一個共享區(qū)時,每個共享區(qū)所占用的磁盤空間相對于由該數(shù)據(jù)庫所提供的總空間被累加地應(yīng)用。在一個代表性的實施例中,共享區(qū)或其共享目錄將占據(jù)數(shù)據(jù)庫的一部分空間,一個或多個共享區(qū)所占據(jù)的空間不重疊。圖7是根據(jù)本發(fā)明的一個實施例所提供的瀏覽器截屏圖,其顯示了一個或多個共享區(qū)及其對應(yīng)的一個或多個數(shù)據(jù)庫,其還提供了一個或多個共享區(qū)的創(chuàng)建或刪除。前述的一個或多個用戶界面只是示例,可以預(yù)想,其它各種用戶界面的實施例可被應(yīng)用于本發(fā)明。
本發(fā)明各種特征還提供了一種對一個或多個數(shù)據(jù)存儲驅(qū)動的各個部分存儲文件的機構(gòu)。所述機構(gòu)包括動態(tài)地改變一個或多個數(shù)據(jù)存儲驅(qū)動器內(nèi)文件系統(tǒng)的大小和配置的特性,及如在對數(shù)據(jù)庫執(zhí)行改變過程中發(fā)生斷電時,恢復(fù)數(shù)據(jù)存儲驅(qū)動器內(nèi)丟失的或者暫時無效的數(shù)據(jù)。所述改變包括修改文件系統(tǒng)的大小和配置。
所述機構(gòu)的外部界面可以是通用文件系統(tǒng)界面,具有專門用于改變磁盤文件系統(tǒng)大小和配置的功能操作。所述文件系統(tǒng)界面與各種不同操作系統(tǒng)上的標準文件系統(tǒng)界面類似。所述標準文件系統(tǒng)包括Linux、Unix和Windows文件系統(tǒng)。在一個代表性的實施例中,所述文件系統(tǒng)可以是含有文件的樹形目錄。所述文件系統(tǒng)進一步為每個文件或目錄設(shè)置元數(shù)據(jù)。所述元數(shù)據(jù)包括文件或目錄名、最近一次訪問時間、所有者、讀寫權(quán)限。所述文件系統(tǒng)界面提供了創(chuàng)建、刪除、讀取和寫入一個或多個目錄操作。此外,所述文件系統(tǒng)允許讀取和修改文件和元數(shù)據(jù)。所述文件存儲機制在兩個主要部分執(zhí)行——稱為底層數(shù)據(jù)部分,及文件系統(tǒng)數(shù)據(jù)部分。這兩個數(shù)據(jù)部分通過一個簡單的界面進行數(shù)據(jù)交流,所述界面提供訪問以數(shù)據(jù)字節(jié)的平面陣列形式出現(xiàn)的文件系統(tǒng)數(shù)據(jù)部分。所述平面陣列被稱為中層數(shù)據(jù)陣列。在一個代表性的實施例中,所述文件系統(tǒng)部分包括一個傳統(tǒng)的文件系統(tǒng)。文件系統(tǒng)數(shù)據(jù)部分可以使用任何一個標準文檔系統(tǒng),如Reiser FS、JFS、ext3fs或者NTFS。運行在普通磁盤或磁盤分區(qū)內(nèi)的上述文件系統(tǒng)和中層數(shù)據(jù)陣列,在使用時不發(fā)生改變或幾乎不發(fā)生改變。
所述文件存儲機制的整個部分都可以是底層數(shù)據(jù)部分。所述底層數(shù)據(jù)部分可以訪問用于存儲數(shù)據(jù)的一個或多個原始磁盤。每個原始磁盤可以是一個數(shù)據(jù)存儲驅(qū)動器,完全由文件存儲機制的底層數(shù)據(jù)部分使用。在一個代表性的實施例中,只有文件存儲機制的底層數(shù)據(jù)部分才可以讀寫所述一個或多個原始磁盤。所述一個或多個原始磁盤或數(shù)據(jù)存儲驅(qū)動器中的每一個都可用于向一個或多個數(shù)據(jù)庫提供存儲空間,因而不存在僅被單獨一個數(shù)據(jù)庫使用的磁盤。幾個數(shù)據(jù)庫可以通過文件存儲機制的底層數(shù)據(jù)部分來共用一個磁盤。
所述的底層數(shù)據(jù)部分的特點在于其具有兩種狀態(tài)類型。第一種狀態(tài)是暫時狀態(tài),存在于任何介質(zhì)中,包括易失性存儲器如DRAM。然而,所述暫時狀態(tài)可能不會出現(xiàn)在原始磁盤或數(shù)據(jù)存儲驅(qū)動器中,在一個代表性的實施例中,所述一個或多個原始磁盤會出現(xiàn)一個或多個穩(wěn)定數(shù)據(jù)狀態(tài)。當使用磁盤池機制的數(shù)據(jù)處理或數(shù)據(jù)計算裝置重啟時,暫時狀態(tài)將被破壞。這種情況只會在有重大錯誤時發(fā)生,如數(shù)據(jù)處理或數(shù)據(jù)計算裝置關(guān)機或者斷電。底層數(shù)據(jù)部分使用的穩(wěn)定數(shù)據(jù)狀態(tài)的穩(wěn)定數(shù)據(jù)可進一步分為兩類原始數(shù)據(jù)塊和元數(shù)據(jù)塊。元數(shù)據(jù)說明了原始數(shù)據(jù)如何鏈接在一起構(gòu)成中層數(shù)據(jù)陣列。每個原始數(shù)據(jù)塊應(yīng)與中層數(shù)據(jù)陣列的毗鄰部分準確匹配。在一個代表性的實施例中,原始數(shù)據(jù)塊中有一個尚未定義的數(shù)值,其可作為“待用”塊使用,可用于形成鏡像數(shù)據(jù)庫。所述元數(shù)據(jù)描述分散在原始磁盤中的原始數(shù)據(jù)塊是如何構(gòu)成中層數(shù)據(jù)陣列。所述元數(shù)據(jù)可以包括鏡像信息及分割信息。
當一個或多個磁盤不可用時,最好有至少一些元數(shù)據(jù)是有效的。如果建立數(shù)據(jù)庫以使用鏡像,其通常被建立以使若任何一個磁盤無效時,每個中層數(shù)據(jù)陣列的至少一份備份存儲在余下的一個或多個磁盤中。例如,一個或多個磁盤丟失時,通過鏡像,底層部分的結(jié)構(gòu)更有利于整個中層數(shù)據(jù)陣列的有效性。在一個代表性的實施例中,丟失磁盤表示并非所有的中層數(shù)據(jù)陣列數(shù)據(jù)有效,在這種情況下,底層部分將提供足夠的診斷信息來發(fā)出可能的出錯信息。
元數(shù)據(jù)作為磁盤的原始數(shù)據(jù)塊散布于該磁盤中。元數(shù)據(jù)的分布信息方式的描述對于當一個或多個磁盤丟失時使信息可獲得及使系統(tǒng)在操作過程中發(fā)生斷電時更穩(wěn)固及而言是非常重要的。例如,上述操作將改變磁盤中原始數(shù)據(jù)的大小和/或配置,或者對元數(shù)據(jù)執(zhí)行其它改變,如修改了數(shù)據(jù)庫的文件名。
本發(fā)明的各種特征參考文件存儲機制里的一個或多個數(shù)據(jù)存儲驅(qū)動器使用元數(shù)據(jù)定位技術(shù)。例如,如果元數(shù)據(jù)都只是在每個磁盤或者數(shù)據(jù)存儲驅(qū)動器進行簡單的備份,發(fā)生磁盤丟失的情況時就不會產(chǎn)生問題。然而,如果其中一個磁盤被更新過而其它磁盤還未被更新,那么發(fā)生斷電時就會出現(xiàn)問題。如果所有元數(shù)據(jù)都在一個磁盤或一個數(shù)據(jù)存儲驅(qū)動器上,斷電所帶來的問題將比較容易解決??墒?,如果含有元數(shù)據(jù)的磁盤丟失,文件存儲機制將無法運行。
圖8是本發(fā)明一實施例中使用本發(fā)明的文件存儲機制的磁盤或數(shù)據(jù)存儲驅(qū)動器的結(jié)構(gòu)框圖。磁盤的起始點是一個大小固定的塊,被稱為磁盤頭文件804。圖8中,塊808、812、816、820、824表示一個或多個分區(qū)形式的額外存儲容量,第n個分區(qū)824表示最后一個分區(qū)824。如圖8所示,每個磁盤或者數(shù)據(jù)存儲驅(qū)動器的起始端都為某些元數(shù)據(jù)預(yù)留一個有固定大小的塊804,被稱為磁盤頭文件804。磁盤的剩下的部分被劃分為多個相鄰的、不重疊的區(qū)域稱為分區(qū)808、812、816、820,磁盤頭文件804描述了各分區(qū)的起始點和大小。在給出的磁盤中可能還會有一些空間未分配給磁盤頭文件804或分區(qū)808、812、816、820、824;這些空間可用于創(chuàng)建新的分區(qū)(創(chuàng)建新數(shù)據(jù)庫或擴展現(xiàn)有數(shù)據(jù)庫時),或者擴展現(xiàn)有的分區(qū)(擴展現(xiàn)有的數(shù)據(jù)庫時)。分區(qū)的配置一般由一個或多個分區(qū)表來確定,許多分區(qū)表格式在不同系統(tǒng)中使用,如Linux、Windows和DOS系統(tǒng)。不同于現(xiàn)有系統(tǒng)的是,本發(fā)明還可實現(xiàn)磁盤池機制底層部分使用的分區(qū)表的格式化。與現(xiàn)有系統(tǒng)相比,本發(fā)明文件存儲機制中使用的一個或多個分區(qū)表位于磁盤或數(shù)據(jù)存儲驅(qū)動器起始端的一個固定大小的塊中。本發(fā)明還可在數(shù)據(jù)存儲驅(qū)動器的磁盤頭文件中使用雙重分區(qū)表。所述分區(qū)表互為鏡像,用于冗余。當執(zhí)行一個或多個操作時,所述雙重分區(qū)表用于保護存儲在一個或多個數(shù)據(jù)存儲驅(qū)動器中的數(shù)據(jù)的完整性。所述一個或多個操作可以是更新與數(shù)據(jù)庫和磁盤名稱有關(guān)的信息。所述磁盤頭文件可以包含與文件存儲機制底層部分有關(guān)的元數(shù)據(jù)信息。
圖9是本發(fā)明一實施例中磁盤或數(shù)據(jù)存儲驅(qū)動器的一個分區(qū)的結(jié)構(gòu)框圖。根據(jù)該實施例,每個分區(qū)包含三個元件904、908、912。頭兩個元件分別為第一和第二數(shù)據(jù)庫信息塊(PBIs)904、908,每個數(shù)據(jù)庫信息塊包括512個字節(jié)。第個這些數(shù)據(jù)庫信息塊904、908均包括有數(shù)據(jù)庫元數(shù)據(jù)。第三個亦即最后一個部件為分區(qū)有效載荷912,包括原始數(shù)據(jù)和附加元數(shù)據(jù)。分區(qū)有效載荷912的大小可以是任何數(shù)量的字節(jié)(或者塊),由磁盤頭文件的分區(qū)表中所定義。所述分區(qū)表也可以定義分區(qū)內(nèi)的一個或多個塊,每個塊包含512個字節(jié)。在本發(fā)明的其它實施例中,前述的數(shù)據(jù)庫信息塊和分區(qū)有效載荷塊還可以使用的不用的字節(jié)數(shù)量。
圖10是本發(fā)明實施例中一磁盤頭文件的結(jié)構(gòu)框圖。所述磁盤頭文件包括2560個字節(jié),可由以下字段組成第一字段從偏移的0字節(jié)開始,被使用的“魔術(shù)”頭文件字段1004占用34個字節(jié)。根據(jù)本發(fā)明的各種特征,所述字段1004包含特殊數(shù)據(jù),將相應(yīng)的磁盤標識為磁盤庫機制底層部分使用的數(shù)據(jù)庫系統(tǒng)的一部分。不含有所述的34字節(jié)特殊數(shù)據(jù)的磁盤不會被視為本發(fā)明提出的文件存儲機制中數(shù)據(jù)庫系統(tǒng)的一部分。
第二字段從偏移的第34字節(jié)開始,NAS標識符字段1008被使用,6個字節(jié)被用于這個字段1008。該6個字節(jié)唯一的標識格式化所述磁盤并產(chǎn)生磁盤頭文件的裝置,在一具體實施例中,所述6字節(jié)標識符表示一網(wǎng)絡(luò)存儲設(shè)備。
第三字段從偏移的第40字節(jié)開始,41個字節(jié)磁盤名稱字段1012被使用。所述41字節(jié)磁盤名稱字段1012可以存儲用戶可讀的ASCII或Unicode字符串,作為磁盤的識別名稱。在一具體實施例中,所述字段1012可以以0結(jié)束,第一0字節(jié)后的每個字節(jié)也均為0,因而最后一個字節(jié)必然總是0。
第四字段從偏移的第81字節(jié)開始,用3個字節(jié)的零位填充符被用于零位填充符字段1016。
第五字段從偏移的第84字節(jié)開始,16個字節(jié)標識符通過磁盤標識符字段1020被用于標識所述磁盤。所述16字節(jié)標識符在創(chuàng)建磁盤頭文件時隨機或者半隨機產(chǎn)生。
第六字段從偏移的100字節(jié)開始,用于標志字段1024的一個字節(jié)的標志位被用于指示磁盤頭文件內(nèi)兩個分區(qū)表中哪一個處于激活狀態(tài)。例如,數(shù)值“0”可以表示第一分區(qū)表處于激活狀態(tài),任何其它數(shù)值則表示第二分區(qū)表處于激活狀態(tài)。
第七字段從偏移的第101字節(jié)開始,未411個未使用字節(jié)被用于字節(jié)字段1028。
第八字段從偏移的第512字節(jié)開始,第一分區(qū)表被存儲于第一分區(qū)字段1032,該第一分區(qū)字段1032包括1024個字節(jié)。
第九字段從偏移的第1536字節(jié)開始,第二分區(qū)表被存儲于第二分區(qū)字段1036,其也包括1024個字節(jié)。
所述磁盤頭文件的第二、第三和第五字段(如NAS標識符、磁盤名稱和磁盤唯一標識符)用于定義一獨特的磁盤,避免任何兩個不同磁盤之間的混淆。
在一個代表性的實施例中,在任何假定的情況下,所述兩個分區(qū)表中僅有一個分區(qū)表通過使用一字節(jié)標志字段1024內(nèi)的標志位被激活。當分區(qū)表改變時,所有新信息均寫入未被激活的分區(qū)表中。進行更新時,一個或多個數(shù)據(jù)存儲驅(qū)動器內(nèi)的所有未激活的分區(qū)表均被更新。因為激活的區(qū)分表未被修改,當一寫操作因斷電而中斷時,不會出現(xiàn)不一致的狀態(tài)。在本發(fā)明的一個代表性的實施例中,每個分區(qū)表包括1024字節(jié),并被分為每16個字節(jié)的64個入口。所述分區(qū)表的64個入口中的每一個都指定磁盤中的一個分區(qū)。當一個存儲單元中的16個字節(jié)全部為0時,所述存儲單元視為空存儲單元。若該存儲單元并非空單元,則該單元的前8個字節(jié)指定起始塊編號,余下的8個字節(jié)指定所述分區(qū)的數(shù)據(jù)塊的大小。所述起始塊編號和所述大小依據(jù)512字節(jié)數(shù)據(jù)塊結(jié)構(gòu)進行表述。所述起始塊編號與磁盤的起始端有關(guān),并指向分區(qū)的有效載荷。所述大小可指定該分區(qū)的分區(qū)有效載荷的大小。在這個代表性的實施例中,所述大小不包括每個分區(qū)的有效載荷前隱含的兩個數(shù)據(jù)庫信息塊。如果分區(qū)表顯示起始塊為塊811,大小為13個數(shù)據(jù)塊,則該分區(qū)的第一數(shù)據(jù)庫信息塊為塊809,第二數(shù)據(jù)庫信息塊為塊810,分區(qū)的有效載荷為塊811至塊823。因為磁盤頭文件占用了第一個8個塊,因而一個分區(qū)表中存儲單元的起始塊號碼的最低有效值是10。
每個分區(qū)對應(yīng)兩個數(shù)據(jù)庫信息塊,用于確定一個或多個數(shù)據(jù)庫。每個分區(qū)有兩個數(shù)據(jù)庫信息塊以使當一個數(shù)據(jù)庫信息塊被修改時,可以訪問另一個。所述兩個數(shù)據(jù)庫信息塊(PIB)可以分別對應(yīng)數(shù)據(jù)庫信息塊A和數(shù)據(jù)庫信息塊B。更新所述數(shù)據(jù)庫信息塊的過程包括以下方法。當改變數(shù)據(jù)庫內(nèi)所有分區(qū)的所有數(shù)據(jù)庫信息塊A時,數(shù)據(jù)庫信息塊B均不發(fā)生改變,以使當數(shù)據(jù)庫信息塊A變化時數(shù)據(jù)庫信息塊B將總是處于穩(wěn)定狀態(tài)。相似地,當更新數(shù)據(jù)庫信息塊B時,所有的數(shù)據(jù)庫信息塊A均不發(fā)生改變,以使若數(shù)據(jù)庫信息塊B不穩(wěn)定時數(shù)據(jù)庫信息塊A總是處于穩(wěn)定狀態(tài)。前述磁盤頭文件字段的偏移量、字節(jié)長度和字段大小都不相同,及根據(jù)本發(fā)明的各種特征,其它實施可被采用。
圖11是根據(jù)本發(fā)明的一個實施例的數(shù)據(jù)庫信息塊結(jié)構(gòu)的關(guān)系框圖。在一個代表性的實施例中,每個數(shù)據(jù)庫信息塊包括512個字節(jié),及可包含以下示例性的字段第一字段從偏移的0字節(jié)開始,81個字節(jié)被用于數(shù)據(jù)庫名稱字段1104,。在一個代表性的實施例中,數(shù)據(jù)庫名稱字段1104由用戶可讀的SACII或者Unicode字符串組成,用于表示與該數(shù)據(jù)庫信息塊對應(yīng)的數(shù)據(jù)庫的名稱。所述數(shù)據(jù)庫名稱字段可以以0字節(jié)結(jié)束,第一0字節(jié)后的每個字節(jié)也均為0,因而在此實施例中字段的最后一個字節(jié)必然總是0。
第二字段從偏移的第81字節(jié)開始,零位填充符的3個字節(jié)由第一零位填充符字段1108所提供。
第三字段從偏移的第84字節(jié)開始,16個字節(jié)被用于定義數(shù)據(jù)庫標識符字段1112內(nèi)的數(shù)據(jù)庫標識符。所述16個字節(jié)可以在數(shù)據(jù)庫創(chuàng)建時隨機或半隨機產(chǎn)生。
第四字段從偏移的第100字節(jié)開始,6個字節(jié)被用于NAS識別字段(ID)1116,以用于識別創(chuàng)建該數(shù)據(jù)庫的網(wǎng)絡(luò)存儲設(shè)備。這一特值與圖10所示的從第34字節(jié)開始的NAS標識符字段1008內(nèi)的特值相對應(yīng)。這樣,利用唯一的數(shù)據(jù)庫標識符、NAS標識符和創(chuàng)建時戳便可以唯一地標識一個數(shù)據(jù)庫。實質(zhì)上這三個標識符的組合已不可能再被其他任何數(shù)據(jù)庫所使用。如果兩個不同的數(shù)據(jù)庫用相同的數(shù)據(jù)庫標識符、NAS標識符和創(chuàng)建時戳,將對那個形成該一個或多個數(shù)據(jù)庫的分區(qū)造成混淆。在同一網(wǎng)絡(luò)存儲設(shè)備中創(chuàng)建的任意兩個數(shù)據(jù)庫應(yīng)該有不同的時戳,在兩個不同的網(wǎng)絡(luò)存儲設(shè)備中創(chuàng)建的任意兩個數(shù)據(jù)庫應(yīng)該有不同的NAS標識符。所述唯一的數(shù)據(jù)庫標識符通過隨機產(chǎn)生,從而減少了使用相同的三位標識符組合的可能性。某些情況下,NAS標識符可能與當前正在使用該數(shù)據(jù)庫的網(wǎng)絡(luò)存儲設(shè)備的實際NAS標識符不同,這是因為一個或多個數(shù)據(jù)存儲驅(qū)動器或磁盤可能已經(jīng)從網(wǎng)絡(luò)存儲設(shè)備中移除并插入了新的。如果一個數(shù)據(jù)存儲驅(qū)動器或磁盤第一次被一個網(wǎng)絡(luò)存儲設(shè)備使用,而一個數(shù)據(jù)庫隨后由另一個網(wǎng)絡(luò)存儲設(shè)備創(chuàng)建或產(chǎn)生,那么該數(shù)據(jù)庫信息塊的NAS標識符也可能不同于所述數(shù)據(jù)庫使用的數(shù)據(jù)存儲驅(qū)動器或磁盤的頭文件題內(nèi)的NAS標識符。由于頭文件內(nèi)的NAS標識符應(yīng)該與第一次在磁盤內(nèi)創(chuàng)建該頭文件的網(wǎng)絡(luò)存儲設(shè)備相對應(yīng),因而更新分區(qū)表時,頭文件的NAS標識符不會發(fā)生改變。這樣頭文件內(nèi)的NAS標識符可以不同的磁盤或數(shù)據(jù)存儲驅(qū)動器相互區(qū)別,同樣的,數(shù)據(jù)庫信息塊MNAS標識符也使得不同得數(shù)據(jù)庫相互區(qū)別。
第五字段從偏移的106字節(jié)開始,零位填充符的2個字節(jié)被加入第二零位填充符字段1120。
第六字段從偏移的第108字節(jié)開始,在創(chuàng)建時間/日期印戳字段1124中,9個字節(jié)用于記錄一數(shù)據(jù)庫的創(chuàng)建時間/日期戳。記錄的時間和日期結(jié)合NAS標識符字段1216可唯一地標識一個具體的數(shù)據(jù)庫并使其區(qū)別于其它數(shù)據(jù)庫。所述9個字節(jié)中的前4個字節(jié)為年度,接著的一個字節(jié)是月份(1-12),然后一個字節(jié)是小時(0-23),再接下來的一個字節(jié)是分(0-59),最后一個字節(jié)是秒(0-59)。具體實施例中,所述時間/日期戳依照世界標準時間表示。
第七字段從偏移的第117字節(jié)開始,零位填充符的3個字節(jié)被加入一第三零位填充符字段1128。
第八字段從偏移的第120字節(jié)開始,有4個字節(jié)用于表示數(shù)據(jù)庫中數(shù)據(jù)分段或被分段的分區(qū)的數(shù)量。該4個字節(jié)位于分段字段1132中。在一個代表性的實施例中,數(shù)值“1”表示未使用數(shù)據(jù)分段,數(shù)值“0”為無效數(shù)值。對單獨一個分段進行數(shù)據(jù)分段等同于未分段,必須有至少兩個分段的情況下對數(shù)據(jù)分段才有意義。
第九字段從偏移的第124字節(jié)開始,有4個字節(jié)表示數(shù)據(jù)庫中鏡像或被鏡像的分區(qū)的數(shù)量。有4個字節(jié)位于鏡像字段1136。在一個代表性的實施例中,數(shù)值“1”表示未使用鏡像,而數(shù)值“0”表示無效。
第十字段從偏移的第128字節(jié)開始,4個字節(jié)表示備用區(qū)字段1140中所使用的數(shù)據(jù)庫中的備用區(qū)數(shù)量。在一個代表性的實施例中,數(shù)值“0”表示無備用區(qū)可用。
第十一字段從偏移的第132字節(jié)開始,有4個字節(jié)表示加入一個分區(qū)內(nèi)的窗格數(shù)量。4個字節(jié)被用于該窗格字段1144內(nèi)。窗格包括數(shù)據(jù)條、鏡像以及備用數(shù)據(jù)單元,用于創(chuàng)建或形成整個數(shù)據(jù)庫。一個數(shù)據(jù)庫的窗格總數(shù)包括(NST*(NM*NSP)),其中NST指從第120字節(jié)開始的數(shù)據(jù)條或被分割的窗格的數(shù)量,NM指從第124字節(jié)開始的鏡像或被鏡像的窗格的數(shù)量,NSP指備用區(qū)或備用窗格的數(shù)量。在一個代表性的實施例中,一個數(shù)據(jù)庫的所有窗格從零開始逐一編號。例如先給第一個鏡像的所有數(shù)據(jù)條編號,然后給第二個鏡像的數(shù)據(jù)條編號,并依此類推;接著給第一個備用區(qū)的所有數(shù)據(jù)條編號,然后給第二個備用區(qū)的數(shù)據(jù)條編號,并依此類推。
第十二字段從偏移的第136字節(jié)開始,字節(jié)片字段1148占用4個字節(jié),表示窗格字段1144中所指的窗格中字節(jié)片的數(shù)量。通過使用一個或多個字節(jié)片,一個窗格可以分布在一個磁盤(或數(shù)據(jù)存儲驅(qū)動器)的多個分區(qū)內(nèi),也可以分布在多個磁盤的多個分區(qū)內(nèi)。所有磁盤內(nèi)的所有分區(qū)中一個或多個字節(jié)片根據(jù)相應(yīng)的窗格集合在一起,鏈接形成一個窗格。所述字節(jié)片字段1148指出某個窗格中含有多少字節(jié)片。在一具體實施例中,字節(jié)片字段的最小值為1。
第十三字段從偏移的第140字節(jié)開始,字節(jié)片標識符字段1152占用4個字節(jié),包含一字節(jié)片標識符用于表示其代表窗格中的哪一個字節(jié)片。在一具體實施例中,窗格中的字節(jié)片從零開始逐一編號,所有分區(qū)按照該編號順序鏈接形成窗格。
第十四字段從偏移的第144字節(jié)開始,RAID字節(jié)片字段1156占用4個字節(jié),表示RAID字節(jié)片的大小。所述RAID字節(jié)片大小是一具體用于鏈接分區(qū)、執(zhí)行鏡像和分割的代碼,在已給出的數(shù)據(jù)庫中所有的數(shù)據(jù)庫信RAID字節(jié)片大小為同一數(shù)值。注意,此處所說的“字節(jié)片”不同于前面所述的從第136字節(jié)至140字節(jié)的“字節(jié)片”。
第十五字段從偏移的第148字節(jié)開始,窗格分區(qū)明細表字段1160占用108個字節(jié)的窗格分區(qū)明細表,用于確定使用哪一個分區(qū)作為該數(shù)據(jù)庫的下一個窗格。所述分區(qū)明細表的108個字節(jié)依次是81個字節(jié)為該分區(qū)所在的磁盤名稱,1個字節(jié)為零位填充符,6個字節(jié)為NAS標識符,16個字節(jié)為包含該指定分區(qū)的磁盤的磁盤唯一標識符,4個字節(jié)為所指定分區(qū)的數(shù)量,總共是81+1+6+16+4=108字節(jié)。如果與該窗格分區(qū)明細表相關(guān)的分區(qū)正好對應(yīng)最后一個窗格,所述窗格分區(qū)明細表字段指向下一個數(shù)據(jù)庫的第一個窗格,因而所述窗格分區(qū)明細表字段記錄了分區(qū)之間的鏈接。若數(shù)據(jù)庫中僅存在一個窗格,且分區(qū)為該窗格中的唯一一個分區(qū),所述窗格分區(qū)明細表字段1160將指回該窗格。
第十六字段從偏移的第256字節(jié)開始,字節(jié)片分區(qū)明細表字段1164占用108個字節(jié)的字節(jié)片分區(qū)明細表,用于確定哪一個分區(qū)是該窗格的下一個字節(jié)片。若這個分區(qū)是該窗格的最后一個,所述字段指回對應(yīng)窗格的第一個字節(jié)片,因而若該窗格僅由一個分區(qū)組成,所述字段將指出該窗格本身。
第十七字段從偏移的第364字節(jié)開始,大小調(diào)整標志字段1168占用4個字節(jié),標示數(shù)據(jù)庫當前是否正在進行大小調(diào)整操作。在具體實施例中,可用數(shù)值“0”表示處于非調(diào)整狀態(tài),數(shù)值“1”表示其處理大小調(diào)整狀態(tài),其它數(shù)值均視為無效。在進行大小調(diào)整操作時,所述網(wǎng)絡(luò)存儲設(shè)備會存儲相應(yīng)的信息,當大小調(diào)整操作中斷時,網(wǎng)絡(luò)存儲設(shè)備可用該信息自我恢復(fù)至大小調(diào)整之前的狀態(tài),這樣網(wǎng)絡(luò)存儲設(shè)備內(nèi)的數(shù)據(jù)便不會被丟失或破壞。本發(fā)明還可以在對應(yīng)數(shù)據(jù)庫的大小調(diào)整操作執(zhí)行完后在數(shù)據(jù)庫信息塊中保留所述標志字段。具體實施例中,大小調(diào)整操作過程中不使用用于數(shù)據(jù)庫信息塊最后一個字段的有效性標志。
第十八字段從偏移的第368字節(jié)開始,反向變化量字段1172占用8個字節(jié),表示大小調(diào)整操作的反向進行程度。調(diào)整數(shù)據(jù)庫大小時,每個分區(qū)的大小會增加或者縮小(包括因為刪除一個分區(qū)而縮小至零,或因為增加一個分區(qū)從而大小從零開始增加),因而數(shù)據(jù)需要在窗格內(nèi)前后移動。為了避免數(shù)據(jù)被覆蓋,數(shù)據(jù)移動的順序非常重要。數(shù)據(jù)的遷移或轉(zhuǎn)換按以下步驟進行先通過窗格正向移動,再反向復(fù)制數(shù)據(jù),然后通過窗格反向移動,再正向復(fù)制數(shù)據(jù)。若大小調(diào)整操作中斷,反向移動的數(shù)據(jù)可依據(jù)所述反向變化量字段恢復(fù)到正確的位置。
第十九字段從偏移的第376字節(jié)開始,正向變化量字段1176占用8個字節(jié),用來表示大小調(diào)整操作的正向進行程度,與前述反向變化量字段相對應(yīng),依據(jù)正向變化的字節(jié)數(shù)測得。
第二十字段從偏移的第384字節(jié)開始,調(diào)整前大小字段1180占用8個字節(jié),用于示出執(zhí)行大小調(diào)整操作前分區(qū)的大小(以千字節(jié)為單位)。需要注意的是,若相應(yīng)的分區(qū)是新增加的,則所述字段為零;
第二十一字段從偏移的第392字節(jié)開始,調(diào)整后大小字段占用8個字節(jié),用于示出進行大小調(diào)整操作后相應(yīng)分區(qū)的大小(以千字節(jié)為單位)。所述字段可以是零,表示該分區(qū)正通過大小調(diào)整操作被移除。
第二十二字段從偏移的第400字節(jié)開始,第四零位填充符字段1188占用96個字節(jié)的零位填充符。
第二十三字段從偏移的第496字節(jié)開始,有效數(shù)據(jù)庫信息字段1192占用16個字節(jié),表示該塊為一有效的數(shù)據(jù)庫信息塊。在一個代表性的實施例中,該字段1192用一個二進制數(shù)值與被視為有效的數(shù)據(jù)庫信息塊相匹配。若這個數(shù)據(jù)庫信息塊不含有有效的數(shù)據(jù)庫信息塊數(shù)據(jù),則不會如此解釋。例如,如果缺少所述字段1192,文件管理系統(tǒng)將會忽略該數(shù)據(jù)庫信息塊。在不同的實施例中,前述數(shù)據(jù)庫信息塊字段中的偏移量、字節(jié)長度和字段大小都可以進行改變。
圖12是根據(jù)本發(fā)明的一個實施例的允許NAS利用一個或多個數(shù)據(jù)存儲驅(qū)動器實現(xiàn)一個或多個數(shù)據(jù)庫的啟動程序的操作性流程圖。當然,在一個代表性的實施例中,所述一個或多個數(shù)據(jù)存儲驅(qū)動器可以是一個或多個硬盤驅(qū)動器。如圖12所示,所述網(wǎng)絡(luò)存儲設(shè)備通過啟動程序?qū)⑺鲋辽僖粋€數(shù)據(jù)存儲驅(qū)動器中的一個或多個分區(qū)進行鏈接或串接,進而構(gòu)成一個或多個數(shù)據(jù)庫。所述網(wǎng)絡(luò)存儲設(shè)備讀取所述數(shù)據(jù)存儲驅(qū)動器的磁盤頭文件以及數(shù)據(jù)庫信息塊,以便所述網(wǎng)絡(luò)存儲設(shè)備實現(xiàn)一個或多個數(shù)據(jù)庫。在步驟1204中,所述網(wǎng)絡(luò)存儲設(shè)備啟動,識別并檢測其數(shù)據(jù)存儲驅(qū)動器。步驟1208中,執(zhí)行所述網(wǎng)絡(luò)存儲設(shè)備內(nèi)存儲器中固化的軟件(參考前面關(guān)于附圖2的描述),對所述數(shù)據(jù)存儲驅(qū)動器進行掃描和分析。在所述啟動程序中,一個或多個增加的數(shù)據(jù)存儲驅(qū)動器將被所述網(wǎng)絡(luò)存儲設(shè)備發(fā)現(xiàn)并識別。步驟1212中,所述軟件通過讀取與所述數(shù)據(jù)存儲驅(qū)動器相關(guān)的磁盤頭文件來識別數(shù)據(jù)存儲驅(qū)動器內(nèi)的分區(qū)。然后,步驟1216中,所述軟件進一步讀取所述一個或多個數(shù)據(jù)存儲驅(qū)動器內(nèi)每個分區(qū)的數(shù)據(jù)庫信息塊。步驟1220中,刪除所有被視為無效的數(shù)據(jù)庫信息塊。如有必要的話,一個或多個被刪除的數(shù)據(jù)庫信息塊可以通過利用其對應(yīng)的(或副本的)數(shù)據(jù)庫信息塊來恢復(fù)。然后步驟1224中,所述網(wǎng)絡(luò)存儲設(shè)備判斷是否有分區(qū)丟失。例如,若chunk or pane分區(qū)明細表顯示某個分區(qū)無法定位,所述網(wǎng)絡(luò)存儲設(shè)備將認定所述分區(qū)已丟失,轉(zhuǎn)至步驟1228。步驟1228中,所述網(wǎng)絡(luò)存儲設(shè)備將提醒用戶安裝一個或多個數(shù)據(jù)存儲驅(qū)動器,所述數(shù)據(jù)存儲驅(qū)動器之前可能已被移除。步驟1236中,用戶可通過插入所述一個或多個含有已丟失的分區(qū)的數(shù)據(jù)存儲驅(qū)動器來校正前述問題。然后步驟1240中,所述一個或多個數(shù)據(jù)存儲驅(qū)動器中的一個或多個chunks and panes將根據(jù)chunk or pane分區(qū)明細表進行排序,然后整理流程結(jié)束。如無分區(qū)丟失,轉(zhuǎn)至步驟1224,對所述一個或多個數(shù)據(jù)存儲驅(qū)動器內(nèi)的一個或多個chunksand panes進行排序,以構(gòu)成一個或多個合適的數(shù)據(jù)庫,然后流程結(jié)束。
圖13是本發(fā)明一個實施例中的數(shù)據(jù)存儲設(shè)備中數(shù)據(jù)存儲驅(qū)動器的分區(qū)大小調(diào)整操作流程圖。所述數(shù)據(jù)存儲設(shè)備可以是網(wǎng)絡(luò)存儲設(shè)備。在一個代表性的實施例中,大小調(diào)整操作還包括給所述網(wǎng)絡(luò)存儲設(shè)備增加或刪除一數(shù)據(jù)庫。在步驟1304中,用戶給所述網(wǎng)絡(luò)存儲設(shè)備一個輸入,如一個請求,從而啟動大小調(diào)整操作。所述用戶輸入可以通過用戶界面產(chǎn)生,如對圖5的描述所述。用戶可以輸入“新數(shù)據(jù)庫名稱”,指明鏡像或分段,并判斷增加新數(shù)據(jù)庫后可用的容量。步驟1308中,通過一處理器(參考對圖2的描述)的控制執(zhí)行所述網(wǎng)絡(luò)存儲設(shè)備中存儲器內(nèi)固化的軟件。所述軟件將掃描并分析所述網(wǎng)絡(luò)存儲設(shè)備的一個或多個數(shù)據(jù)存儲驅(qū)動器提供的一個或多個磁盤頭文件信息。步驟1312中,所述軟件讀取所述一個或多個數(shù)據(jù)存儲驅(qū)動器的磁盤頭文件并進行分析。磁盤頭文件內(nèi)的兩個分區(qū)表涉及所述一個或多個數(shù)據(jù)存儲驅(qū)動器內(nèi)的一個或多個分區(qū)。步驟1316中,查找并讀取每對數(shù)據(jù)庫信息塊中的至少一個信息塊的大小調(diào)整字段。掃描過程中,所述軟件可以查找到用于大小調(diào)整操作的數(shù)據(jù)庫信息塊中的一個或多個字段。如前面對圖11的描述所述,掃描程序中將查找大小調(diào)整標志字段、反向變化量字段、正向變化量字段、調(diào)整前大小字段和調(diào)整后大小字段。步驟1320中,根據(jù)調(diào)整前大小字段和調(diào)整后大小字段調(diào)整和轉(zhuǎn)換所述數(shù)據(jù)存儲驅(qū)動器分區(qū)的大小。所述反向變化量字段和正向變化量字段分別用于監(jiān)控大小調(diào)整操作的反向或正向變化過程。步驟1324中,繼續(xù)轉(zhuǎn)換步驟直至分區(qū)達到新的大小。例如,當分區(qū)經(jīng)過刪除、增加或調(diào)整達到一定的大小時,程序結(jié)束。
以上是結(jié)合一定的實施例對本發(fā)明的描述,對本領(lǐng)域的技術(shù)人員來說,對本發(fā)明的各種更換和等效替換都未脫離本發(fā)明的保護范圍。任何根據(jù)本發(fā)明公開的內(nèi)容進行的具體環(huán)境和材料的修改均為脫離本發(fā)明的保護范圍。本發(fā)明的范圍并非僅限于前述已公開的具體實施例,所有落入從屬權(quán)利要求范保護范圍內(nèi)的具體實施例都屬于本發(fā)明的內(nèi)容。
權(quán)利要求
1.一種利用一個或多個數(shù)據(jù)存儲驅(qū)動器實現(xiàn)數(shù)據(jù)庫的方法,其特征在于,該方法包括建立一第一分區(qū)表和一第二分區(qū)表,所述第一分區(qū)表是所述第二分區(qū)表的鏡像,所述第一和/或第二分區(qū)表規(guī)定了數(shù)據(jù)存儲驅(qū)動器中一個或多個分區(qū)的位置和大小,所述數(shù)據(jù)存儲驅(qū)動器是數(shù)據(jù)存儲設(shè)備的所述至少一個數(shù)據(jù)存儲器中的一個;及其次,生成一第一數(shù)據(jù)庫信息塊和一第二數(shù)據(jù)庫信息塊,所述第一數(shù)據(jù)庫信息塊是所述第二數(shù)據(jù)庫信息塊的鏡像,所述第一或第二數(shù)據(jù)庫信息塊用于識別及鏈接一個或多個分區(qū),所述第一和/或第二數(shù)據(jù)庫信息塊存儲于所述至少一個數(shù)據(jù)存儲驅(qū)動器的每個所述分區(qū)內(nèi)。
2.如權(quán)利要求1所述的方法,其特征在于,該方法進一步包括識別所述一個或多個分區(qū)內(nèi)至少一個或多個字節(jié)片和窗格,并鏈接所述一個或多個程序塊和窗格以形成所述數(shù)據(jù)庫。
3.如權(quán)利要求1所述的方法,其特征在于,所述數(shù)據(jù)存儲驅(qū)動器包括硬盤驅(qū)動器。
4.一種利用一個或多個數(shù)據(jù)存儲驅(qū)動器調(diào)整數(shù)據(jù)庫分區(qū)大小的方法,其特征在于,該方法包括首先生成一第一數(shù)據(jù)庫信息塊和一第二數(shù)據(jù)庫信息塊,所述第一和第二數(shù)據(jù)庫信息塊位于每個分區(qū)的起始端,第一和第二數(shù)據(jù)庫信息塊用于識別所述分區(qū)。
5.一種利用數(shù)據(jù)存儲系統(tǒng)實現(xiàn)數(shù)據(jù)庫的方法,所述數(shù)據(jù)存儲系統(tǒng)包括至少一個數(shù)據(jù)存儲驅(qū)動器,其特征在于,所述方法包括為每一個所述存儲驅(qū)動器產(chǎn)生一第一分區(qū)表和一第二分區(qū)表,所述第一分區(qū)表和第二分區(qū)表相互鏡像。
6.一種數(shù)據(jù)存儲設(shè)備內(nèi)實現(xiàn)數(shù)據(jù)庫的方法,所述數(shù)據(jù)存儲設(shè)備包括一個或多個數(shù)據(jù)存儲驅(qū)動器,其特征在于,該方法包括利用所述一個或多個數(shù)據(jù)存儲驅(qū)動器分配存儲容量;利用所述一個或多個數(shù)據(jù)存儲驅(qū)動器對所述數(shù)據(jù)庫進行數(shù)據(jù)分段;利用所述一個或多個數(shù)據(jù)存儲驅(qū)動器對所述數(shù)據(jù)庫進行數(shù)據(jù)鏡像。
7.一種利用至少一個數(shù)據(jù)存儲驅(qū)動器為數(shù)據(jù)庫增加分區(qū)的方法,其特征在于,該方法包括首先,產(chǎn)生一第一數(shù)據(jù)庫信息塊和一第二數(shù)據(jù)庫信息塊,所述第一和第二數(shù)據(jù)庫信息塊位于每個分區(qū)的起始端,用于識別所述分區(qū);其次,在第個所述第一和第二數(shù)據(jù)庫信息塊內(nèi)生成一存儲第一值的第一字段;再次,生成一存儲第二值的第二字段,所述第二值指示所述分區(qū)增加前的大?。患白詈?,生成一存儲第三值的第三字段,所述第三值指示所述分區(qū)增加后的大小。
8.一種利用至少一個數(shù)據(jù)存儲驅(qū)動器實現(xiàn)數(shù)據(jù)庫的系統(tǒng),其特征在于,該方法包括一存儲器;一固化在所述存儲器內(nèi)的軟件;一執(zhí)行所述軟件的處理器,所述執(zhí)行能夠產(chǎn)生一第一分區(qū)表和一第二分區(qū)表,所述第一分區(qū)表是所述第二分區(qū)表的鏡像,所述第一和/或第二分區(qū)表提供所述至少一個數(shù)據(jù)存儲器的至少一個分區(qū)的位置和大小信息。
9.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述執(zhí)行能夠生成一第一數(shù)據(jù)庫信息塊和一第二數(shù)據(jù)庫信息塊,所述第一和第二數(shù)據(jù)庫信息塊位于每個分區(qū)的起始端,用于識別所述至少一個數(shù)據(jù)存儲驅(qū)動器的至少一個分區(qū)。
10.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述至少一個數(shù)據(jù)存儲驅(qū)動器是硬盤驅(qū)動器。
全文摘要
本發(fā)明的特征是利用一個或多個硬盤驅(qū)動器的某些部分或扇區(qū)實現(xiàn)一個或多個數(shù)據(jù)庫。本發(fā)明至少提出一種實現(xiàn)一個或多個數(shù)據(jù)庫的方法和系統(tǒng)。本發(fā)明利用一個或多個數(shù)據(jù)存儲驅(qū)動器實現(xiàn)數(shù)據(jù)庫的方法包括首先建立一第一分區(qū)表和一第二分區(qū)表,所述第一分區(qū)表是所述第二分區(qū)表的鏡像;然后生成一第一數(shù)據(jù)庫信息塊和一第二數(shù)據(jù)庫信息塊,所述第一數(shù)據(jù)庫信息塊是所述第二數(shù)據(jù)庫信息塊的鏡像。本發(fā)明利用至少一個數(shù)據(jù)存儲驅(qū)動器實現(xiàn)數(shù)據(jù)庫的系統(tǒng)包括一存儲器,一固化在所述存儲器內(nèi)的軟件,一執(zhí)行所述軟件的處理器。
文檔編號G06F17/30GK1722136SQ20051006740
公開日2006年1月18日 申請日期2005年4月14日 優(yōu)先權(quán)日2004年4月15日
發(fā)明者克里斯多佛·S·威爾遜, 維雷謝·拉斯特吉 申請人:美國博通公司