專利名稱:選擇性鏡像方法
技術領域:
本申請涉及用于在附網(wǎng)存儲(NAS)系統(tǒng)中,有效地實現(xiàn)廉價磁盤冗余陣列(RAID) 功能的選擇性鏡像方法。
背景技術:
眾所周知,RAID是在諸如硬盤的若干存儲裝置中冗余地存儲數(shù)據(jù)從而提高存儲裝 置的可靠性或整體性能的技術?;诰哂泄潭ù笮〉拇鎯橘|、分區(qū)等等來操作RAID,還基于具有基本固定大小 的硬盤來操作在NAS中的RAID。由此,用戶難以自由地變更存儲大小或RAID方法(級別)。 例如,如圖1所示,只要對四個硬盤設置RAID級別0或5,則不能修改(變更或改變)硬盤 的大小或RAID方法,除非重新初始化整個盤。因此,將RAID技術應用于NAS產(chǎn)生下述問題。首先,就靈活性而言,一旦構成了 RAID,則在再次初始化之前,不能將RAID修改成 另一 RAID方案。另外,因為RAID的最小構成單位是分區(qū),難以自由地改變RAID的大小。同時,就經(jīng)濟效益而言,如圖1所示,當將四個硬盤(HDD)構成為RAID 5時,根據(jù) RAID 5的特性,僅能使用RAID 5的整個容量的3/4,并且當將兩個HDD構成為RAID 1時, 僅能使用RAID 1的整個容量的一半。即,為獲得數(shù)據(jù)存儲的穩(wěn)定性,將要接受存儲容量的 冗余(即,以存儲容量的冗余為代價來獲得數(shù)據(jù)存儲穩(wěn)定性),以及RAID的重新配置導致大 量時間和成本。另外,在用戶方便方面,用戶僅必須在初始化系統(tǒng)時設置HDD的RAID區(qū),因此為了 在操作系統(tǒng)的過程中變更RAID區(qū),用戶必須將額外空間中的所有數(shù)據(jù)存儲為備份,重新配 置RAID區(qū),然后再次復制數(shù)據(jù)。這樣,在配置RAID時,用戶必須配置RAID區(qū),從而考慮數(shù)據(jù)的使用量、性能和穩(wěn)定 性來滿足這種目的,如果用戶的投影差距很大,用戶必定通過復雜的過程重新配置RAID,這 種復雜的過程浪費大量時間和成本。因此,如果用戶不具有將數(shù)據(jù)存儲為備份的額外存儲 裝置,則用戶將不能重新配置RAID。 換句話說,用在NAS系統(tǒng)中的RAID允許用戶獲得數(shù)據(jù)存儲的穩(wěn)定性或擴展的存儲 容量,但RAID不能同時滿足這兩個因素。另外,在操作系統(tǒng)的過程中,修改RAID結構導致 更多時間和成本。
發(fā)明內容
本發(fā)明的目的是提供一種方法,允許用戶按目錄或文件來指定鏡像,由此同時滿足數(shù)據(jù)存儲性能、容量和穩(wěn)定性。在一個方面中,用于相對于單一原本來維持一個或多個副本的選擇性鏡像方法包 括協(xié)作地或有選擇地執(zhí)行第一鏡像和第二鏡像,其中,第一鏡像包括在輸入/輸出發(fā)生的 時間點復制用于第一目錄或文件的輸入/輸出,并且第二鏡像包括在必要的時間點鏡像第 二目錄或文件。在另一方面中,網(wǎng)絡存儲系統(tǒng)被配置成包括貯存器系統(tǒng),所述貯存器系統(tǒng)包括 ROM、主貯存器和存儲裝置;輸入/輸出(I/O)模塊;網(wǎng)絡接口 ;和處理器,其中,當執(zhí)行鏡像 以使得在某一介質中或相對于在某一介質中記錄的單一原本的存儲裝置的不同介質中保 持一個或多個副本時,選擇性鏡像協(xié)作地或有選擇地執(zhí)行第一鏡像和第二鏡像,所述選擇 性鏡像在存儲在ROM或存儲裝置中并且當開啟系統(tǒng)時被加載和在主貯存器或處理器內的 存儲器中執(zhí)行的操作系統(tǒng)(OS)內核中實現(xiàn),其中,第一鏡像包括在輸入/輸出發(fā)生的時間 點復制用于第一目錄或文件的輸入/輸出,以及第二鏡像包括在必要的時間點鏡像第二目 錄或文件。可以在OS的內核層執(zhí)行第一和第二鏡像。第一鏡像可通過文件I/O系統(tǒng)調用的鉤掛(hooking)來執(zhí)行,在這種情況下,數(shù)據(jù) 以生成了文件1/0的應用所傳送的消息為單位來處理。第二鏡像可以在要求鏡像的時間點從睡眠狀態(tài)被喚醒以執(zhí)行給定操作,并且在這 種情況下,它可以由內核的守護進程(daemon)實現(xiàn)。當完整地鏡像目錄時,在鏡像過程中出現(xiàn)錯誤的情況下,或當在難以應用第一鏡 像的介質上執(zhí)行鏡像的情況下,可以執(zhí)行第二鏡像。當完整地鏡像目錄時,每次在目錄內的 單一文件或目錄上執(zhí)行鏡像時,考慮系統(tǒng)的空閑狀態(tài)。當在鏡像過程中出現(xiàn)錯誤時,如果錯 誤是可恢復的,則可將該錯誤登記到要對其中各條目執(zhí)行第二鏡像的列表中??梢钥紤]配置文件來執(zhí)行第一鏡像和第二鏡像。配置文件可以包括將被鏡像的一 個或多個原始文件或目錄、第一鏡像/第二鏡像選擇、用于存儲副本的介質、第二鏡像執(zhí)行 時間或第二鏡像執(zhí)行時段、第二鏡像執(zhí)行條款和恢復方法中的至少一個。當修改配置文件 時,將配置的修改提供給內核的鏡像守護進程。用來存儲原本和副本的介質可以包括硬盤、光盤、非易失閃存、USB存儲裝置和經(jīng) 網(wǎng)絡連接的存儲裝置中的一個或多個。根據(jù)本發(fā)明,能提高NAS系統(tǒng)的數(shù)據(jù)穩(wěn)定性和用戶便利性,以及能在NAS中實現(xiàn) RAID功能,而不必使用戶的復雜設置或改變程序。
將參考附圖,詳細地描述該文獻的實施方式,其中,相同的數(shù)字表示相同的元件。 其中圖1示例說明一般廉價磁盤冗余陣列(RAID)的結構;圖2是根據(jù)本發(fā)明的示例性實施例的選擇性鏡像方法的原理圖;圖3示例說明應用一般RAID的分層結構;圖4示例說明應用根據(jù)本發(fā)明的示例性實施例的選擇性鏡像方法的分層結構;圖5示例說明在根據(jù)本發(fā)明的示例性實施例的選擇性鏡像方法中使用的文件輸入/輸出(I/O)系統(tǒng)調用的例子;圖6是根據(jù)本發(fā)明的示例性實施例的選擇性鏡像方法的原理框圖;圖7至9是用于說明在根據(jù)本發(fā)明的示例性實施例的內核中和用戶應用中實現(xiàn)的 直接鏡像與RAID鏡像間的比較的框圖;圖10至16是示例說明通過根據(jù)本發(fā)明的示例性實施例的直接鏡像執(zhí)行的每一文 件I/O系統(tǒng)調用的操作的過程的流程圖;圖17是示例說明根據(jù)本發(fā)明的示例性實施例的異步鏡像的過程的流程圖;圖18至23是示例說明通過根據(jù)本發(fā)明的示例性實施例的異步鏡像執(zhí)行的每一功 能的操作的過程的流程圖;圖24示例說明根據(jù)本發(fā)明的示例性實施例的選擇性鏡像的配置文件;以及圖25示例說明應用本文獻的NAS的結構。
具體實施例方式現(xiàn)在,將參考附圖,詳細地描述根據(jù)本發(fā)明的示例性實施例的選擇性鏡像。根據(jù)本發(fā)明的示例性實施例的選擇性鏡像方法以目錄或文件,包括文件夾,作為 基本單位來應用,能適用于多個目錄或多個文件,并且保持單一原本的一個或多個副本。在本發(fā)明的實施例中,能執(zhí)行與廉價磁盤冗余陣列(RAID)功能類似的讀/寫功 能,以及還能執(zhí)行用于冗余存儲一個或多個數(shù)據(jù)的鏡像功能,從而在諸如附網(wǎng)存儲(NAS) 系統(tǒng)等等的裝置損壞時,防止數(shù)據(jù)丟失。例如,如圖2所示,當把用戶數(shù)據(jù)記錄在第一硬盤(或HDD1)的第一目錄1(或目 錄1)中時,在一個或多個其他存儲介質(例如HDD1、HDD2、閃存、e-Sata網(wǎng)絡等等)中,把 該用戶數(shù)據(jù)冗余地記錄為第一鏡像(或鏡像1)。同時,當管理或操作這種設備時,可以變更鏡像結構;或在內核層,例如操作系統(tǒng) (OS)的Linux內核層中實現(xiàn)鏡像。通常,如圖3所示,在Iinux系統(tǒng)的文件I/O棧的文件系統(tǒng)層中實現(xiàn)RAID核心驅 動;而如圖4所示,通過文件I/O系統(tǒng)調用的鉤掛、內核和用戶間的接口來實現(xiàn)根據(jù)本發(fā)明 的示例性實施例的鏡像。通過根據(jù)本發(fā)明的示例性實施例的鏡像,當原始文件有錯誤時,用戶能手動或自 動地對其進行恢復,以及當原始文件正常時,用戶為寫入不必訪問原始文件??梢杂捎脩粼O 置是自動還是手動地恢復原始文件。根據(jù)本發(fā)明的示例性實施例的鏡像被設計成適當?shù)靥幚懋a(chǎn)生的錯誤,例如,HDD容 量短缺、壞扇區(qū)、文件系統(tǒng)故障等等。例如,在其中寫入鏡像數(shù)據(jù)的目的地介質可以是相同 的HDD、不同的HDD、USB存儲裝置、e_Sata、網(wǎng)絡(例如NFS,Samba)、0DD (光盤驅動)等等。 同時,其不限于此,能安裝在文件系統(tǒng)中的各種裝置均是適用的。同時,如參考圖4所述,通過文件I/O系統(tǒng)調用中的鉤掛、內核和用戶間的接口, 可以實現(xiàn)根據(jù)本發(fā)明的示例性實施例的鏡像,即選擇性鏡像方法,并且在這種情況下,用 戶應用程序通過使用各種系統(tǒng)調用,例如,打開、關閉、讀、寫、rm(刪除)、鏈接、解除鏈接、 rmdir (刪除目錄)、重命名等等來操作文件。如圖5所示,系統(tǒng)調用函數(shù)sys_0pen處理打開或創(chuàng)建文件的操作,sys_cl0se處理關閉文件的操作,sys_read處理從文件讀數(shù)據(jù)的操作,以及sys_Write處理把數(shù)據(jù)寫入 文件的操作。系統(tǒng)調用函數(shù)sys_link處理生成硬鏈接(hard link)的操作,sys_symlink處理 創(chuàng)建系統(tǒng)鏈接的操作,sys_imlink處理刪除文件或鏈接的操作,sys_dup處理復制文件描 述符的操作,以及sysjename處理改變文件名(或重命名文件)的操作。同時,在根據(jù)本發(fā)明的示例性實施例的選擇性鏡像方法中,基本上,用戶或用戶程 序所生成的文件I/O被監(jiān)控,當為了執(zhí)行對已經(jīng)設置鏡像的文件或目錄生成的文件I/O時, 復制相應的文件1/0,如果已經(jīng)設置為對現(xiàn)有文件或目錄(或文件夾)進行鏡像,則現(xiàn)有的 文件均被鏡像。圖6是根據(jù)本發(fā)明的示例性實施例的選擇性鏡像方法的原理框圖。根據(jù)本發(fā)明的 示例性實施例的選擇性鏡像包括直接鏡像100和同步和異步鏡像200。當對應于原始介質300和鏡像介質400的物理介質的I/O帶寬和可靠性幾乎相似 時,使用直接鏡像100。另一方面,如果當鏡像介質400的I/O帶寬和可靠性存在顯著差別時,使用直接鏡 像100,原始介質的性能和可靠性被降低。因此,在這種情況下,作為替代,使用同步和異步 鏡像200。同步和異步鏡像200可以簡單地稱為異步鏡像?,F(xiàn)在,將描述每一模塊。首先,現(xiàn)在將描述直接鏡像100。在生成文件I/O的時間點,直接鏡像100通過系 統(tǒng)調用的鉤掛來執(zhí)行實時I/O復制。因為在內核層中驅動該模塊,所以不影響用戶應用,還 因為在用戶和內核間不會發(fā)生數(shù)據(jù)復制,所以能獲得最佳性能。例如,圖7-9是用于說明在用戶應用和內核中實現(xiàn)的直接鏡像與RAID鏡像間的比 較的框圖。直接鏡像與RAID類似,但直接鏡像的數(shù)據(jù)存儲單元是傳送到應用的消息,而不 是塊。然而,在直接鏡像中,盡管以消息為單位存儲數(shù)據(jù),但數(shù)據(jù)在通過內核內的低級驅動 器(例如SCSI、SATA、PATA等)的同時被劃分成塊,以便存儲。這表示直接鏡像按應用所提供的消息處理數(shù)據(jù),而RAID按塊處理數(shù)據(jù)。在將數(shù)據(jù) 真正存儲在HDD中時,兩種方法均允許按塊(或扇區(qū))存儲數(shù)據(jù)。同時,在應用中實現(xiàn)或在內核中實現(xiàn)的直接鏡像被如下進行比較。例如,與在圖8 的內核中實現(xiàn)的直接鏡像相比,在圖7的應用中實現(xiàn)的直接鏡像是低效的,因為貯存器復 制發(fā)生兩次,導致延長的執(zhí)行路徑而延長了等待時間。同時,與在內核中實現(xiàn)的直接鏡像相 比,在應用中實現(xiàn)的直接鏡像僅執(zhí)行數(shù)據(jù)備份功能。同時,與在內核中實現(xiàn)的直接鏡像不同,在應用中實現(xiàn)的直接鏡像不易于執(zhí)行各 種控制功能,例如,鏡像數(shù)據(jù)的用戶隱藏、防刪除等等。圖10至16是示例說明根據(jù)本發(fā)明的示例性實施例,通過內核中的直接鏡像執(zhí)行 的每一系統(tǒng)調用的操作的過程的流程圖。例如,圖10中的文件打開函數(shù)如下執(zhí)行。打開原始文件(SlO)。當相應文件是鏡 像源目錄(MSD)內的文件時(Sll中為是),打開鏡像文件(S12),以及構建用作搜索相應文 件的指針的散列(hash) (S13)。圖11中的文件關閉函數(shù)如下執(zhí)行。關閉原始文件(S20)。做散列并搜索鏡像 (S21)。當找到鏡像時(S22中為是),關閉所找到的鏡像文件(S23),并刷新(flush)所述 散列(S24)。
圖12中的文件寫入函數(shù)如下執(zhí)行。寫入原始文件(S30)。制作散列并搜索鏡像 (S31)。當找到鏡像時(S32中為是),檢測所找到的鏡像是否是直接鏡像(S33)。當所找到 的鏡像是異步鏡像,而不是直接鏡像時(S33中為否),執(zhí)行相應的功能(S34)。當所找到的 鏡像是直接鏡像時(S33中為是),設置在其中將寫入鏡像文件的文件位置(S35),以及寫入 由用戶提供的數(shù)據(jù)(S36)。在圖13的文件讀取函數(shù)中,僅執(zhí)行讀取原始文件的操作(S40)。圖14的文件鏈接 函數(shù)如下執(zhí)行。對原始文件進行鏈接(S50)。當鏈接目的地在鏡像源目錄(MSD)中時(S51 中為是),終止該過程,否則(S51中為否),如果原始文件是MSD中的源時(S52中為是),鏈 接相應的鏡像文件(S53)。圖15中的文件解除鏈接函數(shù)如下執(zhí)行。對原始文件解除鏈接(S60)。制作散列并 搜索鏡像(S61)。當找到鏡像時(S62中為是),對所找到的鏡像解除鏈接(S63)。圖16中的文件復制(文件dup/dup2)函數(shù)如下執(zhí)行。復制原始文件(S70)。制作 散列并搜索鏡像(S71)。當找到鏡像時(S72中為是),復制文件并制作散列?,F(xiàn)在,將描述異步鏡像。例如,當執(zhí)行全同步時,當介質不可用于直接鏡像時,或當在直接鏡像期間產(chǎn)生錯 誤時,執(zhí)行異步鏡像。由內核守護進程實現(xiàn)異步鏡像,并且在需要鏡像的時間點從睡眠狀態(tài) 中喚醒異步鏡像,使得執(zhí)行給定的操作。圖17是示例說明由異步鏡像執(zhí)行的函數(shù)的流程圖。首先,讀取配置(S80),等待是 否由例如用戶應用或直接鏡像發(fā)出命令(S81)。當接收到命令時(S81中為是),檢測所收 到的命令。當所檢測的命令是恢復命令時(S82中為是),調用故障恢復,并執(zhí)行相應的例程 (S83)。當所收到的命令不是恢復命令(S82中為否),而是目錄同步(S84中為是),調用全 同步函數(shù)并執(zhí)行相應的例程(S85)。當不是目錄同步時(S84中為否),調用單個文件同步 函數(shù),并執(zhí)行相應的例程(S86),然后移除所執(zhí)行的命令。圖18是示例說明單一文件同步函數(shù)的操作的流程圖。當調用單一文件同步函數(shù) 時,打開具有只讀標記集的源文件(S90),以及打開具有寫入標記集的目的地文件(S92)。 如果當打開源文件或目的地文件時,錯誤發(fā)生(S91或S93中為是),調用并執(zhí)行處理錯誤的 錯誤處理程序函數(shù)(S94)。當無錯誤地打開目的地文件時(S93中為否),調用并執(zhí)行用于比較兩個文件和檢 測它們之間區(qū)別的區(qū)分文件函數(shù)(S95)。如果兩個文件間沒有區(qū)別(S96為否),終止該過 程。如果有區(qū)別(S96中為是),將源文件復制到目的地文件(S96)并關閉源文件和目的地 文件(S98)。圖19是示例說明全同步函數(shù)的操作的流程圖。當調用全同步函數(shù)時,生成文件和 /或目錄列表來執(zhí)行目錄同步(Sioo),并執(zhí)行后續(xù)操作,直到列表上的所有條目(文件或目 錄)均同步為止(SlOl)。首先,調用空閑檢測函數(shù)以檢測系統(tǒng)是閑還是忙(S102)。當檢測到系統(tǒng)是忙時,其 睡眠一段時間(S103)。當系統(tǒng)閑時,調用單一文件同步函數(shù)(S104)并重復執(zhí)行直到在列表上的所有條 目上均執(zhí)行同步為止。當單一文件同步操作中出現(xiàn)錯誤時,調用錯誤處理程序(S105)。當 錯誤可恢復時(S106中為是),重復執(zhí)行步驟SlOl至S104。如果錯誤不可恢復(S106中為否),將該錯誤處理為致命錯誤并終止該過程。這樣,即使全同步開始,也應當盡可能不干擾用戶的操作。因此,在完成一個文件 的拷貝后,讀取系統(tǒng)空閑狀態(tài)并且僅當其大于用戶指定值(缺省30)時,下一文件的拷貝 才開始。圖20是示例說明區(qū)分文件函數(shù)的操作的流程圖。區(qū)分文件函數(shù)獲取源和鏡像文 件的信息(SllO),以及比較每一文件的模式、時間、大小、權限等等(Slll)。當源文件和鏡 像文件相同時(S112中為是),區(qū)分文件函數(shù)返回True(I) (S113)。如果源文件和鏡像文件 不相同(S112中為否),區(qū)分文件函數(shù)返回False (0)。為避免即使當源文件和鏡像文件相同時也將源文件的數(shù)據(jù)復制到鏡像文件的開 銷,有必要首先檢測是否要求復制該文件。在這種情況下,可以使用預先獲得相對于文件的 每一檢測和(checksum),對檢測和進行存儲,然后僅比較源文件和可能使用的鏡像文件的 散列,但這種方法實現(xiàn)起來很復雜。因此,作為替代,在本發(fā)明的示例性實施例中,通過比較 文件的修改時間、權限、大小等等,識別是否已經(jīng)修改過該文件。圖21中的檢測空閑函數(shù)獲得系統(tǒng)的當前空閑度和在配置中存儲的空閑比 (S120),并且將當前空閑度與在配置中存儲的空閑比進行比較(S121)。如果當前空閑度大 于在配置中存儲的空閑比(S122),檢測空閑函數(shù)返回True(I) (S123),否則,檢測空閑函數(shù) 返回 False(O) (S124)。除內部HDD、SSD (固態(tài)磁盤)或非易失閃存外,使用異步鏡像來將鏡像應用于各種 介質,例如,諸如nfs、samba, iSCSI、Α0Ε(以太網(wǎng)上的ATA)的網(wǎng)絡驅動器、光存儲裝置、諸 如USB閃存或USB接口的外部硬盤的USB存儲裝置、e-Sata外部HDD等等。同時,因為可以在諸如HDD、USB、網(wǎng)絡等等的各種介質中執(zhí)行鏡像,因此,非常有可 能發(fā)生各種錯誤。由此,當在錯誤出現(xiàn)或直接鏡像不可用的情況下,要求錯誤處理程序函數(shù) 來處理錯誤,并且需要適當?shù)靥幚砀鞣N錯誤。在鏡像中,可以想到的是諸如文件系統(tǒng)故障、壞扇區(qū)、磁盤容量短缺、文件鎖定等 等的錯誤。當正在執(zhí)行寫入而強制關掉電源時,或當隨意地拔掉外部設備的插頭(即使其 轉變成關閉狀態(tài))時,出現(xiàn)文件系統(tǒng)故障錯誤。在這種情況下,可以生成使用戶識別的告警 聲,或可以執(zhí)行故障恢復函數(shù)。當存儲介質破損,或在執(zhí)行寫入的同時關閉電源時,會出現(xiàn)壞扇區(qū)錯誤。同時,在 這種情況下,可以生成用于使用戶識別的告警聲,或可以執(zhí)行故障恢復函數(shù)。當在寫滿數(shù)據(jù)的存儲介質中沒有額外的空間時,出現(xiàn)磁盤容量短缺錯誤。在這種 情況下,可以生成用于使用戶識別的告警聲,可以中斷鏡像,或可以執(zhí)行臨時文件刪除。當 不同的用戶應用正打開相應的文件時,發(fā)生文件鎖定錯誤。在這情況下,可以通過異步鏡像 方案,處理該錯誤。圖22是示例說明錯誤處理程序函數(shù)的操作的流程圖。錯誤處理程序函數(shù)解析錯 誤碼(S130)。當錯誤碼是可恢復時(S131中為是),錯誤處理程序函數(shù)排隊到異步鏡像守 護進程(S132),并執(zhí)行日志操作(S133)。如果錯誤碼是致命錯誤(S131中為否),發(fā)出告警 聲使操作者識別(S134)。接著,將描述故障恢復。硬盤在其操作期間,會有可能通過壞扇區(qū)、文件系統(tǒng)故障 等等而受到損壞。在這種情況下,如果采用選擇性鏡像,能恢復原始文件。
作為用于處理當存在損壞的原始文件的副本時的情形的方法,首先,存在提醒用 戶的僅告警方法。僅告警允許用戶手動地復制相應文件,并且可以使用日志、蜂鳴器、LED、 電子郵件、管理程序等等來作為告警方法。接著,存在依照用戶的恢復方法,通過用戶選擇來進行恢復。該方法允許用戶通過 管理程序來恢復相應文件,并需要與管理程序相互作用。另外,存在自動復制和驗證方法。通過該方法,對相應的原始文件進行重命名,將 副本處理為原始復制目錄中的新原始文件,并且對新生成的原始文件和副本進行比較和驗 證。另外,存在重定向鏡像方法。在該方法中,對相應的原始文件進行重命名,并且在 原始復制目錄中生成表示副本的硬鏈接。該方法允許用于用戶端的最快速恢復,但因為僅 存在一個復制,所以降低了穩(wěn)定性。此外,存在無意刪除備份方法。當由于壞扇區(qū),或者在文件系統(tǒng)恢復過程中與用戶 的意愿相反地非有意地刪除了原始文件時,例如,當在沒有用戶的直接刪除命令的情況下, 刪除了文件時,不刪除副本,而是將副本復制到在額外的目錄中(./orphan)。由異步鏡像 來處理該操作。同時,存在如下的可能性,即,當在文件系統(tǒng)中出現(xiàn)問題,或當執(zhí)行日志處理 或fsck命令等等時,將文件刪除。在與用戶的意圖相反進行文件刪除的情況下,異步鏡像 函數(shù)可以將相應的鏡像文件移動到特定目錄(./orphan),而不立即刪除相應的鏡像文件。同時,還存在壞扇區(qū)恢復方法。該方法是相對于邏輯壞扇區(qū)進行恢復,其能被添加 作為與選擇性鏡像分離的的函數(shù)。同時,還存在重命名方法。當損壞原始文件時,使用該方法。當損壞原始文件時, 存在放置文件的扇區(qū)有問題的高可能性,因此,相應的文件和扇區(qū)必須仍然是未動過的,以 便稍后進行檢查。至此,可以僅改變相應的名稱,并且在文件名前添加前綴“_craShed_”。圖23是示例說明故障恢復函數(shù)的操作的流程圖。故障恢復函數(shù)檢測在故障錯誤 出現(xiàn)時是否存在原始文件(S140)。如果原始文件不存在(S140中為否),故障恢復函數(shù)檢 測鏡像文件是否存在(S141)。當鏡像文件存在時(S141中為是),故障恢復函數(shù)將鏡像文 件移動到“./orphan"目錄(S142)。同時,當原始文件存在時(S140中為是),故障恢復函數(shù)解析在配置中存儲的恢復 選項(S143)。當選項是復制和驗證時(S144),故障恢復函數(shù)將“_crashed_”前綴加到原始 文件的名稱前,以對其進行重命名(S145),并將鏡像文件復制到原始目錄(S146)。當選項是重定向到鏡像時(S144),故障恢復函數(shù)將“_CraShed_”前綴加到原始文 件的名稱前,以對其進行重命名(S147),以及硬鏈接具有與原始文件相同的名稱的鏡像文 件(S148)。在選擇性鏡像中,可以讀取圖24中所示的選擇性鏡像配置文件,以準備相應的操作。在圖24的配置文件中的“#選擇性鏡像”中,第一行中的MIRR0R:RM: "/home/ anyong,,> "/mnt/hddl/mirror"表示將 /home/anyong 雙拷貝(或重復)到 HDDl 的鏡像, 并且第二行中的 MIRROR:CV: “/home/photo” > “/mnt/hddl/photo_mir” 表示將 /home/ photo 雙拷貝到 HDDl 的 photo_mir。第三行中的 MIRR0R:CV: “/home/photo” > “/mnt/ hdd2/photo_mir” 表示將 /home/photo 雙拷貝到 HDD2 的 photo_mir。
10
同時,在“# 配置”中,F(xiàn)ULL_SYNC_MIN_IDLE = 30 和 FULL_SYNC_PERIOD = 60 表 示當系統(tǒng)空閑超過30%時必須執(zhí)行全同步,以及全同步中的原本重復比較周期(單位分 鐘)。當在裝置的操作期間,用戶或配置管理員手動地變更配置文件時,配置文件已經(jīng) 被變更的事實可以通過諸如,例如,echol > /proc/reload_sm_conf的命令來通知給選擇 性鏡像守護進程。因此,在NAS系統(tǒng)中,通過按由用戶指定的目錄或文件來執(zhí)行鏡像,以提高數(shù)據(jù)穩(wěn) 定性和用戶便利性,而不必配置RAID。另外,因為在內核層中實現(xiàn)選擇性鏡像,能實現(xiàn)與 RAID基本上相同的性能,以及不要求用戶復雜的配置或程序變更。采用根據(jù)本發(fā)明的示例性實施例的選擇性鏡像方法的NAS可以包括處理器110、 多個I/O模塊120、網(wǎng)絡接口 130,以及包括ROM 141、主貯存器DRAM 142和大容量存儲裝置 143的貯存器系統(tǒng)140。各個元件可以由總線系統(tǒng)連接??偩€系統(tǒng)可以包括通過幾個橋接器、控制器和/或適配器連接的一個或多個總 線。例如,總線系統(tǒng)可以是以適配器為媒介,連接到一個或多個諸如PCI (外圍部件互連) 總線等等的擴展總線的系統(tǒng)總線。I/O模塊120可以是例如鍵盤、鼠標、顯示設備和/或任何其他傳統(tǒng)的I/O設備。 網(wǎng)絡接口 130提供網(wǎng)絡中的一個和另一個計算機系統(tǒng)間的數(shù)據(jù)通信。大容量存儲裝置143 可以包括硬盤驅動、光盤驅動、SSD、網(wǎng)絡驅動、USB存儲等等。操作系統(tǒng)(OS)、操作NAS的主程序可以存儲在ROM 141或大容量存儲裝置143中。 當開啟NAS時,將OS加載到主貯存器142或處理器110的內部貯存器,并且在其中保持駐 留,以允許用戶或應用軟件訪問物理硬件設備或其他資源。作為OS的關鍵部分的內核是有效地管理系統(tǒng)資源的資源管理器。駐留在處理器 110和/或主貯存器142中的內核對諸如設備或貯存器的硬件資源進行管理,對處理調度進 行管理,實現(xiàn)多處理,以及處理與系統(tǒng)連接的I/O。 在驅動NAS的Linux內核中,實現(xiàn)根據(jù)本發(fā)明的示例性實施例的選擇性鏡像功能, 并且通過文件I/O系統(tǒng)調用的鉤掛,通過內核與用戶或應用間的接口來執(zhí)行直接鏡像和同 步/異步鏡像功能,以及在這種情況下,包括在大容量存儲裝置143的某一介質中的文件夾 或文件的一個或多個副本被維持在包括在大容量存儲裝置143中的一個或多個存儲介質 中。同時,在選擇性鏡像中,參考在ROM 141的介質或大容量存儲裝置143中存儲的配 置文件,執(zhí)行鏡像功能。配置文件可以包括鏡像目標文件或目錄、直接鏡像/異步鏡像選 擇、用于存儲鏡像的文件(副本)的介質、異步鏡像執(zhí)行時間或異步鏡像執(zhí)行時段、異步鏡 像執(zhí)行條款、錯誤恢復方法等等。即使在OS操作時,通過變更配置文件,可以修改選擇性鏡 像的操作形式。作為參考,RAID和鏡像均是常規(guī)技術,因此,省略這些技術的詳細描述。盡管參照多個示例性實施例描述了本發(fā)明,但應理解本領域的技術人員能想到落 在本公開的原理的范圍內的許多其他改進和實施例。更具體地說,在說明書、附圖和權利要 求的范圍內,在本發(fā)明的各種變形和改進是可能的。對本領域的技術人員而言,除部件和/ 或布置的變形和改進外,替代用法也是顯而易見的。
權利要求
一種選擇性鏡像方法,用于相對于單一原本來維持一個或多個副本,所述方法包括協(xié)作地或有選擇地執(zhí)行第一鏡像和第二鏡像,其中,所述第一鏡像包括在發(fā)生輸入/輸出的時間點復制用于第一目錄或文件的輸入/輸出,以及所述第二鏡像包括在必要的時間點鏡像第二目錄或文件。
2.如權利要求1所述的方法,其中,在操作系統(tǒng)(OS)的內核層執(zhí)行所述第一鏡像和所述第二鏡像。
3.如權利要求2所述的方法,其中,通過文件I/O系統(tǒng)調用的鉤掛來執(zhí)行所述第一鏡像。
4.如權利要求3所述的方法,其中,在所述第一鏡像中,數(shù)據(jù)以生成了文件I/O的應用 所傳送的消息為單位來處理。
5.如權利要求2所述的方法,其中,在要求鏡像的時間點從睡眠狀態(tài)喚醒所述第二鏡 像,以執(zhí)行給定操作。
6.如權利要求5所述的方法,其中,由內核的守護進程來實現(xiàn)所述第二鏡像。
7.如權利要求2所述的方法,其中,在完整地鏡像所述目錄時,在鏡像過程中出現(xiàn)錯誤 的情況下,或在難以應用所述第一鏡像的介質上執(zhí)行鏡像的情況下,執(zhí)行所述第二鏡像。
8.如權利要求7所述的方法,其中,在所述第二鏡像中,在完整地鏡像目錄的情況下, 每次在所述目錄內的單一文件或目錄上執(zhí)行鏡像時,考慮系統(tǒng)的空閑狀態(tài)。
9.如權利要求7所述的方法,其中,當在鏡像過程中出現(xiàn)錯誤時,如果所述錯誤是可恢 復的,將所述錯誤登記到要對其中各條目執(zhí)行所述第二鏡像的列表。
10.如權利要求2所述的方法,其中,考慮配置文件來執(zhí)行所述第一鏡像和所述第二鏡像。
11.如權利要求10所述的方法,其中,所述配置文件包括下述至少之一將被鏡像的一 個或多個原始文件或目錄、第一鏡像/第二鏡像選擇、用于存儲副本的介質、第二鏡像執(zhí)行 時間或第二鏡像執(zhí)行時段、第二鏡像執(zhí)行條款和恢復方法。
12.如權利要求10所述的方法,其中,當修改所述配置文件時,將配置的修改提供給所 述內核的鏡像守護進程。
13.如權利要求1所述的方法,其中,用來存儲所述原本和副本的介質包括下述的一個 或多個硬盤、光盤、非易失閃存、USB存儲裝置和經(jīng)網(wǎng)絡連接的存儲裝置。
14.一種網(wǎng)絡存儲系統(tǒng),所述網(wǎng)絡存儲系統(tǒng)被配置包括包含有ROM、主貯存器和存儲 裝置的存儲器系統(tǒng);輸入/輸出(I/O)模塊;網(wǎng)絡接口 ;和處理器,其中,當執(zhí)行鏡像以使得在某一介質或相對于在某一介質中記錄的單一原本的存儲裝 置的不同介質中保持一個或多個副本時,選擇性鏡像協(xié)作地或有選擇地執(zhí)行第一鏡像和第 二鏡像,其中,所述選擇性鏡像在操作系統(tǒng)(OS)內核中實現(xiàn),所述操作系統(tǒng)(OS)內核存儲 在ROM或存儲裝置中并且當開啟系統(tǒng)時被加載并且在主貯存器或處理器內的貯存器中執(zhí) 行,其中,所述第一鏡像包括在發(fā)生輸入/輸出的時間點復制用于第一目錄或文件的輸入 /輸出,以及所述第二鏡像包括在必要的時間點鏡像第二目錄或文件。
15.如權利要求14所述的系統(tǒng),其中,在所述選擇性鏡像中,通過文件I/O系統(tǒng)調用的鉤掛來執(zhí)行所述第一鏡像。
16.如權利要求15所述的系統(tǒng),其中,在所述第一鏡像中,數(shù)據(jù)以生成了文件I/O的應 用所傳送的消息為單位來處理。
17.如權利要求14所述的系統(tǒng),其中,在所述選擇性鏡像中,由所述內核的守護進程實 現(xiàn)所述第二鏡像。
18.如權利要求14所述的系統(tǒng),其中,在所述選擇性鏡像中,當完整地鏡像所述目錄 時,在鏡像過程中發(fā)生錯誤的情況下,或在難以應用所述第一鏡像的介質上執(zhí)行鏡像的情 況下,執(zhí)行所述第二鏡像。
19.如權利要求18所述的系統(tǒng),其中,在所述第二鏡像中,在完整地鏡像目錄的情況 下,每次在所述目錄內的單一文件或目錄上執(zhí)行鏡像時,考慮系統(tǒng)的空閑狀態(tài)。
20.如權利要求18所述的系統(tǒng),其中,在所述選擇性鏡像中,當在鏡像過程中發(fā)生錯誤 時,如果所述錯誤是可恢復的,將所述錯誤登記到要對其中各條目執(zhí)行所述第二鏡像的列 表。
21.如權利要求14所述的系統(tǒng),其中,所述ROM或存儲裝置存儲配置文件,在所述選擇 性鏡像中,考慮所述配置文件來執(zhí)行所述第一鏡像和所述第二鏡像。
22.如權利要求21所述的系統(tǒng),其中,所述配置文件包括下述至少之一將被鏡像的一 個或多個原始文件或目錄、第一鏡像/第二鏡像選擇、用于存儲副本的介質、第二鏡像執(zhí)行 時間或第二鏡像執(zhí)行時段、第二鏡像執(zhí)行條款和恢復方法。
23.如權利要求21所述的系統(tǒng),其中,當檢查到所述配置文件被修改時,將所述配置的 修改提供給所述內核的鏡像守護進程。
24.如權利要求14所述的系統(tǒng),其中,所述存儲裝置包括下述的一個或多個硬盤驅 動、光盤驅動、非易失閃存、USB存儲裝置和經(jīng)網(wǎng)絡連接的存儲裝置。
全文摘要
公開了一種選擇性鏡像方法。在這種選擇性鏡像中,協(xié)作地或有選擇地執(zhí)行第一鏡像和第二鏡像,第一鏡像在發(fā)生輸入/輸出的時間點用于復制第一目錄或文件的輸入/輸出,第二鏡像在必要的時間點用于鏡像第二目錄或文件。可以在OS的內核層中執(zhí)行選擇性鏡像??梢酝ㄟ^文件I/O系統(tǒng)調用的鉤掛來執(zhí)行第一鏡像??梢杂墒刈o進程實現(xiàn)第二鏡像。在完整鏡像目錄時,當鏡像過程中出現(xiàn)錯誤時,或當要在難以應用第一鏡像的介質上執(zhí)行鏡像時,可以執(zhí)行第二鏡像。在要求鏡像的時間點從睡眠狀態(tài)喚醒第二鏡像以執(zhí)行給定操作。
文檔編號G06F11/14GK101883135SQ201010174318
公開日2010年11月10日 申請日期2010年5月6日 優(yōu)先權日2009年5月6日
發(fā)明者安容賢 申請人:日立-Lg數(shù)據(jù)存儲韓國公司