本技術(shù)實(shí)施例涉及磁盤訪問領(lǐng)域,具體而言,涉及一種存儲(chǔ)磁盤的訪問方法及裝置。
背景技術(shù):
1、數(shù)據(jù)存儲(chǔ)技術(shù)中,為減少硬盤成本,往往會(huì)采用多主機(jī)共享磁盤進(jìn)行存儲(chǔ),在這種方法中,在同一時(shí)刻,只能有一臺(tái)主機(jī)對(duì)同一塊磁盤的同一塊區(qū)域進(jìn)行訪問,否則會(huì)造成數(shù)據(jù)不一致,影響業(yè)務(wù)的正常進(jìn)行。在當(dāng)前的存儲(chǔ)系統(tǒng)中,會(huì)將授權(quán)的lba鎖存放在對(duì)應(yīng)的列表中,當(dāng)對(duì)同一塊硬盤區(qū)域的lba(logical?block?address,邏輯區(qū)塊地址)鎖的新指令到達(dá)的時(shí)候,會(huì)判斷是否和已授權(quán)的lba鎖沖突,如無沖突,則該新指令獲得授權(quán)。但判斷沖突的效率很低,導(dǎo)致數(shù)據(jù)訪問的性能低下。
2、因此,相關(guān)技術(shù)中,存在磁盤數(shù)據(jù)訪問性能低下的技術(shù)問題,針對(duì)這一問題,目前尚未提出有效的解決方案。
3、因此,有必要對(duì)相關(guān)技術(shù)予以改良以克服相關(guān)技術(shù)中的所述缺陷。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)實(shí)施例提供了一種存儲(chǔ)磁盤的訪問方法及裝置,以至少解決相關(guān)技術(shù)中存在磁盤數(shù)據(jù)訪問性能低下的技術(shù)問題。
2、根據(jù)本技術(shù)的一個(gè)實(shí)施例,提供了一種存儲(chǔ)磁盤的訪問方法,包括:應(yīng)用于存儲(chǔ)磁盤,所述存儲(chǔ)磁盤與存儲(chǔ)主機(jī)相連接,其中,所述存儲(chǔ)磁盤的磁盤區(qū)域至少包括被邏輯區(qū)塊地址鎖定的磁盤區(qū)域和未被所述邏輯區(qū)塊地址鎖定的磁盤區(qū)域;包括:對(duì)來自所述存儲(chǔ)主機(jī)的訪問指令進(jìn)行解析,得到所述訪問指令所指示的第一邏輯區(qū)塊地址鎖,其中,所述第一邏輯區(qū)塊地址鎖用于表示被第一邏輯區(qū)塊地址鎖定的第一磁盤區(qū)域,所述第一磁盤區(qū)域至少包括第一起始邏輯區(qū)塊地址和第一終止邏輯區(qū)塊地址;從授權(quán)地址隊(duì)列中獲取第二邏輯區(qū)塊地址鎖,其中,所述授權(quán)地址隊(duì)列用于存儲(chǔ)已被授權(quán)的訪問地址,且所述已被授權(quán)的訪問地址對(duì)應(yīng)的磁盤區(qū)域允許被訪問,所述第二邏輯區(qū)塊地址鎖用于表示被第二邏輯區(qū)塊地址鎖定的第二磁盤區(qū)域,所述第二磁盤區(qū)域至少包括第二起始邏輯區(qū)塊地址和第二終止邏輯區(qū)塊地址;根據(jù)所述第一磁盤區(qū)域和所述第二磁盤區(qū)域之間的第一區(qū)域重合范圍將所述第一邏輯區(qū)塊地址鎖加入所述授權(quán)地址隊(duì)列,并對(duì)遍歷所述授權(quán)地址隊(duì)列后得到的目標(biāo)訪問地址的存儲(chǔ)數(shù)據(jù)進(jìn)行訪問。
3、在一個(gè)示例性實(shí)施例中,?從授權(quán)地址隊(duì)列中獲取第二邏輯區(qū)塊地址鎖,包括:遍歷所述授權(quán)地址隊(duì)列,并確定當(dāng)前遍歷得到的邏輯區(qū)塊地址鎖;將所述當(dāng)前遍歷得到的邏輯區(qū)塊地址鎖確定為所述第二邏輯區(qū)塊地址鎖。
4、在一個(gè)示例性實(shí)施例中,?所述根據(jù)所述第一磁盤區(qū)域和所述第二磁盤區(qū)域之間的第一區(qū)域重合范圍將所述第一邏輯區(qū)塊地址鎖加入所述授權(quán)地址隊(duì)列,包括:在確定所述當(dāng)前遍歷得到的邏輯區(qū)塊地址鎖為所述授權(quán)地址隊(duì)列的首個(gè)邏輯區(qū)塊地址鎖的情況下,將所述第二起始邏輯區(qū)塊地址確定為所述授權(quán)地址隊(duì)列的起始邏輯區(qū)塊地址;如果確定所述第一終止邏輯區(qū)塊地址小于所述第二起始邏輯區(qū)塊地址,則所述第一區(qū)域重合范圍為空,將所述第一邏輯區(qū)塊地址鎖加入所述授權(quán)地址隊(duì)列的隊(duì)首,并將所述第一起始邏輯區(qū)塊地址更新為所述授權(quán)地址隊(duì)列的起始邏輯區(qū)塊地址。
5、在一個(gè)示例性實(shí)施例中,所述根據(jù)所述第一磁盤區(qū)域和所述第二磁盤區(qū)域之間的第一區(qū)域重合范圍將所述第一邏輯區(qū)塊地址鎖加入所述授權(quán)地址隊(duì)列,包括:在確定所述當(dāng)前遍歷得到的邏輯區(qū)塊地址鎖為所述授權(quán)地址隊(duì)列的最后一個(gè)邏輯區(qū)塊地址鎖的情況下,將所述第二終止邏輯區(qū)塊地址確定為所述授權(quán)地址隊(duì)列的終止邏輯區(qū)塊地址;如果確定所述第一起始邏輯區(qū)塊地址大于所述第二終止邏輯區(qū)塊地址,則所述區(qū)域重合范圍為空,將所述第一邏輯區(qū)塊地址鎖加入所述授權(quán)地址隊(duì)列的隊(duì)尾,并將所述第一終止邏輯區(qū)塊地址更新為所述授權(quán)地址隊(duì)列的終止邏輯區(qū)塊地址。
6、在一個(gè)示例性實(shí)施例中,所述根據(jù)所述第一磁盤區(qū)域和所述第二磁盤區(qū)域之間的第一區(qū)域重合范圍將所述第一邏輯區(qū)塊地址鎖加入所述授權(quán)地址隊(duì)列,包括:確定出所述第二邏輯區(qū)塊地址鎖對(duì)應(yīng)的前一個(gè)邏輯區(qū)塊地址鎖和后一個(gè)邏輯區(qū)塊地址鎖;在確定所述第一起始邏輯區(qū)塊地址大于所述前一個(gè)邏輯區(qū)塊地址鎖的終止邏輯區(qū)塊地址,且所述第一終止邏輯區(qū)塊地址小于所述后一個(gè)邏輯區(qū)塊地址鎖的起始邏輯區(qū)塊地址的情況下,確定所述第一區(qū)域重合范圍為空;將所述第一邏輯區(qū)塊地址鎖加入至所述前一個(gè)邏輯區(qū)塊地址鎖和后一個(gè)邏輯區(qū)塊地址鎖之間。
7、在一個(gè)示例性實(shí)施例中,所述根據(jù)所述第一磁盤區(qū)域和所述第二磁盤區(qū)域之間的第一區(qū)域重合范圍將所述第一邏輯區(qū)塊地址鎖加入所述授權(quán)地址隊(duì)列,包括:確定出所述第二邏輯區(qū)塊地址鎖對(duì)應(yīng)的前一個(gè)邏輯區(qū)塊地址鎖和后一個(gè)邏輯區(qū)塊地址鎖;在確定所述第一起始邏輯區(qū)塊地址小于或等于所述前一個(gè)邏輯區(qū)塊地址鎖的終止邏輯區(qū)塊地址,或者所述第一終止邏輯區(qū)塊地址大于或等于所述后一個(gè)邏輯區(qū)塊地址鎖的起始邏輯區(qū)塊地址中任一項(xiàng)成立的情況下,確定所述第一區(qū)域重合范圍不為空;將所述第一邏輯區(qū)塊地址鎖加入至等待地址隊(duì)列。
8、在一個(gè)示例性實(shí)施例中,?在從授權(quán)地址隊(duì)列中獲取第二邏輯區(qū)塊地址鎖的之前或之后,所述方法還包括:在遍歷所述授權(quán)地址隊(duì)列后沒有獲取到任何邏輯區(qū)塊地址鎖的情況下,確定所述授權(quán)地址隊(duì)列中還未存儲(chǔ)有邏輯區(qū)塊地址鎖;將所述第一邏輯區(qū)塊地址鎖加入至所述授權(quán)地址隊(duì)列,并將所述第一起始邏輯區(qū)塊地址更新為所述授權(quán)地址隊(duì)列的起始邏輯區(qū)塊地址,將所述第一終止邏輯區(qū)塊地址更新為所述授權(quán)地址隊(duì)列的終止邏輯區(qū)塊地址。
9、在一個(gè)示例性實(shí)施例中,?在所述根據(jù)所述第一磁盤區(qū)域和所述第二磁盤區(qū)域之間的第一區(qū)域重合范圍將所述第一邏輯區(qū)塊地址鎖加入所述授權(quán)地址隊(duì)列之前,所述方法還包括:在確定所述第一區(qū)域重合范圍不為空的情況下,從等待地址隊(duì)列獲取第三邏輯區(qū)塊地址鎖,其中,所述等待地址隊(duì)列用于存儲(chǔ)未被授權(quán)的訪問地址,且所述未被授權(quán)的訪問地址對(duì)應(yīng)的磁盤區(qū)域不允許被訪問,所述第三邏輯區(qū)塊地址鎖用于表示被第三邏輯區(qū)塊地址鎖定的第三磁盤區(qū)域,所述第三磁盤區(qū)域至少包括第三起始邏輯區(qū)塊地址和第三終止邏輯區(qū)塊地址;根據(jù)所述第一磁盤區(qū)域和所述第三磁盤區(qū)域之間的第二區(qū)域重合范圍將所述第一邏輯區(qū)塊地址鎖加入所述等待地址隊(duì)列;響應(yīng)于所述存儲(chǔ)主機(jī)的操作指令,依次將所述等待地址隊(duì)列中的邏輯區(qū)塊地址鎖加入至所述授權(quán)地址隊(duì)列,并對(duì)遍歷所述授權(quán)地址隊(duì)列后得到的目標(biāo)訪問地址的存儲(chǔ)數(shù)據(jù)進(jìn)行訪問。
10、在一個(gè)示例性實(shí)施例中,?根據(jù)所述第一磁盤區(qū)域和所述第三磁盤區(qū)域之間的第二區(qū)域重合范圍將所述第一邏輯區(qū)塊地址鎖加入所述等待地址隊(duì)列,包括:在確定所述第二區(qū)域重合范圍不為空的情況下,將所述第一邏輯區(qū)塊地址鎖加入所述等待地址隊(duì)列的隊(duì)尾,并將所述第一終止邏輯區(qū)塊地址更新為所述等待地址隊(duì)列的終止邏輯區(qū)塊地址。
11、在一個(gè)示例性實(shí)施例中,?在將所述第一邏輯區(qū)塊地址鎖加入所述等待地址隊(duì)列的隊(duì)尾之后,所述方法還包括:按照所述邏輯區(qū)塊地址鎖的存儲(chǔ)時(shí)間對(duì)所述等待地址隊(duì)列中的所有邏輯區(qū)塊地址進(jìn)行排序,得到排序后的等待地址隊(duì)列,其中,在所述排序后的等待地址隊(duì)列中,存儲(chǔ)時(shí)間越早的邏輯區(qū)塊地址鎖的排序序號(hào)越小。
12、在一個(gè)示例性實(shí)施例中,?依次將所述等待地址隊(duì)列中的邏輯區(qū)塊地址鎖加入至所述授權(quán)地址隊(duì)列,包括:將遍歷所述等待地址隊(duì)列得到的當(dāng)前邏輯區(qū)塊地址鎖確定為第四邏輯區(qū)塊地址鎖,所述第四邏輯區(qū)塊地址鎖用于表示被所述第四邏輯區(qū)塊地址鎖定的第四磁盤區(qū)域,所述第四磁盤區(qū)域至少包括第四起始邏輯區(qū)塊地址和第四終止邏輯區(qū)塊地址;根據(jù)所述第二磁盤區(qū)域和所述第四磁盤區(qū)域之間的第三區(qū)域重合范圍將所述第四邏輯區(qū)塊地址鎖加入所述授權(quán)地址隊(duì)列。
13、根據(jù)本技術(shù)的另一個(gè)實(shí)施例,提供了一種存儲(chǔ)磁盤的訪問裝置,包括:?解析模塊,用于對(duì)來自所述存儲(chǔ)主機(jī)的訪問指令進(jìn)行解析,得到所述訪問指令所指示的第一邏輯區(qū)塊地址鎖,其中,所述第一邏輯區(qū)塊地址鎖用于表示被第一邏輯區(qū)塊地址鎖定的第一磁盤區(qū)域,所述第一磁盤區(qū)域至少包括第一起始邏輯區(qū)塊地址和第一終止邏輯區(qū)塊地址;?獲取模塊,用于從授權(quán)地址隊(duì)列中獲取第二邏輯區(qū)塊地址鎖,其中,所述授權(quán)地址隊(duì)列用于存儲(chǔ)已被授權(quán)的訪問地址,且所述已被授權(quán)的訪問地址對(duì)應(yīng)的磁盤區(qū)域允許被訪問,所述第二邏輯區(qū)塊地址鎖用于表示被第二邏輯區(qū)塊地址鎖定的第二磁盤區(qū)域,所述第二磁盤區(qū)域至少包括第二起始邏輯區(qū)塊地址和第二終止邏輯區(qū)塊地址;訪問模塊,用于根據(jù)所述第一磁盤區(qū)域和所述第二磁盤區(qū)域之間的第一區(qū)域重合范圍將所述第一邏輯區(qū)塊地址鎖加入所述授權(quán)地址隊(duì)列,并對(duì)遍歷所述授權(quán)地址隊(duì)列后得到的目標(biāo)訪問地址的存儲(chǔ)數(shù)據(jù)進(jìn)行訪問。
14、根據(jù)本技術(shù)的又一個(gè)實(shí)施例,還提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中存儲(chǔ)有計(jì)算機(jī)程序,其中,所述計(jì)算機(jī)程序被設(shè)置為運(yùn)行時(shí)執(zhí)行上述任一項(xiàng)方法實(shí)施例中的步驟。
15、根據(jù)本技術(shù)的又一個(gè)實(shí)施例,還提供了一種電子設(shè)備,包括存儲(chǔ)器和處理器,所述存儲(chǔ)器中存儲(chǔ)有計(jì)算機(jī)程序,所述處理器被設(shè)置為運(yùn)行所述計(jì)算機(jī)程序以執(zhí)行上述任一項(xiàng)方法實(shí)施例中的步驟。
16、根據(jù)本技術(shù)的又一個(gè)實(shí)施例,還提供了一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述任一項(xiàng)方法實(shí)施例中的步驟。
17、通過本技術(shù),通過對(duì)來自所述存儲(chǔ)主機(jī)的訪問指令進(jìn)行解析,得到所述訪問指令所指示的第一邏輯區(qū)塊地址鎖,其中,所述第一邏輯區(qū)塊地址鎖用于表示被第一邏輯區(qū)塊地址鎖定的第一磁盤區(qū)域,所述第一磁盤區(qū)域至少包括第一起始邏輯區(qū)塊地址和第一終止邏輯區(qū)塊地址;從授權(quán)地址隊(duì)列中獲取第二邏輯區(qū)塊地址鎖,其中,所述授權(quán)地址隊(duì)列用于存儲(chǔ)已被授權(quán)的訪問地址,且所述已被授權(quán)的訪問地址對(duì)應(yīng)的磁盤區(qū)域允許被訪問,所述第二邏輯區(qū)塊地址鎖用于表示被第二邏輯區(qū)塊地址鎖定的第二磁盤區(qū)域,所述第二磁盤區(qū)域至少包括第二起始邏輯區(qū)塊地址和第二終止邏輯區(qū)塊地址;根據(jù)所述第一磁盤區(qū)域和所述第二磁盤區(qū)域之間的第一區(qū)域重合范圍將所述第一邏輯區(qū)塊地址鎖加入所述授權(quán)地址隊(duì)列,并對(duì)遍歷所述授權(quán)地址隊(duì)列后得到的目標(biāo)訪問地址的存儲(chǔ)數(shù)據(jù)進(jìn)行訪問。本技術(shù)改進(jìn)了查詢列表保存的已授權(quán)的lba鎖的步驟,提高了查詢已授權(quán)的鎖的效率,繼而判斷指令的lba鎖是否和已授權(quán)的lba鎖產(chǎn)生沖突,從而判斷是否對(duì)指令的lba鎖進(jìn)行授權(quán),最后對(duì)授權(quán)的lba鎖對(duì)應(yīng)的數(shù)據(jù)進(jìn)行訪問。因此,可以解決存在磁盤數(shù)據(jù)訪問性能低下的技術(shù)問題,達(dá)到了提高存儲(chǔ)磁盤的數(shù)據(jù)訪問性能的效果。