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