[發明專利]一種基于分布式鎖的存儲的IO操作方法及裝置有效
| 申請號: | 201710623874.6 | 申請日: | 2017-07-27 |
| 公開(公告)號: | CN107239238B | 公開(公告)日: | 2020-09-04 |
| 發明(設計)人: | 馬懷旭 | 申請(專利權)人: | 鄭州云海信息技術有限公司 |
| 主分類號: | G06F3/06 | 分類號: | G06F3/06 |
| 代理公司: | 北京集佳知識產權代理有限公司 11227 | 代理人: | 羅滿 |
| 地址: | 450018 河南省鄭州市*** | 國省代碼: | 河南;41 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 分布式 存儲 io 操作方法 裝置 | ||
本發明公開了一種基于分布式鎖的存儲的IO操作方法,應用于第一主機,第一主機與多個其他主機均連接于同一共享存儲,按照預設的讀取周期讀取每個其他主機按照預設的寫入周期寫入至共享存儲的時間戳,在對共享存儲中的目標數據下發第一IO操作指令時,檢測目標數據是否被第二主機占用,如果是,則讀取第二主機的時間戳,根據此次讀取的第二主機的時間戳和上一次讀取的第二主機的時間戳,確定第二主機是否離線,如果是,則解除第二主機對目標數據的占用并進行IO操作。應用本發明所提供的技術方案,避免了第二主機并未離線,但由于第二主機的IO超時被意外隔離的情況。本發明還公開了一種基于分布式鎖的存儲的IO操作裝置,具有相應技術效果。
技術領域
本發明涉及計算機應用技術領域,特別是涉及一種基于分布式鎖的存儲的IO操作方法及裝置。
背景技術
隨著計算機技術以及網絡技術的發展,在存儲的實際生產環境中,常常出現虛擬化的大型集群。在虛擬化系統中,可能有不同系統或者同一系統的多個主機連接至同一個或者一組資源,這時就需要分布式鎖來避免獲取資源的各個主機間的相互干擾。
現有技術中,通常采用共享存儲的方案來實現分布式鎖。對于連接至同一共享存儲的每個主機,當其中一個主機對共享存儲進行占用時,例如其中一個主機對共享存儲進行寫操作時,將其稱為一號主機,其他主機要等待一號主機的寫操作進程結束才能對共享存儲進行IO操作。通常,現有技術的分布式鎖方案中會采用一個超時機制,即當一號主機斷開與共享存儲的連接超過一定時間時,分布式鎖會解除一號主機對共享存儲的占用,使得其他主機可以占用該共享存儲。然而,如果共享存儲的IO壓力大,即使一號主機并未斷開與共享存儲的連接,分布式鎖也會誤將一號主機對共享存儲的占用解除,當共享存儲重新接收到一號主機的IO操作指令時,由于其他主機此時占用了該共享存儲,使得一號主機被隔離,無法完成此前未完成的IO操作。
因此,如何找到一個穩定的分布式鎖方案,是目前本領域技術人員急需解決的技術問題。
發明內容
本發明的目的是提供一種基于分布式鎖的存儲的IO操作方法及裝置,避免了第二主機并未離線,但由于第二主機的IO超時造成對第二主機的意外的隔離,從而無法完成對共享存儲的IO操作的情況。
為解決上述技術問題,本發明提供如下技術方案:
一種基于分布式鎖的存儲的IO操作方法,應用于第一主機,所述第一主機與多個其他主機均連接于同一共享存儲,該方法包括:
按照預設的讀取周期讀取每個其他主機按照預設的寫入周期寫入至所述共享存儲的時間戳;
在對所述共享存儲中的目標數據下發第一IO操作指令時,檢測所述目標數據是否被第二主機占用,所述第二主機為多個其他主機中的任意一個;
如果是,則讀取所述第二主機的時間戳,根據此次讀取的所述第二主機的時間戳和上一次讀取的所述第二主機的時間戳,確定所述第二主機是否離線;
如果是,則解除所述第二主機對所述目標數據的占用并進行IO操作。
優選的,所述根據此次讀取的所述第二主機的時間戳和上一次讀取的所述第二主機的時間戳,確定所述第二主機是否離線,包括:
獲得所述第二主機的IO等待時間;
確定上一次讀取的所述第二主機的時間戳加上所述IO等待時間是否大于此次讀取的所述第二主機的時間戳;
如果否,則確定所述第二主機離線。
優選的,所述獲得所述第二主機的IO等待時間,包括:
根據所述第二主機的第二IO指令隊列的等待時間,確定所述第二主機的IO等待時間;
其中,所述第二IO指令隊列具有非超時屬性,包含所述第二主機對所述目標數據下發的第二IO操作指令。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于鄭州云海信息技術有限公司,未經鄭州云海信息技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710623874.6/2.html,轉載請聲明來源鉆瓜專利網。





