數(shù)據(jù)存儲的方法及設(shè)備的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種數(shù)據(jù)存儲技術(shù),尤其涉及一種串行高級技術(shù)SATA硬盤的數(shù)據(jù)存儲的方法及設(shè)備。
【背景技術(shù)】
[0002]“靜默數(shù)據(jù)破壞”現(xiàn)象指的是數(shù)據(jù)在存儲系統(tǒng)內(nèi)傳輸時,由于經(jīng)過多種傳輸通道和復(fù)雜的軟件處理,導(dǎo)致某個數(shù)據(jù)錯誤,而這種錯誤無法立即檢測出來,在后續(xù)的數(shù)據(jù)檢查和訪問中才發(fā)現(xiàn)數(shù)據(jù)已經(jīng)出錯。為了解決“靜默數(shù)據(jù)破壞”問題,現(xiàn)有技術(shù)中通過對硬盤每扇區(qū)的數(shù)據(jù)生成相應(yīng)的保護信息(Protect1n Informat1n,簡稱:PI)校驗字段,來實現(xiàn)系統(tǒng)內(nèi)的數(shù)據(jù)完整性,其中,對于存儲系統(tǒng)中使用的串行連接小型計算機系統(tǒng)接口(SerialAttached Small Computer System Interface,簡稱:SAS)盤和光纖通道(Fiber Channel,簡稱:FC)盤可以支持標準的PI格式,常用的是520字節(jié)/扇區(qū),其中,512字節(jié)存放用戶數(shù)據(jù),8字節(jié)存放校驗數(shù)據(jù)。
[0003]然而,對于企業(yè)級存儲系統(tǒng)使用的串行高級技術(shù)(Serial Advanced TechnologyAttachment,簡稱:SATA)硬盤不支持標準的PI格式,常用的用戶數(shù)據(jù)和PI校驗數(shù)據(jù)在硬盤上的排布方式如圖1和圖2所示,圖1中,硬盤扇區(qū)大小為512字節(jié)/扇區(qū),每65個扇區(qū)中前64個扇區(qū)存放用戶數(shù)據(jù),最后一個扇區(qū)存放前64個用戶數(shù)據(jù)對應(yīng)的校驗數(shù)據(jù),圖2中,每65個扇區(qū),第一個扇區(qū)存放用戶數(shù)據(jù),第二個扇區(qū)存放第一個扇區(qū)用戶數(shù)據(jù)的校驗數(shù)據(jù)和接下來的用戶數(shù)據(jù),圖1和圖2中,每32K用戶數(shù)據(jù)就可以對齊一次,當輸入/輸出(Input/Output,簡稱:10)彡32KB時,對硬盤的訪問沒有懲罰,當10 < 32KB時,必須要在該盤上讀數(shù)據(jù)一次,為了獲得校驗還需讀校驗一次,一般情況下需要多訪問一個扇區(qū),且數(shù)據(jù)和校驗還需要進行解析、修改,懲罰比較嚴重,對性能會有很大的影響,但是現(xiàn)有技術(shù)中對于扇區(qū)大小為512字節(jié)的硬盤,有相當一部分應(yīng)用的10大于32KB,所以對性能不會有很大的影響。
[0004]然而隨著硬盤逐漸切換到4096字節(jié)/扇區(qū),若按照圖1和圖2的排布方方式,則每2M用戶數(shù)據(jù)才能對齊一次,這樣所有業(yè)務(wù)的10都會小于2M,為了讀取校驗,所有業(yè)務(wù)的訪問不可避免地存在讀寫懲罰,對性能會有很大的影響,而且對于SAS/SATA盤混插的存儲系統(tǒng),硬盤格式的不同,存儲系統(tǒng)軟件對數(shù)據(jù)的組織和處理無法統(tǒng)一,造成技術(shù)實現(xiàn)更加復(fù)雜。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提供一種數(shù)據(jù)存儲的方法及設(shè)備,解決了現(xiàn)有技術(shù)中為讀取校驗數(shù)據(jù)而導(dǎo)致的系統(tǒng)性能降低的問題,同時降低了 SATA盤混插的存儲系統(tǒng)對數(shù)據(jù)處理的復(fù)雜度。
[0006]第一方面,本發(fā)明提供一種數(shù)據(jù)存儲的方法,包括:
[0007]將系統(tǒng)中格式化后的硬盤空間劃分為用戶數(shù)據(jù)存儲空間和校驗數(shù)據(jù)存儲空間,所述用戶數(shù)據(jù)存儲空間用于存儲用戶數(shù)據(jù),所述校驗數(shù)據(jù)存儲空間用于存儲所述用戶數(shù)據(jù)對應(yīng)的校驗數(shù)據(jù),其中系統(tǒng)的硬盤為串行高級技術(shù)SATA硬盤或與SATA硬盤混插的硬盤;
[0008]當系統(tǒng)接收到寫請求時,將用戶數(shù)據(jù)寫入所述用戶數(shù)據(jù)存儲空間,同時將用戶數(shù)據(jù)對應(yīng)的校驗數(shù)據(jù)寫入所述校驗數(shù)據(jù)存儲空間;
[0009]當系統(tǒng)接收到讀請求時,從硬盤的用戶數(shù)據(jù)存儲空間讀取所述用戶數(shù)據(jù),同時從校驗數(shù)據(jù)存儲空間讀取所述用戶數(shù)據(jù)對應(yīng)的校驗數(shù)據(jù)。
[0010]在第一方面的第一種可能的實現(xiàn)方式中,所述用戶數(shù)據(jù)存儲空間和所述校驗數(shù)據(jù)存儲空間分別由多個邏輯單元號LUN組成,其中所述用戶數(shù)據(jù)存儲空間的LUN的分配順序與所述校驗數(shù)據(jù)存儲空間的LUN分配順序相同。
[0011]根據(jù)第一方面和第一方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述將用戶數(shù)據(jù)寫入所述用戶數(shù)據(jù)存儲空間,同時將用戶數(shù)據(jù)對應(yīng)的校驗數(shù)據(jù)寫入所述校驗數(shù)據(jù)存儲空間,包括:
[0012]將用戶數(shù)據(jù)先寫入系統(tǒng)的高速緩沖存儲器Cache的數(shù)據(jù)區(qū),其中系統(tǒng)的Cache包括用于存儲用戶數(shù)據(jù)的數(shù)據(jù)區(qū)以及用于存儲所述用戶數(shù)據(jù)對應(yīng)的校驗數(shù)據(jù)的校驗區(qū);
[0013]根據(jù)用戶數(shù)據(jù)計算出對應(yīng)的校驗數(shù)據(jù),或獲取前端用戶數(shù)據(jù)生成的校驗數(shù)據(jù),并將所述校驗數(shù)據(jù)寫入所述cache的校驗區(qū);
[0014]將所述Cache數(shù)據(jù)區(qū)的用戶數(shù)據(jù)寫入所述系統(tǒng)的硬盤用戶數(shù)據(jù)存儲空間,同時將所述cache的校驗區(qū)的校驗數(shù)據(jù)寫入所述校驗數(shù)據(jù)存儲空間。
[0015]根據(jù)第一方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,將所述Cache數(shù)據(jù)區(qū)的用戶數(shù)據(jù)寫入所述系統(tǒng)的硬盤用戶數(shù)據(jù)存儲空間,同時將所述cache的校驗區(qū)的校驗數(shù)據(jù)寫入所述校驗數(shù)據(jù)存儲空間,包括:
[0016]將所述Cache數(shù)據(jù)區(qū)的用戶數(shù)據(jù)寫入所述用戶數(shù)據(jù)存儲空間的LUN中;
[0017]根據(jù)所述用戶數(shù)據(jù)在所述用戶數(shù)據(jù)存儲空間的LUN中的用戶數(shù)據(jù)地址,以及所述用戶數(shù)據(jù)地址與所述校驗數(shù)據(jù)在所述校驗數(shù)據(jù)存儲空間的LUN中的地址的映射關(guān)系,得出所述用戶數(shù)據(jù)對應(yīng)的所述校驗數(shù)據(jù)的地址,即校驗數(shù)據(jù)地址;
[0018]根據(jù)所述校驗數(shù)據(jù)地址將所述校驗數(shù)據(jù)寫入所述校驗數(shù)據(jù)存儲空間的LUN中。
[0019]根據(jù)第一方面、第一方面的第一種至第三種可能的實現(xiàn)方式的任意一種,在第四種可能的實現(xiàn)方式中,從硬盤的用戶數(shù)據(jù)存儲空間讀取所述用戶數(shù)據(jù),同時從校驗數(shù)據(jù)存儲空間讀取所述用戶數(shù)據(jù)對應(yīng)的校驗數(shù)據(jù),包括:
[0020]若接收到讀請求時,首先在系統(tǒng)Cache的數(shù)據(jù)區(qū)讀所述用戶數(shù)據(jù),如果在系統(tǒng)Cache的數(shù)據(jù)區(qū)能夠讀取到所述用戶數(shù)據(jù),則向主機返回所述用戶數(shù)據(jù);
[0021]如果在系統(tǒng)的Cache的數(shù)據(jù)區(qū)中無法讀取到所述用戶數(shù)據(jù),則從系統(tǒng)的硬盤用戶數(shù)據(jù)存儲空間讀取所述用戶數(shù)據(jù),同時從校驗數(shù)據(jù)存儲空間讀取所述用戶數(shù)據(jù)對應(yīng)的校驗數(shù)據(jù)。
[0022]根據(jù)第一方面的第四種可能的實現(xiàn)方式,在第五種可能的實現(xiàn)方式中,如果在系統(tǒng)的Cache的數(shù)據(jù)區(qū)中無法讀取到所述用戶數(shù)據(jù),從系統(tǒng)的硬盤用戶數(shù)據(jù)存儲空間讀取所述用戶數(shù)據(jù),同時從校驗數(shù)據(jù)存儲空間讀取所述用戶數(shù)據(jù)對應(yīng)的校驗數(shù)據(jù),包括:
[0023]從硬盤的用戶數(shù)據(jù)存儲空間的LUN中讀取所述用戶數(shù)據(jù),并根據(jù)校驗算法計算出所述用戶數(shù)據(jù)對應(yīng)的校驗數(shù)據(jù);
[0024]根據(jù)所述用戶數(shù)據(jù)在所述用戶數(shù)據(jù)存儲空間的LUN中的地址與所述校驗數(shù)據(jù)在所述校驗數(shù)據(jù)存儲空間的LUN中的地址的映射關(guān)系,獲取校驗數(shù)據(jù)地址;
[0025]根據(jù)所述校驗數(shù)據(jù)地址,從校驗數(shù)據(jù)空間的LUN中讀出對應(yīng)的校驗數(shù)據(jù),并將所述讀取的校驗數(shù)據(jù)與所述計算出的校驗數(shù)據(jù)進行比較。
[0026]根據(jù)第一方面的第三種或五種可能的實現(xiàn)方式,在第六種可能的實現(xiàn)方式中,所述用戶數(shù)據(jù)在所述用戶數(shù)據(jù)存儲空間的LUN中的地址與所述校驗數(shù)據(jù)在所述校驗數(shù)據(jù)存儲空間的LUN中的地址的映射關(guān)系如下所示:
[0027]校驗數(shù)據(jù)地址=所述LUN的校驗數(shù)據(jù)起始地址+(用戶數(shù)據(jù)地址-所述LUN的用戶數(shù)據(jù)起始地址)/m,其中m為所述LUN的用戶數(shù)據(jù)存儲空間容量與校驗數(shù)據(jù)存儲空間容量的比值。
[0028]第二方面,本發(fā)明提供一種數(shù)據(jù)存儲設(shè)備,包括:
[0029]用戶數(shù)據(jù)存儲模塊,用于存儲用戶數(shù)據(jù);
[0030]校驗數(shù)據(jù)存儲模塊,用于存儲所述用戶數(shù)據(jù)對應(yīng)的校驗數(shù)據(jù);
[0031]寫模塊,用于當系統(tǒng)接收到寫請求時,將用戶數(shù)據(jù)寫入所述用戶數(shù)據(jù)存儲模塊,同時將用戶數(shù)據(jù)對應(yīng)的校驗數(shù)據(jù)寫入所述校驗數(shù)據(jù)存儲模塊;
[0032]讀模塊,用于當系統(tǒng)接收到讀請求時,從硬盤的用戶數(shù)據(jù)存儲空間讀取所述用戶數(shù)據(jù),同時從校驗數(shù)據(jù)存儲空間讀取所述用戶數(shù)據(jù)對應(yīng)的校驗數(shù)據(jù)。
[0033]在第二方面的第一種可能的實現(xiàn)方式中,還包括所述用戶數(shù)據(jù)存儲模塊和所述校驗數(shù)據(jù)存儲模塊分別由由多個邏輯單元號LUN組成,其中所述用戶數(shù)據(jù)存儲空間的LUN的分配順序與所述校驗數(shù)據(jù)存儲空間的LUN分配順序相同。
[0034]根據(jù)第二方面或第二方面的第一種可能的實現(xiàn)方式,第二種可能的實現(xiàn)方式中,所述寫模塊,包括: