在存儲(chǔ)網(wǎng)絡(luò)中的鍵值生成方法及裝置制造方法
【專利摘要】本發(fā)明實(shí)施例公開了在存儲(chǔ)網(wǎng)絡(luò)中的鍵值生成方法與裝置。所述方法包括:接收讀寫請(qǐng)求;提取所述讀寫請(qǐng)求中包含的設(shè)備號(hào)、偏移量及數(shù)據(jù)長(zhǎng)度信息;生成包含類型標(biāo)示符、所述設(shè)備號(hào)、所述偏移量及所述數(shù)據(jù)長(zhǎng)度信息的鍵值字符串,所述類型標(biāo)示符用于表示所述讀寫請(qǐng)求為塊讀寫請(qǐng)求;將所述鍵值字符串轉(zhuǎn)換為十六進(jìn)制數(shù)據(jù)形式,得到鍵值。采用本發(fā)明的方法與裝置,可以在不對(duì)現(xiàn)有應(yīng)用的正常使用造成影響的前提下,生成鍵值。
【專利說(shuō)明】在存儲(chǔ)網(wǎng)絡(luò)中的鍵值生成方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及存儲(chǔ)領(lǐng)域,尤其涉及在存儲(chǔ)網(wǎng)絡(luò)中的鍵值生成方法及裝置。
【背景技術(shù)】
[0002]網(wǎng)絡(luò)存儲(chǔ)是基于網(wǎng)絡(luò)的數(shù)據(jù)存儲(chǔ)技術(shù),廣泛應(yīng)用于服務(wù)器、工作站等設(shè)備?,F(xiàn)有網(wǎng)絡(luò)存儲(chǔ)大致可分為3種:直連式存儲(chǔ)(DAS,Direct Attached Storage)、網(wǎng)絡(luò)存儲(chǔ)設(shè)備(NAS,Network Attached Storage)和存儲(chǔ)網(wǎng)絡(luò)(SAN, Storage Area Network)。其中以 SAN 的應(yīng)用最為廣泛。SAN采用可擴(kuò)展的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)連接服務(wù)器和存儲(chǔ)設(shè)備,并將數(shù)據(jù)的存儲(chǔ)和管理集中在相對(duì)獨(dú)立的專用網(wǎng)絡(luò)中,面向服務(wù)器提供數(shù)據(jù)存儲(chǔ)服務(wù)。服務(wù)器和存儲(chǔ)設(shè)備之間的多路、可選擇的數(shù)據(jù)交換消除了以往存儲(chǔ)結(jié)構(gòu)在可擴(kuò)展性和數(shù)據(jù)共享方面的局限性。
[0003]在SAN 中,通常米用基于塊存儲(chǔ)方式的 SCSI (Small Computer System Interface)硬盤作為存儲(chǔ)設(shè)備。由于SCSI硬盤采用邏輯尋址的方式定位數(shù)據(jù)報(bào)文位置,因此服務(wù)器上的應(yīng)用在讀寫存儲(chǔ)設(shè)備上的某數(shù)據(jù)塊時(shí),首先生成該數(shù)據(jù)塊的邏輯塊地址(LBA,LogicalBlock Address),然后生成包含邏輯塊地址的塊讀寫請(qǐng)求,由服務(wù)器將塊讀寫請(qǐng)求發(fā)送至SCSI硬盤,SCSI硬盤根據(jù)塊讀寫請(qǐng)求中的邏輯塊地址,確定設(shè)備所要讀取的數(shù)據(jù)塊,完成數(shù)據(jù)塊的讀寫。
[0004]隨著網(wǎng)絡(luò)存儲(chǔ)的應(yīng)用范圍越來(lái)越廣,使用者對(duì)網(wǎng)絡(luò)存儲(chǔ)的要求也越來(lái)越高。為滿足使用者對(duì)網(wǎng)絡(luò)存儲(chǔ)易擴(kuò)展及瘦分配(ThinProvisioning)的需求,業(yè)界發(fā)布了 KINETIC開放式存儲(chǔ)平臺(tái)。KINETIC開放式存儲(chǔ)平臺(tái)修改傳統(tǒng)的存儲(chǔ)協(xié)議棧,通過(guò)TCP/IP網(wǎng)絡(luò)協(xié)議棧連接TCP/IP網(wǎng)絡(luò)磁盤構(gòu)成IP硬盤。IP硬盤采用鍵值存儲(chǔ)的方式存取數(shù)據(jù),根據(jù)鍵值讀寫請(qǐng)求中的鍵值確定設(shè)備所要讀取的數(shù)據(jù)塊,進(jìn)而完成數(shù)據(jù)塊的讀寫。IP硬盤采用鍵值存儲(chǔ)的方式存取數(shù)據(jù),不但避免了復(fù)雜的空間組織算法,提高了讀寫效率,而且提升了硬盤的可擴(kuò)展性。
[0005]由于IP硬盤采用鍵值存儲(chǔ)的方式存取數(shù)據(jù),當(dāng)網(wǎng)絡(luò)存儲(chǔ)所使用的存儲(chǔ)設(shè)備由SCSI硬盤轉(zhuǎn)換為IP硬盤時(shí),為使服務(wù)器上的各個(gè)應(yīng)用能夠訪問(wèn)IP硬盤中的數(shù)據(jù),就需要對(duì)各個(gè)應(yīng)用進(jìn)行修改,使各個(gè)應(yīng)用能夠生成鍵值,進(jìn)而生成包含鍵值的鍵值讀寫請(qǐng)求。但是,由于一個(gè)服務(wù)器上可能存在種類多樣、數(shù)量眾多的應(yīng)用,對(duì)每一個(gè)應(yīng)用都進(jìn)行修改,不但會(huì)影響現(xiàn)有應(yīng)用的正常使用,而且也可能對(duì)應(yīng)用的穩(wěn)定性造成影響。
【發(fā)明內(nèi)容】
[0006]本發(fā)明實(shí)施例提供了在存儲(chǔ)網(wǎng)絡(luò)中的鍵值生成方法及鍵值生成裝置,以解決采用現(xiàn)有技術(shù)生成鍵值,不但會(huì)影響應(yīng)用的正常使用,而且也可能對(duì)應(yīng)用的穩(wěn)定性造成影響的問(wèn)題。
[0007]第一方面,本發(fā)明實(shí)施例提供了一種在存儲(chǔ)網(wǎng)絡(luò)中的鍵值生成方法,該方法包括:接收讀寫請(qǐng)求;提取所述讀寫請(qǐng)求中包含的設(shè)備號(hào)、偏移量及數(shù)據(jù)長(zhǎng)度信息;生成包含類型標(biāo)示符、所述設(shè)備號(hào)、所述偏移量及所述數(shù)據(jù)長(zhǎng)度信息的鍵值字符串,所述類型標(biāo)示符用于表示所述讀寫請(qǐng)求為塊讀寫請(qǐng)求;將所述鍵值字符串轉(zhuǎn)換為十六進(jìn)制數(shù)據(jù)形式,得到鍵值。
[0008]結(jié)合第一方面,在第一方面第一種可能的實(shí)現(xiàn)方式中,所述生成包含類型標(biāo)示符、所述設(shè)備號(hào)、所述偏移量及所述數(shù)據(jù)長(zhǎng)度信息的鍵值字符串,包括:生成第一字符串,所述第一字符串包括表示所述設(shè)備號(hào)編碼長(zhǎng)度的第一子字符串及表示所述設(shè)備號(hào)數(shù)值的第二子字符串;生成第二字符串,所述第二字符串包括表不所述偏移量編碼長(zhǎng)度的第三子字符串及表示所述偏移量數(shù)值的第四子字符串;生成第三字符串,所述第三字符串包括表示所述數(shù)據(jù)長(zhǎng)度信息編碼長(zhǎng)度的第五子字符串及表示所述數(shù)據(jù)長(zhǎng)度信息數(shù)值的第六子字符串;生成包含所述類型標(biāo)示符、所述第一字符串、所述第二字符串及所述第三字符串的鍵值字符串。
[0009]結(jié)合第一方面第一種可能的實(shí)現(xiàn)方式,在第一方面第二種可能的實(shí)現(xiàn)方式中,所述生成第一字符串,包括:依次連接第一分隔符、所述第一子字符串、第二分隔符及所述第二子字符串,生成所述第一字符串。
[0010]結(jié)合第一方面第一種可能的實(shí)現(xiàn)方式,在第一方面第三種可能的實(shí)現(xiàn)方式中,依次連接第一分隔符、所述第三子字符串、第二分隔符及所述第四子字符串,生成所述第二字符串。
[0011]結(jié)合第一方面第一種可能的實(shí)現(xiàn)方式,在第一方面第四種可能的實(shí)現(xiàn)方式中,依次連接第一分隔符、所述第五子字符串、第二分隔符及所述第六子字符串,生成所述第三字符串。
[0012]結(jié)合第一方面第一種可能的實(shí)現(xiàn)方式、第一方面第二種可能的實(shí)現(xiàn)方式、第一方面第三種可能的實(shí)現(xiàn)方式或第一方面第四種可能的實(shí)現(xiàn)方式,在第一方面第五種可能的實(shí)現(xiàn)方式中,所述生成包含所述類型標(biāo)示符、所述第一字符串、所述第二字符串及所述第三字符串的鍵值字符串,包括:依次連接所述類型標(biāo)示符、所述第一字符串、所述第二字符串及所述第三字符串,生成所述鍵值字符串。
[0013]結(jié)合第一方面第一種可能的實(shí)現(xiàn)方式、第一方面第二種可能的實(shí)現(xiàn)方式、第一方面第三種可能的實(shí)現(xiàn)方式、第一方面第四種可能的實(shí)現(xiàn)方式或第一方面第五種可能的實(shí)現(xiàn)方式,在第一方面第六種可能的實(shí)現(xiàn)方式中,所述將所述鍵值字符串轉(zhuǎn)換為十六進(jìn)制數(shù)據(jù)形式得到鍵值,包括:將所述鍵值字符串所包含的數(shù)值轉(zhuǎn)換為十六進(jìn)制形式,并根據(jù)ASCII碼表將所述鍵值字符串所包含的字符映射為十六進(jìn)制數(shù)值,得到十六進(jìn)制形式的鍵值。
[0014]第二方面,本發(fā)明實(shí)施例提供了一種在存儲(chǔ)網(wǎng)絡(luò)中的鍵值生成裝置,該裝置包括:接收單元,用于接收讀寫請(qǐng)求;提取單元,用于在所述接收單元接收到的所述讀寫請(qǐng)求為塊讀寫請(qǐng)求時(shí),提取所述讀寫請(qǐng)求中包含的設(shè)備號(hào)、偏移量及數(shù)據(jù)長(zhǎng)度信息;生成單元,用于生成包含類型標(biāo)示符、所述提取單元提取到的所述設(shè)備號(hào)、所述偏移量及所述數(shù)據(jù)長(zhǎng)度信息的鍵值字符串,所述類型標(biāo)示符用于表示所述讀寫請(qǐng)求為塊讀寫請(qǐng)求;轉(zhuǎn)換單元,用于將所述生成單元生成的所述鍵值字符串轉(zhuǎn)換為十六進(jìn)制數(shù)據(jù)形式得到鍵值。
[0015]結(jié)合第二方面,在第二方面第一種可能的實(shí)現(xiàn)方式中,所述生成單元包括:第一生成子單元,用于生成第一字符串,所述第一字符串包括表示所述設(shè)備號(hào)編碼長(zhǎng)度的第一子字符串及表示所述設(shè)備號(hào)數(shù)值的第二子字符串;第二生成子單元,用于生成第二字符串,所述第二字符串包括表示所述偏移量編碼長(zhǎng)度的第三子字符串及表示所述偏移量數(shù)值的第四子字符串;第三生成子單元,用于生成第三字符串,所述第三字符串包括表示所述數(shù)據(jù)長(zhǎng)度信息編碼長(zhǎng)度的第五子字符串及表示所述數(shù)據(jù)長(zhǎng)度信息數(shù)值的第六子字符串;鍵值字符串生成子單元,用于生成包含所述類型標(biāo)示符、所述第一生成子單元生成的所述第一字符串、所述第二生成子單元生成的所述第二字符串及所述第三生成子單元生成的所述第三字符串的鍵值字符串。
[0016]結(jié)合第二方面第一種可能的實(shí)現(xiàn)方式,在第二方面第二種可能的實(shí)現(xiàn)方式中,所述第一生成子單元,用于依次連接第一分隔符、所述第一子字符串、第二分隔符及所述第二字符串,生成所述第一字符串。
[0017]結(jié)合第二方面第一種可能的實(shí)現(xiàn)方式,在第二方面第三種可能的實(shí)現(xiàn)方式中,所述第二生成子單元,用于依次連接第一分隔符、所述第三子字符串、第二分隔符及所述第四子字符串,生成所述第二字符串。
[0018]結(jié)合第二方面第一種可能的實(shí)現(xiàn)方式,在第二方面第四種可能的實(shí)現(xiàn)方式中,所述第三生成子單元,用于依次連接第一分隔符、所述第五子字符串、第二分隔符及所述第六子字符串,生成所述第三字符串。
[0019]結(jié)合第二方面第一種可能的實(shí)現(xiàn)方式、第二方面第二種可能的實(shí)現(xiàn)方式、第二方面第三種可能的實(shí)現(xiàn)方式或第二方面第四種可能的實(shí)現(xiàn)方式,在第二方面第五種可能的實(shí)現(xiàn)方式中,所述鍵值字符串生成子單元,用于依次連接所述類型標(biāo)示符、所述第一字符串、所述第二字符串及所述第三字符串,生成所述鍵值字符串。
[0020]結(jié)合第二方面第一種可能的實(shí)現(xiàn)方式、第二方面第二種可能的實(shí)現(xiàn)方式、第二方面第三種可能的實(shí)現(xiàn)方式、第二方面第四種可能的實(shí)現(xiàn)方式或第二方面第五種可能的實(shí)現(xiàn)方式,在第二方面第六種可能的實(shí)現(xiàn)方式中,所述轉(zhuǎn)換單元,用于將所述鍵值字符串中的數(shù)值轉(zhuǎn)換為十六進(jìn)制形式,并根據(jù)ASCII碼表將所述鍵值字符串中的字符映射為十六進(jìn)制數(shù)值。
[0021]本發(fā)明實(shí)施例中,接收讀寫請(qǐng)求;若所述讀寫請(qǐng)求為塊讀寫請(qǐng)求,提取所述讀寫請(qǐng)求中包含的設(shè)備號(hào)、偏移量及數(shù)據(jù)長(zhǎng)度信息;生成包含類型標(biāo)示符、所述設(shè)備號(hào)、所述偏移量及所述數(shù)據(jù)長(zhǎng)度信息的鍵值字符串,所述類型標(biāo)示符用于表示所述讀寫請(qǐng)求為塊讀寫請(qǐng)求;將所述鍵值字符串轉(zhuǎn)換為十六進(jìn)制數(shù)據(jù)形式得到鍵值。采用本實(shí)施例,可以在應(yīng)用發(fā)送的讀寫請(qǐng)求為基于SCSI硬盤的塊讀寫請(qǐng)求時(shí),根據(jù)塊讀寫請(qǐng)求中包含的邏輯塊地址生成鍵值。當(dāng)網(wǎng)絡(luò)存儲(chǔ)所使用的存儲(chǔ)設(shè)備由SCSI硬盤轉(zhuǎn)換為IP硬盤時(shí),可以在不對(duì)應(yīng)用進(jìn)行修改的前提下,將基于SCSI硬盤的塊讀寫請(qǐng)求生成鍵值??梢栽诓粚?duì)現(xiàn)有應(yīng)用的正常使用造成影響的前提下,降低對(duì)應(yīng)用穩(wěn)定性造成的影響。
【專利附圖】
【附圖說(shuō)明】
[0022]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹。
[0023]圖1為本發(fā)明在存儲(chǔ)網(wǎng)絡(luò)中的鍵值生成方法一個(gè)實(shí)施例的流程圖;
[0024]圖2A為本發(fā)明在存儲(chǔ)網(wǎng)絡(luò)中的鍵值生成裝置一個(gè)實(shí)施例的示意圖;
[0025]圖2B為本發(fā)明在存儲(chǔ)網(wǎng)絡(luò)中的鍵值生成裝置生成單元一個(gè)實(shí)施例的示意圖;
[0026]圖3為本發(fā)明在存儲(chǔ)網(wǎng)絡(luò)中的鍵值生成裝置另一個(gè)實(shí)施例的示意圖?!揪唧w實(shí)施方式】
[0027]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整的描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。
[0028]參見(jiàn)圖1,為本發(fā)明在存儲(chǔ)網(wǎng)絡(luò)中的鍵值生成方法一個(gè)實(shí)施例的流程圖。該方法可以由存儲(chǔ)網(wǎng)絡(luò)中連接在服務(wù)器和IP硬盤之間的獨(dú)立設(shè)備執(zhí)行。另外,由于各個(gè)應(yīng)用生成的讀寫請(qǐng)求都需要通過(guò)服務(wù)器的通信接口,例如網(wǎng)絡(luò)適配器(NIC, Network Interface Card),發(fā)送至存儲(chǔ)設(shè)備,因此該方法也可以由服務(wù)器來(lái)實(shí)現(xiàn)。該方法包括如下步驟:
[0029]步驟101,接收讀寫請(qǐng)求。
[0030]由于同一個(gè)服務(wù)器上可能會(huì)有多種類型、多個(gè)不同的應(yīng)用,每一個(gè)應(yīng)用生成的讀寫請(qǐng)求,都需要通過(guò)服務(wù)器的通信接口發(fā)送至存儲(chǔ)設(shè)備。因此,在接收讀寫請(qǐng)求時(shí),可以直接接收某一應(yīng)用發(fā)送的讀寫請(qǐng)求,也可以從服務(wù)器的通信接口接收通過(guò)該通信接口發(fā)送的所有讀寫請(qǐng)求。
[0031]步驟102,提取所述讀寫請(qǐng)求中包含的設(shè)備號(hào)、偏移量及數(shù)據(jù)長(zhǎng)度信息。
[0032]由于同一服務(wù)器上的可能有多種多樣應(yīng)用,不同應(yīng)用所生成的讀寫請(qǐng)求類型可能不一致,并且同一應(yīng)用在不同時(shí)刻生成的讀寫請(qǐng)求類型可能也不一致。由于讀寫請(qǐng)求可能是塊讀寫請(qǐng)求、文件讀寫請(qǐng)求或鍵值讀寫請(qǐng)求等,因此在接收到讀寫請(qǐng)求后,可以首先確定讀寫請(qǐng)求類型,進(jìn)而確定是否需要根據(jù)該讀寫請(qǐng)求所包含的內(nèi)容生成鍵值。例如,當(dāng)讀寫請(qǐng)求為塊讀寫請(qǐng)求時(shí),需要根據(jù)塊讀寫請(qǐng)求所包含的內(nèi)容生產(chǎn)鍵值,而當(dāng)讀寫請(qǐng)求為鍵值讀寫請(qǐng)求時(shí),由于讀寫請(qǐng)求本身已經(jīng)包含了鍵值,因此就不需要再生產(chǎn)鍵值。讀寫請(qǐng)求的請(qǐng)求類型可以通過(guò)讀寫請(qǐng)求所包含的類型標(biāo)示符進(jìn)行判斷,也可以根據(jù)讀寫請(qǐng)求包含的內(nèi)容進(jìn)行判斷。
[0033]由于現(xiàn)有存儲(chǔ)設(shè)備通常為SCSI硬盤,當(dāng)應(yīng)用需要在存儲(chǔ)設(shè)備上普通硬盤上讀寫數(shù)據(jù)時(shí),通常會(huì)生成一個(gè)基于SCSI硬盤的讀寫請(qǐng)求。當(dāng)該讀寫請(qǐng)求為基于SCSI硬盤的塊讀寫請(qǐng)求時(shí),讀寫請(qǐng)求中會(huì)包括應(yīng)用所要讀寫的數(shù)據(jù)塊的邏輯塊地址等信息。所述邏輯塊地址包含該數(shù)據(jù)塊所在存儲(chǔ)設(shè)備的設(shè)備號(hào)、所述數(shù)據(jù)塊在存儲(chǔ)設(shè)備中的地址偏移量及數(shù)據(jù)塊的數(shù)據(jù)長(zhǎng)度信息等等信息。因此可以提取該讀寫請(qǐng)求中的設(shè)備號(hào)、偏移量及數(shù)據(jù)長(zhǎng)度信肩、O
[0034]如果所述讀寫請(qǐng)求為文件讀寫請(qǐng)求,那么可以采用與文件讀寫請(qǐng)求對(duì)應(yīng)的方法對(duì)讀寫請(qǐng)求進(jìn)行處理。例如先將文件讀寫請(qǐng)求轉(zhuǎn)換為塊讀寫請(qǐng)求,然后再采用本發(fā)明實(shí)施例進(jìn)行處理。在此就不再做詳細(xì)說(shuō)明。
[0035]步驟103,生成包含類型標(biāo)示符、所述設(shè)備號(hào)、所述偏移量及所述數(shù)據(jù)長(zhǎng)度信息的鍵值字符串,所述類型標(biāo)示符用于表示所述讀寫請(qǐng)求為塊讀寫請(qǐng)求。
[0036]在根據(jù)設(shè)備號(hào)、偏移量及數(shù)據(jù)長(zhǎng)度信息生成鍵值時(shí),可以首先生成鍵值字符串,所述鍵值字符串包含類型標(biāo)示符、所述設(shè)備號(hào)、所述偏移量及所述數(shù)據(jù)長(zhǎng)度信息。其中,類型標(biāo)示符可以為預(yù)先設(shè)定的字符。
[0037]為使生成的鍵值字符串結(jié)構(gòu)清晰,在生成鍵值字符串時(shí),可以采用如下方式:生成第一字符串,所述第一字符串包括表示所述設(shè)備號(hào)編碼長(zhǎng)度的第一子字符串及表示所述設(shè)備號(hào)數(shù)值的第二子字符串;生成第二字符串,所述第二字符串包括表示所述偏移量編碼長(zhǎng)度的第三子字符串及表示所述偏移量數(shù)值的第四子字符串;生成第三字符串,所述第三字符串包括表示所述數(shù)據(jù)長(zhǎng)度信息編碼長(zhǎng)度的第五子字符串及表示所述數(shù)據(jù)長(zhǎng)度信息數(shù)值的第六子字符串;生成包含所述類型標(biāo)示符、所述第一字符串、所述第二字符串及所述第三字符串的鍵值字符串。
[0038]其中,在生成第一字符串時(shí),可以依次連接第一分隔符、所述第一子字符串、第二分隔符及所述第二字符串,得到第一字符串。例如,若所述第一分隔符為“:”,所述第二分隔符為“,所述設(shè)備編號(hào)用DEVNO表示,所述設(shè)備號(hào)編碼長(zhǎng)度為16位,則所述第一字符串可以為“:2_DEVN0”,其中編碼長(zhǎng)度可以根據(jù)需求設(shè)定,通常為16位。
[0039]在生成第二字符串時(shí),可以依次連接第一分隔符、所述第三子字符串、第二分隔符及所述第四字符串,得到第二字符串。例如,若所述第一分隔符為“:”,所述第二分隔符為
,所述偏移量用OFFSET表示,所述偏移量編碼長(zhǎng)度為32位,則所述第二字符串可以為“:4_0FFSET”,其中編碼長(zhǎng)度可以根據(jù)需求設(shè)定,通常為32位或64位。
[0040]在生成第三字符串時(shí),可以依次連接第一分隔符、所述第五子字符串、第二分隔符及所述第六子字符串,得到第三字符串。例如,若所述第一分隔符為“:”,所述第二分隔符為
,所述數(shù)據(jù)長(zhǎng)度信息用LENGTH表示,所述數(shù)據(jù)長(zhǎng)度信息編碼長(zhǎng)度為32位,則所述第三字符串可以為“:4_LENGTH”,其中編碼長(zhǎng)度可以根據(jù)需求設(shè)定,通常為32位或64位。
[0041]在生成鍵值字符串時(shí),可以依次連接所述類型標(biāo)示符、所述第一字符串、所述第二字符串及所述第三字符串生成所述鍵值字符串。例如,若塊讀寫請(qǐng)求的類型標(biāo)示符為B,所述第一字符串為“:2_DEVN0”、第二字符串為“:4_0FFSET”、第三字符串為“:4_LENGTH”,貝丨J所述鍵值字符串可以表示為 “B: 2_DEVN0:4_0FFSET: 4_LENGTH”。“B: 2_DEVN0:4_0FFSET: 4_LENGTH”表示希望在設(shè)備編號(hào)為DEVNO的設(shè)備中,讀寫偏移為OFFSET,長(zhǎng)度為L(zhǎng)ENGTH的數(shù)據(jù)。
[0042]在此需要說(shuō)明的是,所述鍵值字符串包括類型標(biāo)示符、所述設(shè)備號(hào)、所述偏移量及所述數(shù)據(jù)長(zhǎng)度信息即可,鍵值字符串具體的結(jié)構(gòu)本發(fā)明不做限定。
[0043]步驟104,將所述鍵值字符串轉(zhuǎn)換為十六進(jìn)制數(shù)據(jù)形式,得到鍵值。
[0044]通過(guò)鍵值存儲(chǔ)接口進(jìn)行數(shù)據(jù)讀寫所需鍵值通常為十六進(jìn)制形式,但鍵值字符串中可能既包括其他進(jìn)制形式的數(shù)值又包括字符,字符串各個(gè)部分的格式不統(tǒng)一,不符合作為鍵值的形式要求,無(wú)法作為鍵值使用。例如,所述類型標(biāo)示符、所述第一分隔符及所述第二分隔符等通常為字符,而第一子字符串、第二子字符串、第三子字符串、第四子字符串、第五子字符串、第六子字符串通常為數(shù)值。
[0045]因此,可以將所述鍵值字符串轉(zhuǎn)換為十六進(jìn)制數(shù)據(jù)形式,得到通過(guò)鍵值存儲(chǔ)接口進(jìn)行數(shù)據(jù)讀寫所需的鍵值。將所述鍵值字符串轉(zhuǎn)換為十六進(jìn)制數(shù)值形式時(shí),可以將非十六進(jìn)制的數(shù)值轉(zhuǎn)換為十六進(jìn)制,并將字符通過(guò)映射表映射為十六進(jìn)制數(shù)值。例如,可以將所述鍵值字符串中的第一子字符串、第二子字符串、第三子字符串、第四子字符串、第五子字符串、第六子字符串等數(shù)值轉(zhuǎn)換為十六進(jìn)制形式,并將所述鍵值字符串中類型標(biāo)示符、第一分隔符及第二分隔符等字符映射為十六進(jìn)制數(shù)值。當(dāng)鍵值字符串為“B: 2_DEVN0:4_0FFSET: 4_LENGTH”形式時(shí),若所述DEVNO為0x0803,所述OFFSET為1MB,所述LENGTH為1MB。則可以根據(jù)ASCII碼表將字符,將“B”映射為對(duì)應(yīng)的十六進(jìn)制數(shù)0x42,將“:”映射為對(duì)應(yīng)的十六進(jìn)制數(shù)0x3A,將“_”映射為對(duì)應(yīng)的十六進(jìn)制數(shù)0x2D。并將IMB用十六進(jìn)制表示為0x00100000。轉(zhuǎn)換后得到的鍵值即為 0x423A022D08033A042D001000003A042D00100000。
[0046]從上述實(shí)施例可以看出,接收讀寫請(qǐng)求;若所述讀寫請(qǐng)求為塊讀寫請(qǐng)求,提取所述讀寫請(qǐng)求中包含的設(shè)備號(hào)、偏移量及數(shù)據(jù)長(zhǎng)度信息;生成包含類型標(biāo)示符、所述設(shè)備號(hào)、所述偏移量及所述數(shù)據(jù)長(zhǎng)度信息鍵值字符串,所述類型標(biāo)示符用于表示所述讀寫請(qǐng)求為塊讀寫請(qǐng)求;將所述鍵值字符串轉(zhuǎn)換為十六進(jìn)制數(shù)據(jù)形式得到鍵值。采用本實(shí)施例,可以在應(yīng)用發(fā)送的讀寫請(qǐng)求為基于SCSI硬盤的塊讀寫請(qǐng)求時(shí),根據(jù)塊讀寫請(qǐng)求中包含的邏輯塊地址生成鍵值。當(dāng)網(wǎng)絡(luò)存儲(chǔ)所使用的存儲(chǔ)設(shè)備由SCSI硬盤轉(zhuǎn)換為IP硬盤時(shí),可以在不對(duì)應(yīng)用進(jìn)行修改的前提下,根據(jù)基于SCSI硬盤的塊讀寫請(qǐng)求生成鍵值??梢栽诓粚?duì)現(xiàn)有應(yīng)用的正常使用造成影響的前提下,降低對(duì)應(yīng)用穩(wěn)定性造成的影響。
[0047]方便并且快速的根據(jù)邏輯塊地址生成鍵值。實(shí)現(xiàn)過(guò)程可以通過(guò)獨(dú)立的轉(zhuǎn)換設(shè)備完成,不但可以保持服務(wù)器正常使用,而且可以保障服務(wù)器的穩(wěn)定性。
[0048]參見(jiàn)圖2A,為本發(fā)明在存儲(chǔ)網(wǎng)絡(luò)中的鍵值生成裝置一個(gè)實(shí)施例的示意圖。所述鍵值生成裝置可以是服務(wù)器與IP硬盤之間的一個(gè)獨(dú)立設(shè)備,也可以設(shè)置在所述服務(wù)器的NIC中。
[0049]該鍵值生成裝置包括:接收單元201,提取單元202,生成單元203,轉(zhuǎn)換單元204。
[0050]其中,所述接收單元201,用于接收讀寫請(qǐng)求。
[0051]所述提取單元202,用于提取所述接收單元201接收到的所述讀寫請(qǐng)求中包含的設(shè)備號(hào)、偏移量及數(shù)據(jù)長(zhǎng)度信息。
[0052]所述生成單元203,用于生成包含類型標(biāo)示符、所述提取單元202提取到的所述設(shè)備號(hào)、所述偏移量及所述數(shù)據(jù)長(zhǎng)度信息的鍵值字符串,所述類型標(biāo)示符用于表示所述讀寫請(qǐng)求為塊讀寫請(qǐng)求。
[0053]所述轉(zhuǎn)換單元204,用于將所述生成單元203生成的所述鍵值字符串轉(zhuǎn)換為十六進(jìn)制數(shù)據(jù)形式得到鍵值。
[0054]如圖2B所示,所述生成單元203可以包括第一生成子單元2031,第二生成子單元2032,第三生成子單元2033及鍵值字符串生成子單元2034。
[0055]所述第一生成子單元2031,用于生成第一字符串,所述第一字符串包括表示所述設(shè)備號(hào)編碼長(zhǎng)度的第一子字符串及表示所述設(shè)備號(hào)數(shù)值的第二子字符串。具體來(lái)說(shuō),所述第一生成子單元2031,用于依次連接第一分隔符、所述第一子字符串、第二分隔符及所述第二字符串,生成所述第一字符串。
[0056]所述第二生成子單元2032,用于生成第二字符串,所述第二字符串包括表示所述偏移量編碼長(zhǎng)度的第三子字符串及表示所述偏移量數(shù)值的第四子字符串。具體來(lái)說(shuō),所述第二生成子單元2032,用于依次連接第一分隔符、所述第三子字符串、第二分隔符及所述第四子字符串,生成所述第二字符串。
[0057]所述第三生成子單元2033,用于生成第三字符串,所述第三字符串包括表示所述數(shù)據(jù)長(zhǎng)度信息編碼長(zhǎng)度的第五子字符串及表示所述數(shù)據(jù)長(zhǎng)度信息數(shù)值的第六子字符串。具體來(lái)說(shuō),所述第三生成子單元2033,用于依次連接第一分隔符、所述第五子字符串、第二分隔符及所述第六子字符串,生成所述第三字符串。
[0058]所述鍵值字符串生成子單元2034,用于生成包含所述類型標(biāo)示符、所述第一生成子單元2031生成的所述第一字符串、所述第二生成子單元2032生成的所述第二字符串及所述第三生成子單元2033生成的所述第三字符串的鍵值字符串。具體來(lái)說(shuō),所述鍵值字符串生成子單元2034,用于依次連接所述類型標(biāo)示符、所述第一字符串、所述第二字符串及所述第三字符串,生成所述鍵值字符串。
[0059]所述轉(zhuǎn)換單元204,還可以用于將所述鍵值字符串中的數(shù)值轉(zhuǎn)換為十六進(jìn)制形式,并根據(jù)ASCII碼表將所述鍵值字符串中的字符映射為十六進(jìn)制數(shù)值。
[0060]從上述實(shí)施例可以看出,采用本實(shí)施例,可以在應(yīng)用發(fā)送的讀寫請(qǐng)求為基于SCSI硬盤的塊讀寫請(qǐng)求時(shí),根據(jù)塊讀寫請(qǐng)求中包含的邏輯塊地址生成鍵值。當(dāng)網(wǎng)絡(luò)存儲(chǔ)所使用的存儲(chǔ)設(shè)備由SCSI硬盤轉(zhuǎn)換為IP硬盤時(shí),可以在不對(duì)應(yīng)用進(jìn)行修改的前提下,根據(jù)基于SCSI硬盤的塊讀寫請(qǐng)求生成鍵值??梢栽诓粚?duì)現(xiàn)有應(yīng)用的正常使用造成影響的前提下,降低對(duì)應(yīng)用穩(wěn)定性造成的影響。
[0061]參見(jiàn)圖3,為本發(fā)明鍵值生成裝置另一個(gè)實(shí)施例的示意圖。
[0062]如圖3所示,所述組播傳輸裝置包括處理器301,存儲(chǔ)器302,通信接口 303,所述處理器301、所述存儲(chǔ)器302與所述通信接口 303之間通過(guò)總線304連接。
[0063]其中,所述總線304可以是外設(shè)部件互連標(biāo)準(zhǔn)(PERIPHERAL COMPONENTINTERCONNECT,簡(jiǎn)稱 PCI)總線或擴(kuò)展工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)(EXTENDED INDUSTRY STANDARDARCHITECTURE,簡(jiǎn)稱EISA)總線等。所述總線可以分為地址總線、數(shù)據(jù)總線、控制總線等。為便于表示,圖3中僅用一條粗線表示,但并不表示僅有一根總線或一種類型的總線。
[0064]所述存儲(chǔ)器302用于存放程序。具體地,程序可以包括程序代碼,所述程序代碼包括計(jì)算機(jī)操作指令。存儲(chǔ)器302可能包含隨機(jī)存取存儲(chǔ)器(RANDOM ACCESS MEMORY,簡(jiǎn)稱RAM)存儲(chǔ)器,也可能還包括非易失性存儲(chǔ)器(NON-VOLATILE MEMORY),例如至少一個(gè)磁盤存儲(chǔ)器。
[0065]所述處理器301執(zhí)行所述存儲(chǔ)器302存放的程序,用于通過(guò)所述通信接口 303接收讀寫請(qǐng)求;提取所述讀寫請(qǐng)求中包含的設(shè)備號(hào)、偏移量及數(shù)據(jù)長(zhǎng)度信息;生成包含類型標(biāo)示符、所述設(shè)備號(hào)、所述偏移量及所述數(shù)據(jù)長(zhǎng)度信息鍵值字符串,所述類型標(biāo)示符用于表示所述讀寫請(qǐng)求為塊讀寫請(qǐng)求;將所述鍵值字符串轉(zhuǎn)換為十六進(jìn)制數(shù)據(jù)形式得到鍵值。
[0066]所述處理器301,還用于生成第一字符串,所述第一字符串包括表示所述設(shè)備號(hào)編碼長(zhǎng)度的第一子字符串及表示所述設(shè)備號(hào)數(shù)值的第二子字符串;生成第二字符串,所述第二字符串包括表示所述偏移量編碼長(zhǎng)度的第三子字符串及表示所述偏移量數(shù)值的第四子字符串;生成第三字符串,所述第三字符串包括表示所述數(shù)據(jù)長(zhǎng)度信息編碼長(zhǎng)度的第五子字符串及表示所述數(shù)據(jù)長(zhǎng)度信息數(shù)值的第六子字符串;生成包含所述類型標(biāo)示符、所述第一字符串、所述第二字符串及所述第三字符串的鍵值字符串。
[0067]所述處理器301,還用于依次連接第一分隔符、所述第一子字符串、第二分隔符及所述第二子字符串,生成所述第一字符串。
[0068]所述處理器301,還用于依次連接第一分隔符、所述第三子字符串、第二分隔符及所述第四子字符串,生成所述第二字符串。
[0069]所述處理器301,還用于依次連接第一分隔符、所述第五子字符串、第二分隔符及所述第六子字符串,生成所述第三字符串。
[0070]所述處理器301,還用于依次連接所述類型標(biāo)示符、所述第一字符串、所述第二字符串及所述第三字符串,生成所述鍵值字符串。[0071]所述處理器301,還用于將所述鍵值字符串所包含的數(shù)值轉(zhuǎn)換為十六進(jìn)制形式,并根據(jù)ASCII碼表將所述鍵值字符串所包含的字符映射為十六進(jìn)制數(shù)值,得到十六進(jìn)制形式的鍵值。
[0072]本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明實(shí)施例中的技術(shù)可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn)?;谶@樣的理解,本發(fā)明實(shí)施例中的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在存儲(chǔ)介質(zhì)中,如R0M/RAM、磁碟、光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。
[0073]本說(shuō)明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處。尤其,對(duì)于裝置實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。
[0074]以上所述的本發(fā)明實(shí)施方式,并不構(gòu)成對(duì)本發(fā)明保護(hù)范圍的限定。任何在本發(fā)明的精神和原則之內(nèi)所作的修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種在存儲(chǔ)網(wǎng)絡(luò)中的鍵值生成方法,其特征在于,所述方法包括: 接收讀寫請(qǐng)求; 提取所述讀寫請(qǐng)求中包含的設(shè)備號(hào)、偏移量及數(shù)據(jù)長(zhǎng)度信息; 生成包含類型標(biāo)示符、所述設(shè)備號(hào)、所述偏移量及所述數(shù)據(jù)長(zhǎng)度信息的鍵值字符串,所述類型標(biāo)示符用于表示所述讀寫請(qǐng)求為塊讀寫請(qǐng)求; 將所述鍵值字符串轉(zhuǎn)換為十六進(jìn)制數(shù)據(jù)形式,得到鍵值。
2.如權(quán)利要求1所述的方法,其特征在于,所述生成包含類型標(biāo)示符、所述設(shè)備號(hào)、所述偏移量及所述數(shù)據(jù)長(zhǎng)度信息的鍵值字符串,包括: 生成第一字符串,所述第一字符串包括表示所述設(shè)備號(hào)編碼長(zhǎng)度的第一子字符串及表示所述設(shè)備號(hào)數(shù)值的第二子字符串; 生成第二字符串,所述第二字符串包括表示所述偏移量編碼長(zhǎng)度的第三子字符串及表示所述偏移量數(shù)值的第四子字符串; 生成第三字符串,所述第三字符串包括表示所述數(shù)據(jù)長(zhǎng)度信息編碼長(zhǎng)度的第五子字符串及表示所述數(shù)據(jù)長(zhǎng)度信息數(shù)值的第六子字符串; 生成包含所述類型標(biāo)示符、所述第一字符串、所述第二字符串及所述第三字符串的鍵值字符串。
3.如權(quán)利要求2所述的方法,其特征在于,所述生成第一字符串,包括: 依次連接第一分隔符、所述第一子字符串、第二分隔符及所述第二子字符串,生成所述第一字符串。
4.如權(quán)利要求2所述的方法,其特征在于,所述生成第二字符串,包括: 依次連接第一分隔符、所述第三子字符串、第二分隔符及所述第四子字符串,生成所述第二字符串。
5.如權(quán)利要求2所述的方法,其特征在于,所述生成第三字符串,包括: 依次連接第一分隔符、所述第五子字符串、第二分隔符及所述第六子字符串,生成所述第三字符串。
6.如權(quán)利要求2至5任一權(quán)利要求所述的方法,其特征在于,所述生成包含所述類型標(biāo)示符、所述第一字符串、所述第二字符串及所述第三字符串的鍵值字符串,包括: 依次連接所述類型標(biāo)示符、所述第一字符串、所述第二字符串及所述第三字符串,生成所述鍵值字符串。
7.如權(quán)利要求2至6任一權(quán)利要求所述的方法,其特征在于,所述將所述鍵值字符串轉(zhuǎn)換為十六進(jìn)制數(shù)據(jù)形式得到鍵值,包括: 將所述鍵值字符串所包含的數(shù)值轉(zhuǎn)換為十六進(jìn)制形式,并根據(jù)ASCII碼表將所述鍵值字符串所包含的字符映射為十六進(jìn)制數(shù)值,得到十六進(jìn)制形式的鍵值。
8.一種在存儲(chǔ)網(wǎng)絡(luò)中的鍵值生成裝置,其特征在于,所述裝置包括: 接收單元,用于接收讀寫請(qǐng)求; 提取單元,用于提取所述接收單元接收到的所述讀寫請(qǐng)求中包含的設(shè)備號(hào)、偏移量及數(shù)據(jù)長(zhǎng)度信息; 生成單元,用于生成包含類型標(biāo)示符、所述提取單元提取到的所述設(shè)備號(hào)、所述偏移量及所述數(shù)據(jù)長(zhǎng)度信息的鍵值字符串,所述類型標(biāo)示符用于表示所述讀寫請(qǐng)求為塊讀寫請(qǐng)求; 轉(zhuǎn)換單元,用于將所述生成單元生成的所述鍵值字符串轉(zhuǎn)換為十六進(jìn)制數(shù)據(jù)形式,得到鍵值。
9.如權(quán)利要求8所述的裝置,其特征在于,所述生成單元包括: 第一生成子單元,用于生成第一字符串,所述第一字符串包括表示所述設(shè)備號(hào)編碼長(zhǎng)度的第一子字符串及表示所述設(shè)備號(hào)數(shù)值的第二子字符串; 第二生成子單元,用于生成第二字符串,所述第二字符串包括表示所述偏移量編碼長(zhǎng)度的第三子字符串及表示所述偏移量數(shù)值的第四子字符串; 第三生成子單元,用于生成第三字符串,所述第三字符串包括表示所述數(shù)據(jù)長(zhǎng)度信息編碼長(zhǎng)度的第五子 字符串及表示所述數(shù)據(jù)長(zhǎng)度信息數(shù)值的第六子字符串; 鍵值字符串生成子單元,用于生成包含所述類型標(biāo)示符、所述第一生成子單元生成的所述第一字符串、所述第二生成子單元生成的所述第二字符串及所述第三生成子單元生成的所述第三字符串的鍵值字符串。
10.如權(quán)利要求9所述的裝置,其特征在于, 所述第一生成子單元,還用于依次連接第一分隔符、所述第一子字符串、第二分隔符及所述第二字符串,生成所述第一字符串。
11.如權(quán)利要求9所述的裝置,其特征在于, 所述第二生成子單元,還用于依次連接第一分隔符、所述第三子字符串、第二分隔符及所述第四子字符串,生成所述第二字符串。
12.如權(quán)利要求9所述的裝置,其特征在于, 所述第三生成子單元,還用于依次連接第一分隔符、所述第五子字符串、第二分隔符及所述第六子字符串,生成所述第三字符串。
13.如權(quán)利要求9至12任一權(quán)利要求所述的裝置,其特征在于, 所述鍵值字符串生成子單元,還用于依次連接所述類型標(biāo)示符、所述第一字符串、所述第二字符串及所述第三字符串,生成所述鍵值字符串。
14.如權(quán)利要求9至13任一權(quán)利要求所述的裝置,其特征在于, 所述轉(zhuǎn)換單元,還用于將所述鍵值字符串中的數(shù)值轉(zhuǎn)換為十六進(jìn)制形式,并根據(jù)ASCII碼表將所述鍵值字符串中的字符映射為十六進(jìn)制數(shù)值。
【文檔編號(hào)】G06F3/06GK104007938SQ201410234771
【公開日】2014年8月27日 申請(qǐng)日期:2014年5月29日 優(yōu)先權(quán)日:2014年5月29日
【發(fā)明者】羅慶超 申請(qǐng)人:華為技術(shù)有限公司