一種數(shù)據(jù)存儲(chǔ)保護(hù)方法與系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及數(shù)據(jù)存儲(chǔ)領(lǐng)域,特別是涉及一種數(shù)據(jù)存儲(chǔ)保護(hù)方法與系統(tǒng)。
【背景技術(shù)】
[0002] Internet的迅速發(fā)展在提高了工作效率的同時(shí),也帶來了一個(gè)日益嚴(yán)峻的問 題一一網(wǎng)絡(luò)數(shù)據(jù)存儲(chǔ)安全,網(wǎng)絡(luò)數(shù)據(jù)存儲(chǔ)安全成為當(dāng)今研究熱點(diǎn)和社會(huì)關(guān)注焦點(diǎn)。在過去 十年中,存儲(chǔ)已演變?yōu)槎鄠€(gè)系統(tǒng)共享的一種資源。非常多案例都表明,只保護(hù)存儲(chǔ)設(shè)備所在 的系統(tǒng)的安全已不能滿足需要了。存儲(chǔ)設(shè)備目前連接到多個(gè)系統(tǒng)上,因此,必須保護(hù)各個(gè)系 統(tǒng)上的有價(jià)值的數(shù)據(jù),防止其他系統(tǒng)未經(jīng)授權(quán)訪問數(shù)據(jù),或破壞數(shù)據(jù)。相應(yīng)的,存儲(chǔ)設(shè)備必 須要防止未被授權(quán)的設(shè)置改動(dòng),對所有的更改都要做審計(jì)跟蹤。
[0003] 存儲(chǔ)安全是客戶整個(gè)安全計(jì)劃的一部分,也是數(shù)據(jù)中心安全和組織安全的一部 分。如果只小心翼翼地保護(hù)存儲(chǔ)的安全而將整個(gè)系統(tǒng)向互連網(wǎng)開放,那這樣的存儲(chǔ)安全是 絲毫沒有意義的。應(yīng)該認(rèn)識(shí)到,安全計(jì)劃可能需要滿足各種數(shù)據(jù)庫和應(yīng)用的不同層次的安 全需求原則上,存儲(chǔ)安全是非常簡單直接的。
[0004] 面對一個(gè)越來越開放的網(wǎng)絡(luò)環(huán)境,急需實(shí)現(xiàn)高效安全的信息存儲(chǔ)。
【發(fā)明內(nèi)容】
[0005] 有鑒于此,本發(fā)明的主要目的在于提供一種數(shù)據(jù)存儲(chǔ)保護(hù)方法與系統(tǒng),可以提高 數(shù)據(jù)訪問速度和正確性。
[0006] 為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種數(shù)據(jù)存儲(chǔ)保護(hù)方法,包括:
[0007] 將要存儲(chǔ)的目標(biāo)數(shù)據(jù)組織成預(yù)設(shè)大小的多個(gè)數(shù)據(jù)塊;
[0008] 根據(jù)數(shù)據(jù)塊個(gè)數(shù)確定葉子節(jié)點(diǎn)個(gè)數(shù),根據(jù)數(shù)據(jù)塊大小和哈希算法位數(shù)確定中間節(jié) 點(diǎn)個(gè)數(shù);
[0009] 將所述數(shù)據(jù)塊保存至所述葉子節(jié)點(diǎn),將所述數(shù)據(jù)塊對應(yīng)的哈希值保存至所述數(shù)據(jù) 塊所屬節(jié)點(diǎn)的父節(jié)點(diǎn)中;
[0010] 根據(jù)所述葉子節(jié)點(diǎn)個(gè)數(shù)和所述中間節(jié)點(diǎn)個(gè)數(shù),將數(shù)據(jù)塊和對應(yīng)的哈希值組織成哈 希樹。
[0011] 優(yōu)選地,根據(jù)所述葉子節(jié)點(diǎn)個(gè)數(shù)和所述中間節(jié)點(diǎn)個(gè)數(shù),將數(shù)據(jù)塊和對應(yīng)的哈希值 組織成哈希樹后還包括:
[0012] 將所述哈希樹中的節(jié)點(diǎn)存放至緩存區(qū)中。
[0013] 優(yōu)選地,將所述哈希樹中的節(jié)點(diǎn)存放至緩存區(qū)中后還包括:
[0014] 從所述哈希樹的葉子節(jié)點(diǎn)到根節(jié)點(diǎn),依次對每一個(gè)目標(biāo)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)驗(yàn)證。
[0015] 優(yōu)選地,對目標(biāo)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)驗(yàn)證包括:
[0016] 判斷所述目標(biāo)節(jié)點(diǎn)是否存放在所述緩存區(qū)中,如果未存放在所述緩存區(qū)中,則驗(yàn) 證所述目標(biāo)節(jié)點(diǎn),當(dāng)所述目標(biāo)節(jié)點(diǎn)通過驗(yàn)證時(shí),則確定存儲(chǔ)的數(shù)據(jù)正常,并讀取所述目標(biāo)節(jié) 點(diǎn)中的數(shù)據(jù),當(dāng)所述目標(biāo)節(jié)點(diǎn)驗(yàn)證失敗,則確定存儲(chǔ)的數(shù)據(jù)異常。
[0017] 本發(fā)明還提供了一種數(shù)據(jù)存儲(chǔ)保護(hù)系統(tǒng),包括:
[0018] 數(shù)據(jù)塊組織模塊,用于將要存儲(chǔ)的目標(biāo)數(shù)據(jù)組織成預(yù)設(shè)大小的多個(gè)數(shù)據(jù)塊;
[0019] 節(jié)點(diǎn)確定模塊,用于根據(jù)數(shù)據(jù)塊個(gè)數(shù)確定葉子節(jié)點(diǎn)個(gè)數(shù),根據(jù)數(shù)據(jù)塊大小和哈希 算法位數(shù)確定中間節(jié)點(diǎn)個(gè)數(shù);
[0020] 數(shù)據(jù)塊存儲(chǔ)模塊,用于將所述數(shù)據(jù)塊保存至所述葉子節(jié)點(diǎn),將所述數(shù)據(jù)塊對應(yīng)的 哈希值保存至所述數(shù)據(jù)塊所屬節(jié)點(diǎn)的父節(jié)點(diǎn)中;
[0021] 哈希樹生成模塊,用于根據(jù)所述葉子節(jié)點(diǎn)個(gè)數(shù)和所述中間節(jié)點(diǎn)個(gè)數(shù),將數(shù)據(jù)塊和 對應(yīng)的哈希值組織成哈希樹。
[0022] 優(yōu)選地,所述數(shù)據(jù)存儲(chǔ)保護(hù)系統(tǒng)還包括:
[0023] 緩存模塊,用于將所述哈希樹中的節(jié)點(diǎn)存放至緩存區(qū)中。
[0024] 優(yōu)選地,所述數(shù)據(jù)存儲(chǔ)保護(hù)系統(tǒng)還包括:
[0025] 數(shù)據(jù)驗(yàn)證模塊,用于從所述哈希樹的葉子節(jié)點(diǎn)到根節(jié)點(diǎn),依次對每一個(gè)目標(biāo)節(jié)點(diǎn) 進(jìn)行數(shù)據(jù)驗(yàn)證。
[0026] 優(yōu)選地,所述數(shù)據(jù)驗(yàn)證模塊包括:
[0027] 驗(yàn)證子模塊,用于判斷所述目標(biāo)節(jié)點(diǎn)是否存放在所述緩存區(qū)中,如果未存放在所 述緩存區(qū)中,則驗(yàn)證所述目標(biāo)節(jié)點(diǎn),當(dāng)所述目標(biāo)節(jié)點(diǎn)通過驗(yàn)證時(shí),則確定存儲(chǔ)的數(shù)據(jù)正常, 并讀取所述目標(biāo)節(jié)點(diǎn)中的數(shù)據(jù),當(dāng)所述目標(biāo)節(jié)點(diǎn)驗(yàn)證失敗,則確定存儲(chǔ)的數(shù)據(jù)異常;
[0028] 遍歷子模塊,用于從所述哈希樹的葉子節(jié)點(diǎn)到根節(jié)點(diǎn),依次對每一個(gè)目標(biāo)節(jié)點(diǎn)執(zhí) 行驗(yàn)證子模塊的步驟。
[0029] 應(yīng)用本發(fā)明提供的一種數(shù)據(jù)存儲(chǔ)保護(hù)方法與系統(tǒng),將要存儲(chǔ)的目標(biāo)數(shù)據(jù)組織成預(yù) 設(shè)大小的多個(gè)數(shù)據(jù)塊;根據(jù)數(shù)據(jù)塊個(gè)數(shù)確定葉子節(jié)點(diǎn)個(gè)數(shù),根據(jù)數(shù)據(jù)塊大小和哈希算法位 數(shù)確定中間節(jié)點(diǎn)個(gè)數(shù);將所述數(shù)據(jù)塊保存至所述葉子節(jié)點(diǎn),將所述數(shù)據(jù)塊對應(yīng)的哈希值保 存至所述數(shù)據(jù)塊所屬節(jié)點(diǎn)的父節(jié)點(diǎn)中;根據(jù)所述葉子節(jié)點(diǎn)個(gè)數(shù)和所述中間節(jié)點(diǎn)個(gè)數(shù),將數(shù) 據(jù)塊和對應(yīng)的哈希值組織成哈希樹,將數(shù)據(jù)組織成為數(shù)據(jù)塊,并將數(shù)據(jù)塊與哈希值組織成 哈希樹,進(jìn)行數(shù)據(jù)讀取時(shí)可迅速訪問各節(jié)點(diǎn),從哈希樹的各節(jié)點(diǎn)進(jìn)行數(shù)據(jù)驗(yàn)證可保證用戶 訪問數(shù)據(jù)的正確性。
【附圖說明】
[0030] 為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本 發(fā)明的實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù) 提供的附圖獲得其他的附圖。
[0031] 圖1為本發(fā)明一種數(shù)據(jù)存儲(chǔ)保護(hù)方法實(shí)施例一的流程圖;
[0032] 圖2為本發(fā)明一種數(shù)據(jù)存儲(chǔ)保護(hù)方法實(shí)施例一的設(shè)備映射框架圖;
[0033] 圖3為本發(fā)明一種數(shù)據(jù)存儲(chǔ)保護(hù)方法實(shí)施例二的流程圖;
[0034] 圖4為本發(fā)明一種數(shù)據(jù)存儲(chǔ)保護(hù)系統(tǒng)實(shí)施例三的結(jié)構(gòu)示意圖;
[0035] 圖5為本發(fā)明一種數(shù)據(jù)存儲(chǔ)保護(hù)系統(tǒng)實(shí)施例四的結(jié)構(gòu)示意圖;
[0036] 圖6為本發(fā)明一種數(shù)據(jù)存儲(chǔ)保護(hù)系統(tǒng)實(shí)施例四的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0037] 下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;?本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他 實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0038] 實(shí)施例一:
[0039] 本發(fā)明提供了一種數(shù)據(jù)存儲(chǔ)保護(hù)方法,圖1示出了本發(fā)明數(shù)據(jù)存儲(chǔ)保護(hù)方法實(shí)施 例一的流程圖,包括:
[0040] 步驟S101 :將要存儲(chǔ)的目標(biāo)數(shù)據(jù)組織成預(yù)設(shè)大小的多個(gè)數(shù)據(jù)塊;
[0041 ] 將數(shù)據(jù)組織成數(shù)據(jù)塊,如預(yù)設(shè)大小為每個(gè)數(shù)據(jù)塊為4K大小。
[0042] 步驟S102 :根據(jù)數(shù)據(jù)塊個(gè)數(shù)確定葉子節(jié)點(diǎn)個(gè)數(shù),根據(jù)數(shù)據(jù)塊大小和哈希算法位數(shù) 確定中間節(jié)點(diǎn)個(gè)數(shù);
[0043] 假如有η個(gè)數(shù)據(jù)塊,則需要η個(gè)葉子節(jié)點(diǎn),父節(jié)點(diǎn)的孩子節(jié)點(diǎn)個(gè)數(shù)為block_size/ hash_digest_size,其中,block_size表不一個(gè)數(shù)據(jù)塊的大小,hash_digest_size表不哈 希算法的位數(shù),孩子節(jié)點(diǎn)的數(shù)據(jù)塊對應(yīng)的哈希值依次保存在相應(yīng)的父節(jié)點(diǎn)中,如對于哈希 算法為256位,塊大小為4K的哈希樹,將4K轉(zhuǎn)換為位是4*1024*8位,則父節(jié)點(diǎn)存放哈希值 的個(gè)數(shù)為4*1024*8/256 = 128個(gè),其孩子節(jié)點(diǎn)的個(gè)數(shù)也是128個(gè),向下取2的最大整數(shù)次 方個(gè)節(jié)點(diǎn),因此該孩子節(jié)點(diǎn)的個(gè)數(shù)應(yīng)該是128個(gè),如果采用20位的哈希算法,那么父節(jié)點(diǎn)的 孩子節(jié)點(diǎn)個(gè)數(shù)應(yīng)該是4*1024*8/20 = 1638個(gè),此時(shí)向下取2的最大整數(shù)次方個(gè)節(jié)點(diǎn),因此 該孩子節(jié)點(diǎn)的個(gè)數(shù)應(yīng)該是1024。
[0044] 步驟S103 :將所述數(shù)據(jù)塊保存至所述葉子節(jié)點(diǎn),將所述數(shù)據(jù)塊對應(yīng)的哈希值保存 至所述數(shù)據(jù)塊所屬節(jié)點(diǎn)的父節(jié)點(diǎn)中;
[0045] 每個(gè)葉子節(jié)點(diǎn)存儲(chǔ)對應(yīng)的數(shù)據(jù)塊,哈希值存在對應(yīng)父節(jié)點(diǎn)中。
[0046] 步驟S104 :根據(jù)所述葉子節(jié)點(diǎn)個(gè)數(shù)和所述中間節(jié)點(diǎn)個(gè)數(shù),將數(shù)據(jù)塊和對應(yīng)的哈希 值組織成哈希樹。
[0047] 根據(jù)節(jié)點(diǎn)安排將數(shù)據(jù)塊與對應(yīng)哈希值組織成哈希樹,一個(gè)哈希樹預(yù)設(shè)最多有64 層,如有32768個(gè)葉子節(jié)點(diǎn),那么就會(huì)有32768個(gè)數(shù)據(jù)。如果每個(gè)塊的大小是4K,整個(gè)哈希 樹可以表示128M的數(shù)據(jù)塊。
[0048] 數(shù)據(jù)組織成哈希樹,將哈希樹的哈希節(jié)點(diǎn)存放至哈希磁盤中,哈希磁盤的大小完 全由需要保護(hù)的數(shù)據(jù)大小決定,其最小容量可以根據(jù)磁盤的大小計(jì)算出來,公式如下:
[0051] Data_size表示數(shù)據(jù)磁盤中被保護(hù)數(shù)據(jù)的大小,block_size表示系統(tǒng)中數(shù)據(jù)塊大 小,默認(rèn)為4K,hashtree_degree代表哈希樹的度,hash_length表示使用哈希算法的長度。 如果data_size為GB數(shù)量級(jí),那么block_size就可以忽略不計(jì),則哈希磁盤最小容量接近
[0052] 本實(shí)施例中實(shí)現(xiàn)數(shù)據(jù)組織成哈希樹需要用到設(shè)備映射技術(shù)以及LVM(Logical VolumeManager)邏輯卷管理技術(shù),設(shè)備映射技術(shù)是物理設(shè)備到邏輯設(shè)備的一種映射機(jī)制, 用戶可以根據(jù)自己的需要定制相關(guān)的策略。用戶在用戶空間中制定映射策略,按照實(shí)際需 要編寫處理的I/O請求的目標(biāo)驅(qū)動(dòng)插件,實(shí)現(xiàn)所需要的特性,如圖2所示。
[0053] LVM(LogicalVolumeManager)邏輯卷管理技術(shù),LVM將一個(gè)或多個(gè)硬盤的分區(qū)在 邏輯上集合,相當(dāng)于一個(gè)大硬盤來使用,當(dāng)硬盤的空間不夠使用的時(shí)候,可以繼續(xù)將其它的 硬盤的分區(qū)加入其中,這樣可以實(shí)現(xiàn)磁盤空間的動(dòng)態(tài)管理,相對于普通的磁盤分區(qū)有很大 的靈活性。
[0054] 應(yīng)用本實(shí)施例提供的一種數(shù)據(jù)存儲(chǔ)保護(hù)方法,將要