国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      存儲設備的制作方法

      文檔序號:6352041閱讀:219來源:國知局
      專利名稱:存儲設備的制作方法
      技術領域
      本發(fā)明涉及存儲設備,更具體地涉及消除相同內(nèi)容的數(shù)據(jù)的重復存儲(duplicated storage)的存儲設備。
      背景技術
      近年來,隨著計算機的發(fā)展和普及,各種信息被數(shù)字化。作為用于存儲此類數(shù)字數(shù)據(jù)的設備,存在諸如磁帶和磁盤之類的存儲設備。由于應當被存儲的數(shù)據(jù)量日益增加并且已經(jīng)非常巨大,因此需要大容量存儲系統(tǒng)。另外,除了減少在存儲設備上花費的成本,還需要可靠性。另外,還需要日后能夠容易地獲取數(shù)據(jù)。因此,期望可以自動實現(xiàn)存儲容量和性能的提高、消除重復存儲以降低存儲成本并且具有高冗余度的存儲系統(tǒng)。 在這種環(huán)境下,近年來,如專利文獻I中所示,已經(jīng)開發(fā)出內(nèi)容可尋址的存儲系統(tǒng)。該內(nèi)容可尋址的存儲系統(tǒng)通過取決于數(shù)據(jù)的內(nèi)容指定的唯一內(nèi)容地址(指定了存儲數(shù)據(jù)的存儲位置)將數(shù)據(jù)分發(fā)并存儲至多個存儲設備。具體地,內(nèi)容可尋址的存儲系統(tǒng)將預定數(shù)據(jù)分成多個片段并添加作為冗余數(shù)據(jù)的片段,并且繼而將這些片段分別存儲至多個存儲設備中。稍后,可以指定內(nèi)容地址來獲取數(shù)據(jù)(即,存儲在由內(nèi)容地址指定的存儲位置的片段),并且在預定數(shù)據(jù)被分離成片段之前對其進行重新存儲。此外,例如,數(shù)據(jù)的哈希值(其取決于數(shù)據(jù)的內(nèi)容而生成以使得該哈希值是唯一的)被用作內(nèi)容地址。因此,在重復數(shù)據(jù)的情況下,可以參考在相同存儲位置中的數(shù)據(jù)并且取得相同內(nèi)容的數(shù)據(jù)。因此,沒必要單獨存儲重復數(shù)據(jù),并且可以消除重復記錄從而減少數(shù)
      據(jù)容量。[專利文檔I]日本未審專利申請公開No.2005-235171。通常,上述數(shù)據(jù)解重復(deduplication)通過將文件的數(shù)據(jù)分成特定長度的數(shù)據(jù)(固定長度或可變長度)并且對數(shù)據(jù)進行比較來判斷。因此,在一個文件中的數(shù)據(jù)的差異存在于比該文件的分離長度更小的間隔中的情況下,該數(shù)據(jù)不會被判斷為相同內(nèi)容的數(shù)據(jù)。即,當分離數(shù)據(jù)包含相同內(nèi)容的數(shù)據(jù)部分但包括略微不同的部分時,分離數(shù)據(jù)均會被存儲,因此執(zhí)行數(shù)據(jù)解重復以用于高效存儲是不可能的。例如,數(shù)據(jù)備份軟件將唯一管理信息與備份數(shù)據(jù)一起插入備份文件。所插入的唯一管理信息根據(jù)備份進行變化,并且在數(shù)據(jù)重復判斷時管理信息的插入間隔小于數(shù)據(jù)的分離間隔的情況下,如上文所述執(zhí)行待存儲數(shù)據(jù)的解重復是不可能的。因此,會產(chǎn)生數(shù)據(jù)存儲效率下降的問題。

      發(fā)明內(nèi)容
      因此,本發(fā)明的目標是解決前述問題“數(shù)據(jù)存儲效率下降”。為了實現(xiàn)該目標,根據(jù)本發(fā)明的示例性實施方式的存儲設備包括數(shù)據(jù)寫入部分,配置用于將待寫入的數(shù)據(jù)存儲至存儲設備中,并且當存儲與已經(jīng)存儲在該存儲設備中的數(shù)據(jù)具有相同內(nèi)容的其他數(shù)據(jù)至該存儲設備中時,還參考已經(jīng)存儲在該存儲設備中的數(shù)據(jù)作為所述其他數(shù)據(jù);以及數(shù)據(jù)分離部分,配置用于將待寫入的數(shù)據(jù)分離成根據(jù)先前設置的標準分類的用戶數(shù)據(jù)部分和管理數(shù)據(jù)部分。繼而,所述數(shù)據(jù)寫入部分配置用于將所述用戶數(shù)據(jù)部分存儲至用戶數(shù)據(jù)文件中,將所述管理數(shù)據(jù)部分存儲至管理數(shù)據(jù)文件中,以及將由所述數(shù)據(jù)分離部分分離的所述用戶數(shù)據(jù)部分和所述管理數(shù)據(jù)部分存儲至所述存儲設備中。此外,根據(jù)本發(fā)明的另一示例性實施方式的程序是包括用于使得信息處理設備實現(xiàn)以下各項的指令的程序數(shù)據(jù)寫入部分,配置用于將待寫入的數(shù)據(jù)存儲至存儲設備中,并且當存儲與已經(jīng)存儲在該存儲設備中的數(shù)據(jù)具有相同內(nèi)容的其他數(shù)據(jù)至該存儲設備中時,還參考已經(jīng)存儲在該存儲設備中的數(shù)據(jù)作為所述其他數(shù)據(jù);以及 數(shù)據(jù)分離部分,配置用于將待寫入的數(shù)據(jù)分離成根據(jù)先前設置的標準分類的用戶數(shù)據(jù)部分和管理數(shù)據(jù)部分。繼而,所述數(shù)據(jù)寫入部分配置用于將所述用戶數(shù)據(jù)部分存儲至用戶數(shù)據(jù)文件中,將所述管理數(shù)據(jù)部分存儲至管理數(shù)據(jù)文件中,以及將由所述數(shù)據(jù)分離部分分離的所述用戶數(shù)據(jù)部分和所述管理數(shù)據(jù)部分存儲至所述存儲設備中。此外,在具有將待寫入的數(shù)據(jù)存儲至存儲設備中,并且當存儲與已經(jīng)存儲在該存儲設備中的數(shù)據(jù)具有相同內(nèi)容的其他數(shù)據(jù)至該存儲設備中時,還參考已經(jīng)存儲在該存儲設備中的數(shù)據(jù)作為所述其他數(shù)據(jù)的功能的信息處理設備中,根據(jù)本發(fā)明的另一示例性實施方式的數(shù)據(jù)存儲方法包括將待寫入的數(shù)據(jù)分離成根據(jù)先前設置的標準分類的用戶數(shù)據(jù)部分和管理數(shù)據(jù)部分;以及將所述用戶數(shù)據(jù)部分存儲至用戶數(shù)據(jù)文件中,將所述管理數(shù)據(jù)部分存儲至管理數(shù)據(jù)文件中,以及將由所述數(shù)據(jù)分離部分分離的所述用戶數(shù)據(jù)部分和所述管理數(shù)據(jù)部分存儲至所述存儲設備中。通過上述配置,本發(fā)明可以實現(xiàn)數(shù)據(jù)存儲效率的提高。


      圖I是示出了根據(jù)本發(fā)明的第一示例性實施方式的包括存儲系統(tǒng)的整個系統(tǒng)的配置的框圖;圖2是示出了根據(jù)本發(fā)明的第一示例性實施方式的存儲系統(tǒng)的配置的概要的框圖;圖3是示出了根據(jù)本發(fā)明的第一示例性實施方式的存儲系統(tǒng)的配置的功能框圖;圖4是用于說明圖3中所公開的存儲系統(tǒng)中數(shù)據(jù)寫入過程方面的說明圖;圖5是用于說明圖3中所公開的存儲系統(tǒng)中數(shù)據(jù)寫入過程方面的說明圖;圖6是用于說明圖3中所公開的存儲系統(tǒng)中數(shù)據(jù)寫入過程方面的說明圖;圖7是示出了圖6中所公開的索引數(shù)據(jù)的數(shù)據(jù)結構的示例的示圖;圖8是示出了圖3中所公開的存儲系統(tǒng)中數(shù)據(jù)寫入過程的操作的流程圖9是示出了圖3中所公開的存儲系統(tǒng)中數(shù)據(jù)讀取過程的操作的流程圖;以及圖10是示出了根據(jù)補充說明I的存儲系統(tǒng)的配置的功能框圖。
      具體實施例方式<第一示例性實施方式>本發(fā)明的第一示例性實施方式將參考圖I至圖9進行描述。圖I是示出了整個系統(tǒng)的配置的框圖。圖2是示出了存儲系統(tǒng)的概要的框圖,以及圖3是示出了存儲系統(tǒng)的配 置的功能框圖。圖4至圖6是用于說明存儲系統(tǒng)中數(shù)據(jù)寫入過程的說明圖。圖7是示出了存儲在存儲設備中的索引數(shù)據(jù)的數(shù)據(jù)結構的示圖。圖8和圖9是示出了存儲系統(tǒng)的操作的流程圖。本示例性實施方式示出了在稍后描述的補充說明中所公開的存儲設備之類的特定示例。下面將假設存儲系統(tǒng)通過連接多個服務器計算機進行配置來進行描述。然而,本發(fā)明中的存儲系統(tǒng)并不限于由多個計算機進行配置,并且可以由一個計算機進行配置。[配置]如圖I中所示,根據(jù)本發(fā)明的存儲系統(tǒng)I經(jīng)由網(wǎng)絡N連接到控制備份過程的備份系統(tǒng)4。備份系統(tǒng)4取得存儲在經(jīng)由網(wǎng)絡N連接的備份目標設備5中的備份目標數(shù)據(jù)(待寫入的數(shù)據(jù)),并且請求存儲系統(tǒng)I存儲該數(shù)據(jù)。因此,存儲系統(tǒng)I將請求存儲的備份目標數(shù)據(jù)進行存儲作為備份。如圖2中所示,本示例性實施方式中的存儲系統(tǒng)I采用了其中連接多個服務器計算機的配置。具體地,存儲系統(tǒng)I包括加速器節(jié)點2和存儲節(jié)點3,該加速器節(jié)點2為控制存儲系統(tǒng)I中的存儲再現(xiàn)操作的服務器計算機,而該存儲節(jié)點3為配備有用于存儲數(shù)據(jù)的存儲設備的服務器計算機。加速器節(jié)點2的數(shù)目和存儲節(jié)點3的數(shù)目并不限于圖2中所示的數(shù)目,并且系統(tǒng)可以通過連接更多的節(jié)點2和更多的節(jié)點3進行配置。此外,本示例性實施方式中的存儲系統(tǒng)I是劃分數(shù)據(jù)并使數(shù)據(jù)冗余以將數(shù)據(jù)分發(fā)并存儲至多個存儲設備中,并且通過取決于所存儲數(shù)據(jù)的內(nèi)容設置的唯一內(nèi)容地址來指定存儲數(shù)據(jù)的存儲位置的內(nèi)容可尋址的存儲系統(tǒng)。這種內(nèi)容可尋址的存儲系統(tǒng)將在稍后進行詳細描述。假設存儲系統(tǒng)I是一個系統(tǒng),下面將對存儲系統(tǒng)I的配置和功能進行描述。即,下面所述的存儲系統(tǒng)I的配置和功能可以包括在加速器節(jié)點2中或者存儲節(jié)點3中。存儲系統(tǒng)I沒必要受限于配備有如圖2中所示的加速器節(jié)點2和存儲節(jié)點3,并且可以具有任意配置。例如,存儲系統(tǒng)I可以由一個計算機進行配置。此外,存儲系統(tǒng)I并不限于內(nèi)容可尋址的存儲系統(tǒng),而可以是任意存儲系統(tǒng)(只要其具有解重復功能)。圖3示出了本示例性實施方式中的存儲系統(tǒng)I的配置。如該圖中所示,存儲系統(tǒng)I由服務器計算機進行配置,并且包括相互連接的數(shù)據(jù)分離和連接設備10與存儲設備20。數(shù)據(jù)分離和連接設備10連接到安裝在上文所述的備份目標設備5或備份系統(tǒng)4中的數(shù)據(jù)寫入和讀取軟件30,并且響應于來自該軟件30的請求,執(zhí)行存儲或獲取文件的過程。數(shù)據(jù)分離和連接設備10包括分離數(shù)據(jù)寫入部分11、數(shù)據(jù)分離部分12、分離數(shù)據(jù)關聯(lián)部分13和分離數(shù)據(jù)讀取部分14,上述各項通過將程序安裝至裝配其中的運算設備進行構建。此外,存儲設備20提供有用戶數(shù)據(jù)文件存儲部分21、管理數(shù)據(jù)文件存儲部分22和索引數(shù)據(jù)文件存儲部分23。事實上,上文所述存儲系統(tǒng)I的配置由運算設備(諸如,CPU(中央處理單元))和存儲設備(諸如,圖2中所示加速器節(jié)點2和存儲節(jié)點3中每個節(jié)點的硬盤驅(qū)動器)進行配置。如上文所述,本示例性實施方式中的存儲系統(tǒng)I是內(nèi)容可尋址的存儲系統(tǒng)。因此,上述分離數(shù)據(jù)寫入部分11 (數(shù)據(jù)寫入部分)和存儲設備20具有通過使用內(nèi)容地址將數(shù)據(jù)存儲至存儲設備20中的功能,以及如下文所述通過劃分和分發(fā)數(shù)據(jù)并且通過內(nèi)容地址指定存儲位置來存儲數(shù)據(jù)。存儲系統(tǒng)I中使用內(nèi)容地址的數(shù)據(jù)寫入過程將在下文參考圖 4和圖5進行描述。首先,當從數(shù)據(jù)寫入和讀取軟件30接受請求寫入的文件A的輸入時(如圖4中所示并且在圖5中由箭頭Yl表示),存儲系統(tǒng)I將該文件A分成預定容量(例如,64KB)的塊數(shù)據(jù)D (如圖4中所示并且在圖5中由箭頭Y2表示)。該文件A例如是由稍后描述的數(shù)據(jù)分離部分12分離的用戶數(shù)據(jù)文件、管理數(shù)據(jù)文件或者索引數(shù)據(jù)文件。塊數(shù)據(jù)D可以是由數(shù)據(jù)分離部分12分離的每個用戶數(shù)據(jù)、每個管理數(shù)據(jù)或者每個索引數(shù)據(jù)。繼而,基于該塊數(shù)據(jù)D的數(shù)據(jù)內(nèi)容,存儲系統(tǒng)I對表示該數(shù)據(jù)內(nèi)容的唯一哈希值H進行計算(圖5的箭頭3所示)。例如,哈希值H通過使用先前設置的哈希函數(shù)根據(jù)塊數(shù)據(jù)D的數(shù)據(jù)內(nèi)容進行計算。隨后,通過使用文件A的塊數(shù)據(jù)D的哈希值H,存儲系統(tǒng)I檢驗是否已經(jīng)存儲了該塊數(shù)據(jù)D。具體地,首先,在已經(jīng)存儲了塊數(shù)據(jù)D的情況下,其哈希值H以及表示其存儲位置的內(nèi)容地址CA已經(jīng)相關聯(lián)并且注冊到MFI (主片段索引)文件中。因此,在存儲之前計算的塊數(shù)據(jù)D的哈希值H存在于MFI文件中的情況下,存儲系統(tǒng)I可以判斷已經(jīng)存儲了相同內(nèi)容的塊數(shù)據(jù)D (圖5的箭頭Y4所示)。在此情況下,存儲系統(tǒng)I從MFI文件中取得與該MFI中注冊的哈希值H(其與在存儲之前的塊數(shù)據(jù)D的哈希值H—致)相關聯(lián)的內(nèi)容地址CA。繼而,存儲系統(tǒng)I返回該內(nèi)容地址CA作為請求寫入的塊數(shù)據(jù)D的內(nèi)容地址CA。因此,所述已經(jīng)存儲的數(shù)據(jù)與該內(nèi)容地址CA —起被用作請求寫入的塊數(shù)據(jù)D,并且消除了對存儲請求寫入的塊數(shù)據(jù)D的需求。此外,在判斷請求寫入的塊數(shù)據(jù)D還未被存儲的情況下,存儲系統(tǒng)I壓縮塊數(shù)據(jù)D,并且如圖5中箭頭Y5所示,將數(shù)據(jù)分成預定容量的多個片段數(shù)據(jù)。例如,存儲系統(tǒng)I將數(shù)據(jù)分成九個片段數(shù)據(jù)(劃分數(shù)據(jù)41),如圖4中參考標號Dl至D9所示。此外,存儲系統(tǒng)I生成冗余數(shù)據(jù),從而使得可以甚至在某些劃分片段數(shù)據(jù)丟失時重新存儲原始塊數(shù)據(jù),并且向劃分片段數(shù)據(jù)41添加冗余數(shù)據(jù)。例如,存儲系統(tǒng)I添加三個片段數(shù)據(jù)(冗余數(shù)據(jù)42),如圖4中的參考標號DlO至D12所示。因此,存儲系統(tǒng)I生成數(shù)據(jù)集40,該數(shù)據(jù)集40包括由九個劃分數(shù)據(jù)41和三個冗余數(shù)據(jù)配置的十二個片段數(shù)據(jù)。隨后,存儲系統(tǒng)I將配置如上文所述生成的數(shù)據(jù)集的片段數(shù)據(jù)分別分發(fā)并存儲至存儲設備上形成的存儲區(qū)域中。例如,在生成如圖4中所示十二個片段數(shù)據(jù)Dl至D12的情況下,存儲系統(tǒng)I將片段數(shù)據(jù)Dl至D12逐一分別存儲至多個存儲設備中形成的數(shù)據(jù)存儲文件中(參考圖5中的箭頭Y6)。隨后,存儲系統(tǒng)I生成并管理表示如上文所述存儲的片段數(shù)據(jù)Dl至D12的存儲位置(即,待從片段數(shù)據(jù)Dl至D12進行重新存儲的塊數(shù)據(jù)D的存儲位置)的內(nèi)容地址CA。具體地,存儲系統(tǒng)I通過將基于存儲的塊數(shù)據(jù)D的內(nèi)容計算的哈希值H的一部分(短哈希例如,哈希值H的最初SB (字節(jié)))與表示邏輯存儲位置的信息進行組合來生成內(nèi)容地址CA。存儲系統(tǒng)I繼而將該內(nèi)容地址CA返回存儲系統(tǒng)I中的文件系統(tǒng)(圖5中的箭頭Y7)。存儲系統(tǒng)I管理標識信息,諸如文件系統(tǒng)中相互關聯(lián)的備份目標數(shù)據(jù)的文件名和內(nèi)容地址CA。此外,每個存儲節(jié)點3管理MFI文件中相互關聯(lián)的塊數(shù)據(jù)D的內(nèi)容地址CA和塊數(shù)據(jù)D的哈希值H。因此,內(nèi)容地址CA與指定文件的信息、哈希值H等相關聯(lián)地存儲至加速器節(jié)點2或存儲節(jié)點3的存儲設備中。
      此外,存儲系統(tǒng)I執(zhí)行控件以用于獲取如上文所述存儲的文件。例如,當向存儲系統(tǒng)I進行對指定的特定文件的獲取請求時,存儲系統(tǒng)I首先基于文件系統(tǒng)指定由作為對應于請求獲取的文件的哈希值的一部分的短哈希與邏輯位置信息組成的內(nèi)容地址CA。繼而,存儲系統(tǒng)I檢驗MFI文件中是否注冊了該內(nèi)容地址CA。當該內(nèi)容地址CA沒有注冊時,不對所請求的數(shù)據(jù)進行存儲,從而使得存儲系統(tǒng)I返回錯誤。另一方面,當與獲取請求有關的內(nèi)容地址CA進行了注冊時,存儲系統(tǒng)I指定由該內(nèi)容地址CA指定的存儲位置,并且獲取存儲在該指定存儲位置中的每個片段數(shù)據(jù)作為請求獲取的數(shù)據(jù)。此時,在已知存儲相應片段的數(shù)據(jù)存儲文件以及數(shù)據(jù)存儲文件之一的片段數(shù)據(jù)的存儲位置的情況下,可以基于相同存儲位置指定其他片段數(shù)據(jù)的存儲位置。繼而,存儲系統(tǒng)I根據(jù)響應于獲取請求而獲取的相應片段數(shù)據(jù)重新存儲塊數(shù)據(jù)D。此外,存儲系統(tǒng)I連接多個重新存儲的塊數(shù)據(jù)D,重新存儲至一組數(shù)據(jù)(如文件A)中并將其返回。因此,在本示例性實施方式中,存儲系統(tǒng)I消除了數(shù)據(jù)的解重復,并且具有用于進一步提高數(shù)據(jù)存儲效率的配置。該配置將詳細地進行描述。首先,由數(shù)據(jù)分離和連接設備10包括的數(shù)據(jù)分離部分12將數(shù)據(jù)分成“用戶數(shù)據(jù)部分”和“管理數(shù)據(jù)部分”,該“用戶數(shù)據(jù)部分”相當于文件的實際數(shù)據(jù)部分并且其值不會被生成時間、更新次數(shù)等改變;然而“管理數(shù)據(jù)部分”的值會被時間差、更新次數(shù)等(諸如,時間戳或序列號)改變,并且其包括文件的管理信息。即,用戶數(shù)據(jù)部分是很可能與其他用戶數(shù)據(jù)具有相同內(nèi)容并且可以期望產(chǎn)生解重復效果的數(shù)據(jù)。另一方面,管理數(shù)據(jù)部分不太可能與其他管理數(shù)據(jù)具有相同內(nèi)容并且不太可能期望產(chǎn)生解重復效果。用于區(qū)分相應數(shù)據(jù)部分的標準信息之前在數(shù)據(jù)分離部分12中進行設置,并且基于該標準信息執(zhí)行分離成用戶數(shù)據(jù)部分和管理數(shù)據(jù)部分的分離過程。然而,數(shù)據(jù)分離部分12沒必要受限于將待寫入的數(shù)據(jù)分離成“用戶數(shù)據(jù)部分”和“管理數(shù)據(jù)部分”。數(shù)據(jù)分離部分12可以將數(shù)據(jù)分離成根據(jù)先前設置的標準分類的其他數(shù)據(jù)部分中的一種數(shù)據(jù)部分或者多種數(shù)據(jù)部分。繼而,分離數(shù)據(jù)寫入部分11 (數(shù)據(jù)寫入部分)將由數(shù)據(jù)分離部分12分離的數(shù)據(jù)存儲至存儲設備20中。此時,取決于經(jīng)分離數(shù)據(jù)的類型,將經(jīng)分離的數(shù)據(jù)存儲至不同的文件中,并且分離數(shù)據(jù)關聯(lián)部分13基于分離的結果生成包括分別指定用戶數(shù)據(jù)部分和管理數(shù)據(jù)部分的存儲位置的信息的索引數(shù)據(jù)。分離數(shù)據(jù)寫入部分11繼而將已經(jīng)分離的用戶數(shù)據(jù)部分和管理數(shù)據(jù)部分以及索引數(shù)據(jù)分別存儲至不同的文件中,并且存儲至存儲設備20中。具體地,首先,如圖6中所示,用戶數(shù)據(jù)部分存儲至在存儲設備20中形成的用戶數(shù)據(jù)文件存儲部分21內(nèi)的用戶數(shù)據(jù)文件中。此外,如圖6中所示,管理數(shù)據(jù)部分存儲至在存儲設備20中形成的管理數(shù)據(jù)文件存儲部分22內(nèi)的管理數(shù)據(jù)文件中。此外,如圖6中所示,索引數(shù)據(jù)存儲至在存儲設備20中形成的索引數(shù)據(jù)文件存儲部分23內(nèi)的索引數(shù)據(jù)文件中。隨后,在用戶數(shù)據(jù)文件存儲部分21中,存儲了只存儲有用戶數(shù)據(jù)的用戶數(shù)據(jù)文件。此外,在管理數(shù)據(jù)文件存儲部分22中,存儲了只存儲有管理數(shù)據(jù)的管理數(shù)據(jù)文件。此夕卜,在索引數(shù)據(jù)文件存儲部分23中,存儲了只存儲有用戶數(shù)據(jù)和管理數(shù)據(jù)的索引信息的索引數(shù)據(jù)文件。如圖7中所示,索引數(shù)據(jù)包含各種管理信息,諸如文件類型、未分離文件中的文件偏移、每個分離文件中的文件偏移和分離數(shù)據(jù)的長度。具體地,“文件類型”是指定文件的類型或者其中存儲了對應的用戶數(shù)據(jù)或管理數(shù)據(jù)的文件本身的文件信息?!拔捶蛛x文件中的文件偏移”是關于在分離用戶數(shù)據(jù)或管理數(shù)據(jù)被分離之前文件內(nèi)位置的信息?!懊總€分離文件中的文件偏移”是關于在分離之后其中存儲了分離用戶數(shù)據(jù)或管理數(shù)據(jù)的用戶數(shù)據(jù)文件或管理數(shù)據(jù)文件內(nèi)位置的信息?!胺蛛x數(shù)據(jù)的長度”是分離用戶數(shù)據(jù)或管理數(shù)據(jù)的數(shù)據(jù)長度。然而,索引數(shù)據(jù)中存儲的信息不限于上述信息。 如參考圖4和圖5所進行的說明,上文所述每個文件進一步被劃分并使其冗余,以及分發(fā)并存儲至多個存儲設備中。此外,數(shù)據(jù)分離和連接設備10中包括的分離數(shù)據(jù)讀取部分14 (數(shù)據(jù)讀取部分)基于請求由數(shù)據(jù)寫入和讀取軟件30讀取的文件的名稱從存儲設備20取得用戶數(shù)據(jù)文件、管理數(shù)據(jù)文件和索引數(shù)據(jù)文件。繼而,分離數(shù)據(jù)關聯(lián)部分13基于所取得的索引數(shù)據(jù)文件中存儲的信息對其中存儲了用戶數(shù)據(jù)和管理數(shù)據(jù)的相應文件以及文件內(nèi)的存儲位置進行分析。隨后,基于分析的結果,分別從用戶數(shù)據(jù)文件和管理數(shù)據(jù)文件中讀取用戶數(shù)據(jù)和管理數(shù)據(jù)。繼而,根據(jù)索引數(shù)據(jù)文件中存儲的信息,指定在分離之前數(shù)據(jù)中用戶數(shù)據(jù)和管理數(shù)據(jù)的位置,并且連接用戶數(shù)據(jù)和管理數(shù)據(jù),由此生成在分離之前的數(shù)據(jù)。在這之后,分離數(shù)據(jù)讀取部分14向數(shù)據(jù)寫入和讀取軟件30返回所生成的分離之前的數(shù)據(jù)。因此,數(shù)據(jù)寫入和讀取軟件30可以參考文件,而不知曉數(shù)據(jù)已經(jīng)被分離并存儲。[操作]接下來,存儲系統(tǒng)1(即,上文所述的數(shù)據(jù)分離和連接設備10)的操作將參考圖6以及圖8和圖9中所不的流程圖進行例不。首先,寫入數(shù)據(jù)時的操作將參考圖6和圖8進行例示。當數(shù)據(jù)寫入和讀取軟件30向數(shù)據(jù)分離和連接設備10發(fā)出數(shù)據(jù)寫入請求時(步驟SI),分離數(shù)據(jù)寫入部分11向數(shù)據(jù)分離部分12傳輸所接收的數(shù)據(jù)。繼而,數(shù)據(jù)分離部分12將所接收的數(shù)據(jù)分離成如上文所述的用戶數(shù)據(jù)部分和管理數(shù)據(jù)部分,并且將關于分離的信息返回分離數(shù)據(jù)寫入部分11 (步驟S2)。隨后,分離數(shù)據(jù)寫入部分11向分離數(shù)據(jù)關聯(lián)部分13傳輸所接收的關于數(shù)據(jù)分離的信息。繼而,分離數(shù)據(jù)關聯(lián)部分13基于所接收的關于數(shù)據(jù)分離的信息創(chuàng)建索引數(shù)據(jù)(步驟S3),并且將索引數(shù)據(jù)返回分離數(shù)據(jù)寫入部分11。如圖7中所示,索引數(shù)據(jù)包含其中存儲有每個分離數(shù)據(jù)的文件的類型、在數(shù)據(jù)分離之前文件中的文件偏移、在數(shù)據(jù)分離之后用戶數(shù)據(jù)文件或管理數(shù)據(jù)文件中的文件偏移、分離數(shù)據(jù)的長度以及其他管理信息。最后,基于關于數(shù)據(jù)分離的信息以及索引數(shù)據(jù),分離數(shù)據(jù)寫入部分11將用戶數(shù)據(jù)、管理數(shù)據(jù)和索引數(shù)據(jù)作為不同文件分別寫入存儲設備20中(步驟S4)。S卩,如圖6中所示,分離數(shù)據(jù)寫入部分11分別將用戶數(shù)據(jù)寫入用戶數(shù)據(jù)文件、將管理數(shù)據(jù)寫入管理數(shù)據(jù)文件以及將索引數(shù)據(jù)寫入索引數(shù)據(jù)文件。在圖6的示例中,索引I包含作為用戶數(shù)據(jù)的數(shù)據(jù)2的位置信息等,并且索引2包含作為管理數(shù)據(jù)的數(shù)據(jù)I的位置信息等。接下來,讀取數(shù)據(jù)時的操作將參考圖6和圖9進行例示。當數(shù)據(jù)寫入和讀取軟件30向數(shù)據(jù)分離和連接設備10發(fā)出數(shù)據(jù)讀取請求時(步驟Sll),分離數(shù)據(jù)讀取部分14基于請求讀取的文件的名稱取得存儲設備20中存儲的用戶數(shù)據(jù)文件、管理數(shù)據(jù)文件和索引數(shù)據(jù)文件(步驟S12),并且向分離數(shù)據(jù)關聯(lián)部分13傳輸相應的信息。繼而,基于所接收的信息,分離數(shù)據(jù)關聯(lián)部分13從索引數(shù)據(jù)文件中讀取對應于所請求的數(shù)據(jù)的索引數(shù)據(jù)。此外,基于所讀取的索引數(shù)據(jù),分離數(shù)據(jù)關聯(lián)部分13從用戶數(shù)據(jù)文件讀取對應于所請求的數(shù)據(jù)的用戶數(shù)據(jù),并且從管理數(shù)據(jù)文件讀取對應于所請求的數(shù)據(jù)的管理數(shù)據(jù)。此時,分離數(shù)據(jù)關聯(lián)部分13基于索引數(shù)據(jù)包含的諸如文件類型、在數(shù)據(jù)分離之前文件中的文件偏移、在數(shù)據(jù)分離之后用戶數(shù)據(jù)文件或管理數(shù)據(jù)文件中的文件偏移以及分離數(shù)據(jù)的長度之類的信息,讀取配置所請求的數(shù)據(jù)的用戶數(shù)據(jù)和管理數(shù)據(jù)。例如,在圖6 的示例中,分離數(shù)據(jù)關聯(lián)部分13基于索引I讀取作為用戶數(shù)據(jù)的數(shù)據(jù)2,并且基于索引2讀取作為管理數(shù)據(jù)的數(shù)據(jù)I。此外,分離數(shù)據(jù)關聯(lián)部分13基于索引數(shù)據(jù)連接已經(jīng)被讀取的用戶數(shù)據(jù)和管理數(shù)據(jù)(步驟S13),以生成分離之前的原始數(shù)據(jù),并且將所連接的數(shù)據(jù)返回分離數(shù)據(jù)讀取部分14。分離數(shù)據(jù)讀取部分14繼而將作為數(shù)據(jù)分離之前文件的數(shù)據(jù)的返回數(shù)據(jù)返回到數(shù)據(jù)寫入和讀取軟件30。因此,根據(jù)本發(fā)明,當例如進行數(shù)據(jù)備份時,由備份軟件插入備份文件中的管理信息可以使得數(shù)據(jù)解重復的效率的降低。然而,可以通過將備份文件中的數(shù)據(jù)分離成用戶數(shù)據(jù)和管理數(shù)據(jù)并存儲至存儲設備中來提高數(shù)據(jù)解重復的效率。即,數(shù)據(jù)的解重復幾乎不可能在數(shù)據(jù)量小的管理數(shù)據(jù)和索引數(shù)據(jù)上執(zhí)行,但是數(shù)據(jù)的解重復可以有效地在用戶數(shù)據(jù)文件中寫入的大量用戶數(shù)據(jù)上執(zhí)行,由此可以實現(xiàn)高效的數(shù)據(jù)解重復。此外,雖然數(shù)據(jù)為了如上文所述提高解重復的效率的目的被分離并存儲至存儲系統(tǒng)中的多個文件中,但是由于在讀取數(shù)據(jù)時經(jīng)分離的數(shù)據(jù)被連接并作為一個數(shù)據(jù)提供,因此從外部來看可以作為一個文件對待。[補充說明]上文所公開的全部或部分示例性實施方式可以被描述為以下補充說明。在下文中,根據(jù)本發(fā)明的存儲設備110的配置的概要將參考圖10進行描述。此外,將描述根據(jù)本發(fā)明的數(shù)據(jù)存儲方法和程序的配置。然而,本發(fā)明并不限于以下配置。(補充說明I)一種存儲設備110,包括數(shù)據(jù)寫入部分111,配置用于將待寫入的數(shù)據(jù)存儲至存儲設備120中,并且當存儲與已經(jīng)存儲在存儲設備120中的數(shù)據(jù)具有相同內(nèi)容的其他數(shù)據(jù)至存儲設備120中時,還參考已經(jīng)存儲在存儲設備120中的數(shù)據(jù)作為其他數(shù)據(jù);以及數(shù)據(jù)分離部分112,配置用于將待寫入的數(shù)據(jù)分離成根據(jù)先前設置的標準分類的用戶數(shù)據(jù)部分和管理數(shù)據(jù)部分,其中數(shù)據(jù)寫入部分111配置用于將用戶數(shù)據(jù)部分存儲至用戶數(shù)據(jù)文件121中,將管理數(shù)據(jù)部分存儲至管理數(shù)據(jù)文件122中,并且將由數(shù)據(jù)分離部分112分離的用戶數(shù)據(jù)部分和管理數(shù)據(jù)部分存儲至存儲設備120中。(補充說明2) 根據(jù)補充說明I所述的存儲設備,其中數(shù)據(jù)寫入部分配置用于將索引數(shù)據(jù)存儲至索引數(shù)據(jù)文件中并存儲至存儲設備中,索引數(shù)據(jù)包括關于由數(shù)據(jù)分離部分分離的用戶數(shù)據(jù)部分和管理數(shù)據(jù)部分的未分離數(shù)據(jù)內(nèi)位置的信息,以及關于在分離成用戶數(shù)據(jù)部分和管理數(shù)據(jù)部分之后用戶數(shù)據(jù)文件和管理數(shù)據(jù)文件中每個文件中的位置的信息。(補充說明3)根據(jù)補充說明2所述的存儲設備,其中由數(shù)據(jù)寫入部分存儲至索引數(shù)據(jù)文件中的索引數(shù)據(jù)包括指定分別存儲由數(shù)據(jù)分離部分分離的用戶數(shù)據(jù)部分和管理數(shù)據(jù)部分的用戶數(shù)據(jù)文件和管理數(shù)據(jù)文件的文件信息。(補充說明4)根據(jù)補充說明2或3所述的存儲設備,其中由數(shù)據(jù)寫入部分存儲至索引數(shù)據(jù)文件中的索引數(shù)據(jù)包括表示由數(shù)據(jù)分離部分分離的用戶數(shù)據(jù)部分和管理數(shù)據(jù)部分中每個部分的數(shù)據(jù)長度的數(shù)據(jù)長度信息。(補充說明5)根據(jù)補充說明2至4中任意一項所述的存儲設備,包括數(shù)據(jù)讀取部分,配置用于讀取索引數(shù)據(jù)文件中存儲的索引數(shù)據(jù),基于索引數(shù)據(jù)中包括的信息讀取存儲設備中存儲的用戶數(shù)據(jù)部分和管理數(shù)據(jù)部分,并且重新存儲由數(shù)據(jù)分離部分分離之前的數(shù)據(jù)。(補充說明6)根據(jù)補充說明I至5中任意一項所述的存儲設備,其中管理數(shù)據(jù)部分是用于管理待寫入數(shù)據(jù)的管理信息。(補充說明7)一種包括用于使得信息處理設備實現(xiàn)以下各項的指令的程序數(shù)據(jù)寫入部分,配置用于將待寫入的數(shù)據(jù)存儲至存儲設備中,并且當存儲與已經(jīng)存儲在存儲設備中的數(shù)據(jù)具有相同內(nèi)容的其他數(shù)據(jù)至存儲設備中時,還參考已經(jīng)存儲在存儲設備中的數(shù)據(jù)作為其他數(shù)據(jù);以及數(shù)據(jù)分離部分,配置用于將待寫入的數(shù)據(jù)分離成根據(jù)先前設置的標準分類的用戶數(shù)據(jù)部分和管理數(shù)據(jù)部分,其中數(shù)據(jù)寫入部分配置用于將用戶數(shù)據(jù)部分存儲至用戶數(shù)據(jù)文件中,將管理數(shù)據(jù)部分存儲至管理數(shù)據(jù)文件中,并且將由數(shù)據(jù)分離部分分離的用戶數(shù)據(jù)部分和管理數(shù)據(jù)部分存儲至存儲設備中。(補充說明8)根據(jù)補充說明7所述的程序,其中數(shù)據(jù)寫入部分配置用于將索引數(shù)據(jù)存儲至索引數(shù)據(jù)文件中并存儲至存儲設備中,索引數(shù)據(jù)包括關于由數(shù)據(jù)分離部分分離的用戶數(shù)據(jù)部分和管理數(shù)據(jù)部分的未分離數(shù)據(jù)內(nèi)位置的信息,以及關于在分離成用戶數(shù)據(jù)部分和管理數(shù)據(jù)部分之后用戶數(shù)據(jù)文件和管理數(shù)據(jù)文件中每個文件中的位置的信息。
      (補充說明9)一種具有將待寫入的數(shù)據(jù)存儲至存儲設備中,并且當存儲與已經(jīng)存儲在存儲設備中的數(shù)據(jù)具有相同內(nèi)容的其他數(shù)據(jù)至存儲設備中時,還參考已經(jīng)存儲在存儲設備中的數(shù)據(jù)作為其他數(shù)據(jù)的功能的信息處理設備中的數(shù)據(jù)存儲方法,該數(shù)據(jù)存儲方法包括將待寫入的數(shù)據(jù)分離成根據(jù)先前設置的標準分類的用戶數(shù)據(jù)部分和管理數(shù)據(jù)部分;以及將用戶數(shù)據(jù)部分存儲至用戶數(shù)據(jù)文件中,將管理數(shù)據(jù)部分存儲至管理數(shù)據(jù)文件中,并且將由數(shù)據(jù)分離部分分離的用戶數(shù)據(jù)部分和管理數(shù)據(jù)部分存儲至存儲設備中。(補充說明10)根據(jù)補充說明9所述的數(shù)據(jù)存儲方法,包括將索引數(shù)據(jù)存儲至索引數(shù)據(jù)文件中并 存儲至存儲設備中,索引數(shù)據(jù)包括關于由數(shù)據(jù)分離部分分離的用戶數(shù)據(jù)部分和管理數(shù)據(jù)部分的未分離數(shù)據(jù)內(nèi)位置的信息,以及關于在分離成用戶數(shù)據(jù)部分和管理數(shù)據(jù)部分之后用戶數(shù)據(jù)文件和管理數(shù)據(jù)文件中每個文件中的位置的信息。雖然已經(jīng)參考相應的示例性實施方式描述了本發(fā)明,但本發(fā)明不限于上文所述的示例性實施方式。本發(fā)明的配置和細節(jié)可以在本發(fā)明的范圍內(nèi)通過本領域技術人員可以理解的各種方式進行改變。本發(fā)明基于并要求于2010年3月4日提交的日本專利申請No. 2010-47411的優(yōu)先權,其公開內(nèi)容通過引用全部并入于此。I存儲系統(tǒng)2加速器節(jié)點3存儲節(jié)點4備份系統(tǒng)5備份目標設備10數(shù)據(jù)分離和連接設備11分離數(shù)據(jù)寫入部分12數(shù)據(jù)分離部分13分離數(shù)據(jù)關聯(lián)部分14分離數(shù)據(jù)讀取部分20存儲設備21用戶數(shù)據(jù)文件存儲部分22管理數(shù)據(jù)文件存儲部分23索引數(shù)據(jù)文件存儲部分30 軟件110存儲設備111數(shù)據(jù)寫入部分112數(shù)據(jù)分離部分120存儲設備121用戶數(shù)據(jù)文件122管理數(shù)據(jù)文件
      權利要求
      1.一種存儲設備,包括 數(shù)據(jù)寫入部分,配置用于將待寫入的數(shù)據(jù)存儲至存儲設備中,并且當存儲與已經(jīng)存儲在所述存儲設備中的數(shù)據(jù)具有相同內(nèi)容的其他數(shù)據(jù)至所述存儲設備中時,還參考已經(jīng)存儲在所述存儲設備中的數(shù)據(jù)作為所述其他數(shù)據(jù);以及 數(shù)據(jù)分離部分,配置用于將待寫入的數(shù)據(jù)分離成根據(jù)先前設置的標準分類的用戶數(shù)據(jù)部分和管理數(shù)據(jù)部分, 其中所述數(shù)據(jù)寫入部分配置用于將所述用戶數(shù)據(jù)部分存儲至用戶數(shù)據(jù)文件中,將所述管理數(shù)據(jù)部分存儲至管理數(shù)據(jù)文件中,并且將由所述數(shù)據(jù)分離部分分離的所述用戶數(shù)據(jù)部分和所述管理數(shù)據(jù)部分存儲至所述存儲設備中。
      2.根據(jù)權利要求I所述的存儲設備,其中所述數(shù)據(jù)寫入部分配置用于將索引數(shù)據(jù)存儲至索引數(shù)據(jù)文件中并存儲至所述存儲設備中,所述索引數(shù)據(jù)包括關于由所述數(shù)據(jù)分離部分分離的所述用戶數(shù)據(jù)部分和所述管理數(shù)據(jù)部分的未分離數(shù)據(jù)內(nèi)位置的信息,以及關于在分離成所述用戶數(shù)據(jù)部分和所述管理數(shù)據(jù)部分之后所述用戶數(shù)據(jù)文件和所述管理數(shù)據(jù)文件中每個文件中的位置的信息。
      3.根據(jù)權利要求2所述的存儲設備,其中由所述數(shù)據(jù)寫入部分存儲至所述索引數(shù)據(jù)文件中的所述索引數(shù)據(jù)包括指定分別存儲由所述數(shù)據(jù)分離部分分離的所述用戶數(shù)據(jù)部分和所述管理數(shù)據(jù)部分的所述用戶數(shù)據(jù)文件和所述管理數(shù)據(jù)文件的文件信息。
      4.根據(jù)權利要求2或3所述的存儲設備,其中由所述數(shù)據(jù)寫入部分存儲至所述索引數(shù)據(jù)文件中的所述索引數(shù)據(jù)包括表示由所述數(shù)據(jù)分離部分分離的所述用戶數(shù)據(jù)部分和所述管理數(shù)據(jù)部分中每個部分的數(shù)據(jù)長度的數(shù)據(jù)長度信息。
      5.根據(jù)權利要求2至4中任意一項所述的存儲設備,包括數(shù)據(jù)讀取部分,配置用于讀取所述索引數(shù)據(jù)文件中存儲的所述索引數(shù)據(jù),基于所述索引數(shù)據(jù)中包括的信息讀取所述存儲設備中存儲的所述用戶數(shù)據(jù)部分和所述管理數(shù)據(jù)部分,并且重新存儲由所述數(shù)據(jù)分離部分分離之前的數(shù)據(jù)。
      6.根據(jù)權利要求I至5中任意一項所述的存儲設備,其中所述管理數(shù)據(jù)部分是用于管理待寫入數(shù)據(jù)的管理信息。
      7.一種包括用于使得信息處理設備實現(xiàn)以下各項的指令的程序 數(shù)據(jù)寫入部分,配置用于將待寫入的數(shù)據(jù)存儲至存儲設備中,并且當存儲與已經(jīng)存儲在所述存儲設備中的數(shù)據(jù)具有相同內(nèi)容的其他數(shù)據(jù)至所述存儲設中備時,還參考已經(jīng)存儲在所述存儲設備中的數(shù)據(jù)作為所述其他數(shù)據(jù);以及 數(shù)據(jù)分離部分,配置用于將待寫入的數(shù)據(jù)分離成根據(jù)先前設置的標準分類的用戶數(shù)據(jù)部分和管理數(shù)據(jù)部分, 其中所述數(shù)據(jù)寫入部分配置用于將所述用戶數(shù)據(jù)部分存儲至用戶數(shù)據(jù)文件中,將所述管理數(shù)據(jù)部分存儲至管理數(shù)據(jù)文件中,并且將由所述數(shù)據(jù)分離部分分離的所述用戶數(shù)據(jù)部分和所述管理數(shù)據(jù)部分存儲至所述存儲設備中。
      8.根據(jù)權利要求7所述的程序,其中所述數(shù)據(jù)寫入部分配置用于將索引數(shù)據(jù)存儲至索引數(shù)據(jù)文件中并存儲至所述存儲設備中,所述索引數(shù)據(jù)包括關于由所述數(shù)據(jù)分離部分分離的所述用戶數(shù)據(jù)部分和所述管理數(shù)據(jù)部分的未分離數(shù)據(jù)內(nèi)位置的信息,以及關于在分離成所述用戶數(shù)據(jù)部分和所述管理數(shù)據(jù)部分之后所述用戶數(shù)據(jù)文件和所述管理數(shù)據(jù)文件中每個文件中的位置的信息。
      9.一種具有將待寫入的數(shù)據(jù)存儲至存儲設備中,并且當存儲與已經(jīng)存儲在所述存儲設備中的數(shù)據(jù)具有相同內(nèi)容的其他數(shù)據(jù)至所述存儲設備中時,還參考已經(jīng)存儲在所述存儲設備中的數(shù)據(jù)作為所述其他數(shù)據(jù)的功能的信息處理設備中的數(shù)據(jù)存儲方法,所述數(shù)據(jù)存儲方法包括 將待寫入的數(shù)據(jù)分離成根據(jù)先前設置的標準分類的用戶數(shù)據(jù)部分和管理數(shù)據(jù)部分;以及 將所述用戶數(shù)據(jù)部分存儲至用戶數(shù)據(jù)文件中,將所述管理數(shù)據(jù)部分存儲至管理數(shù)據(jù)文件中,并且將由所述數(shù)據(jù)分離部分分離的所述用戶數(shù)據(jù)部分和所述管理數(shù)據(jù)部 分存儲至所述存儲設備中。
      10.根據(jù)權利要求9所述的數(shù)據(jù)存儲方法,包括將索引數(shù)據(jù)存儲至索引數(shù)據(jù)文件中并存儲至所述存儲設備中,所述索引數(shù)據(jù)包括關于由所述數(shù)據(jù)分離部分分離的所述用戶數(shù)據(jù)部分和所述管理數(shù)據(jù)部分的未分離數(shù)據(jù)內(nèi)位置的信息,以及關于在分離成所述用戶數(shù)據(jù)部分和所述管理數(shù)據(jù)部分之后所述用戶數(shù)據(jù)文件和所述管理數(shù)據(jù)文件中每個文件中的位置的信息。
      全文摘要
      一種存儲設備(110),包括數(shù)據(jù)寫入部分(111),配置用于將待寫入的數(shù)據(jù)存儲至存儲設備(120)中,并且當存儲與已經(jīng)存儲在存儲設備(120)中的數(shù)據(jù)具有相同內(nèi)容的其他數(shù)據(jù)至存儲設備(120)中時,還參考已經(jīng)存儲在存儲設備(120)中的數(shù)據(jù)作為其他數(shù)據(jù);以及數(shù)據(jù)分離部分(112),配置用于將待寫入的數(shù)據(jù)分離成根據(jù)先前設置的標準分類的用戶數(shù)據(jù)部分和管理數(shù)據(jù)部分。數(shù)據(jù)寫入部分(111)配置用于將用戶數(shù)據(jù)部分存儲至用戶數(shù)據(jù)文件(121)中,將管理數(shù)據(jù)部分存儲至管理數(shù)據(jù)文件(122)中,并且將由數(shù)據(jù)分離部分(112)分離的用戶數(shù)據(jù)部分和管理數(shù)據(jù)部分存儲至存儲設備(120)中。
      文檔編號G06F3/06GK102792281SQ201080065158
      公開日2012年11月21日 申請日期2010年12月10日 優(yōu)先權日2010年3月4日
      發(fā)明者佐藤貴俊, 山本拓明, 津田正紀 申請人:Nec軟件東北株式會社, 日本電氣株式會社
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1