一種數據讀取的方法及裝置製造方法
2023-04-28 04:27:26 2
一種數據讀取的方法及裝置製造方法
【專利摘要】本發明實施例提供了一種數據讀取的方法及裝置,涉及通信領域,可以提高數據的讀取效率。所述方法包括:接收客戶端發送的第一數據讀取指令;獲得所述本次讀取數據所在文件在所述虛擬存儲文件上的虛擬地址;選擇一個虛擬地址作為預讀數據在所述虛擬存儲文件上的預讀虛擬地址;根據虛擬存儲文件上的虛擬地址和物理存儲設備上的物理地址的對應關係,通過本次讀取數據在虛擬存儲文件上的虛擬地址訪問物理存儲設備獲得本次讀取數據,通過預讀虛擬地址訪問物理存儲設備,獲得預讀數據;向客戶端發送本次讀取數據並將預讀數據存儲在NAS設備的緩存內並記錄所述預讀數據在物理存儲設備上的物理地址。
【專利說明】一種數據讀取的方法及裝置
【技術領域】
[0001]本發明涉及通信領域,尤其涉及一種數據讀取的方法及裝置。
【背景技術】
[0002]NAS (Network Attached Storage,網絡附屬存儲)是伺服器或工作站通過網絡實現信息存儲和資源共享的一種存儲技術,在虛擬化場景常使用NAS設備作後端存儲設備。以VMware (Virtual Machine Ware,虛擬機軟體)虛擬化場景為例,NAS設備作為數據存儲為客戶端提供存儲資源。當虛擬環境的管理員為客戶端的某一個虛擬機添加一個磁碟驅動器後,在虛擬機中會生成一個新的磁碟分區C,在NAS設備上會生成一個擴展名為vmdk的虛擬存儲文件*.vmdkl。當用戶在所述新的磁碟分區按需增刪目錄和文件(此類文件或目錄可以統稱為虛擬文件),或者創建此磁碟分區中的目錄、文件樹結構時,在NAS設備上仍僅有一個虛擬存儲文件*.vmdk I與其對應,所述NAS設備並不知道各個虛擬文件在虛擬存儲文件
vmdk I上的虛擬地址。
[0003]以虛擬文件demo, txt為例,客戶端在磁碟分區C增加文件demo, txt時,虛擬文件demo, txt會被隨機分布在虛擬存儲文件上的不同虛擬地址處,相應的,demo, txt對應的實際數據也被隨機分配在物理存儲設備上的不同物理地址處。客戶端中存儲有demo, txt對應在虛擬存儲文件*.vmdk I中的偏移量及長度,這樣,所述客戶端在讀取demo, txt時,就會向所述NAS設備發送其對應的在虛擬存儲文件*.vmdkl中的偏移量及長度,由於所述NAS設備中存儲有虛擬存儲文件與物理存儲設備的對應轉換關係,故NAS設備就可以將所述偏移量和長度轉換為對應的在物理存儲設備上的物理地址,進而訪問物理存儲設備,讀取到客戶端本次要讀取的數據。
[0004]在上述數據讀取的過程中,客戶端每次只能向NAS設備發送一個偏移量及長度,NAS設備只能根據客戶端發送的所述偏移量及長度,查找到其對應的物理存儲設備上的一個的物理地址,由於NAS設備不知道demo, txt在物理存儲設備上的多個物理地址間的關聯關係,故所述NAS設備無法提前預讀用戶本次要讀的虛擬文件的後續部分,進而影響數據的讀取效率。
【發明內容】
[0005]本發明的實施例提供一種數據讀取的方法及裝置,可以提高數據的讀取效率。
[0006]為達到上述目的,本發明的實施例採用如下技術方案:
[0007]第一方面,公開了一種數據讀取的方法,包括:
[0008]網絡附屬存儲NAS設備接收客戶端發送的第一數據讀取指令,所述第一數據讀取指令包括:本次讀取數據在虛擬存儲文件上的虛擬地址,本次讀取數據所在文件的唯一標識;
[0009]所述NAS設備根據所述本次讀取數據所在文件在所述虛擬存儲文件上的虛擬地址和所述唯一標識之間的對應關係,獲得所述本次讀取數據所在文件在所述虛擬存儲文件上的虛擬地址;所述本次讀取數據所在文件包括多個數據塊,其中每個數據塊對應虛擬存儲文件上的一個虛擬地址;
[0010]所述NAS設備從所述本次讀取數據所在文件在虛擬存儲文件上的虛擬地址中,選擇除了本次讀取數據、已讀數據和已預讀數據在虛擬存儲文件上的虛擬地址外的任一虛擬地址,作為預讀數據在所述虛擬存儲文件上的預讀虛擬地址;
[0011]所述NAS設備根據自身存儲的所述虛擬存儲文件上的虛擬地址和物理存儲設備上的物理地址的對應關係,通過所述本次讀取數據在虛擬存儲文件上的虛擬地址,訪問所述本次讀取數據在所述物理存儲設備上的物理地址,獲得所述本次讀取數據;通過所述預讀虛擬地址,訪問所述預讀數據在所述物理存儲設備上的物理地址,獲得所述預讀數據;
[0012]所述NAS設備向所述客戶端發送所述本次讀取數據;
[0013]所述NAS設備將所述預讀數據存儲在所述NAS設備的緩存內並記錄所述NAS設備緩存內的預讀數據在物理存儲設備上的物理地址。
[0014]結合第一方面,在第一種可能的實現方式中,所述方法還包括:
[0015]在所述NAS設備接收客戶端發送的第一數據讀取指令之前,所述方法還包括:
[0016]所述NAS設備接收所述客戶端發送的文件寫入指令,所述文件寫入指令中攜帶有本次寫入文件的數據以及本次寫入文件的唯一標識;
[0017]所述NAS設備為所述本次寫入文件分配其在所述物理存儲設備上的物理地址;
[0018]所述NAS設備記錄所述本次寫入文件的唯一標識和所述本次寫入文件在所述虛擬存儲文件上的虛擬地址之間的對應關係。
[0019]結合第一方面的第一種可能的實現方式,在第二種可能的實現方式中,所述NAS設備為所述本次寫入文件分配在所述物理存儲設備上的物理地址是連續的。
[0020]結合第一方面或第一方面的第一種可能的實現方式,在第三種可能的實現方式中,在所述NAS設備將所述預讀數據存儲在所述NAS設備的緩存內之後,所述方法還包括:
[0021]所述NAS設備接收所述客戶端發送的第二數據讀取指令,所述第二數據讀取指令包括:第二次讀取數據在虛擬存儲文件上的虛擬地址,第二次讀取數據所在文件的唯一標識;
[0022]所述NAS設備根據自身存儲的所述虛擬存儲文件上的虛擬地址和物理存儲設備上的物理地址的對應關係,通過所述本次讀取數據在虛擬存儲文件上的虛擬地址,獲得所述第二次讀取數據在所述物理存儲設備上的物理地址;
[0023]所述NAS設備判斷所述第二次讀取數據在所述物理存儲設備上的物理地址與所述NAS設備緩存內的預讀數據在所述物理存儲設備上的物理地址是否相同;
[0024]若相同,則所述NAS設備將所述緩存內的預讀數據返回給所述客戶端。
[0025]第二方面,公開了一種數據讀取的方法,包括:客戶端向網絡附屬存儲NAS設備發送數據讀取指令,所述數據讀取指令包括:本次讀取數據在虛擬存儲文件上的虛擬地址,本次讀取數據所在文件的唯一標識。
[0026]結合第二方面,在第一種可能的實現方式中,所述客戶端向所述NAS設備發送文件寫入指令,所述文件寫入指令中攜帶有本次寫入文件的數據以及本次寫入文件的唯一標識;以使得所述NAS記錄所述本次寫入文件的唯一標識和所述本次寫入文件在所述虛擬存儲文件上的虛擬地址之間的對應關係。[0027]第三方面,公開了一種NAS設備,包括:
[0028]接收單元,用於接收客戶端發送的第一數據讀取指令,所述第一數據讀取指令包括:本次讀取數據在虛擬存儲文件上的虛擬地址,本次讀取數據所在文件的唯一標識;
[0029]獲得單元,用於根據所述本次讀取數據所在文件在所述虛擬存儲文件上的虛擬地址和所述唯一標識之間的對應關係,獲得所述本次讀取數據所在文件在所述虛擬存儲文件上的虛擬地址;所述本次讀取數據所在文件包括多個數據塊,其中每個數據塊對應虛擬存儲文件上的一個虛擬地址;
[0030]選擇單元,用於從所述獲得單元獲得的所述本次讀取數據所在文件在虛擬存儲文件上的虛擬地址中,選擇除了本次讀取數據、已讀數據和已預讀數據在虛擬存儲文件上的虛擬地址外的任一虛擬地址,作為預讀數據在所述虛擬存儲文件上的預讀虛擬地址;
[0031]訪問單元,用於根據自身存儲的所述虛擬存儲文件上的虛擬地址和物理存儲設備上的物理地址的對應關係,通過所述接收單元接收的所述本次讀取數據在虛擬存儲文件上的虛擬地址,訪問所述本次讀取數據在所述物理存儲設備上的物理地址,獲得所述本次讀取數據;通過所述選擇單元選擇的所述預讀虛擬地址,訪問所述預讀數據在所述物理存儲設備上的物理地址,獲得所述預讀數據;
[0032]發送單元,用於向所述客戶端發送所述訪問單元獲得的所述本次讀取數據;
[0033]存儲單元,用於將所述訪問單元獲得的所述預讀數據存儲在所述NAS設備的緩存內並記錄所述NAS設備緩存內的預讀數據在物理存儲設備上的物理地址。
[0034]結合第三方面,在第一種可能的實現方式中,還包括寫入單元;
[0035]所述接收單元,用於在接收客戶端發送的第一數據讀取指令之前,接收所述客戶端發送的文件寫入指令,所述文件寫入指令中攜帶有本次寫入文件的數據以及本次寫入文件的唯一標識;
[0036]所述寫入單元具體用於,為所述本次寫入文件分配其在所述物理存儲設備上的物理地址,並記錄所述本次寫入文件的唯一標識和所述本次寫入文件在所述虛擬存儲文件上的虛擬地址之間的對應關係。
[0037]結合第三方面的第一種可能的實現方式,在第二種可能的實現方式中,所述寫入單元具體用於為所述本次寫入文件在所述物理存儲設備上分配連續的物理地址。
[0038]結合第三方面或第三方面的第一種可能的實現方式,在第三種可能的實現方式中,還包括判斷單元,
[0039]所述接收單元還用於,在所述存儲單元將所述預讀數據存儲在所述NAS設備的緩存內之後,接收所述客戶端發送的第二數據讀取指令,所述第二數據讀取指令包括:第二次讀取數據對應在虛擬存儲文件上的虛擬地址,第二次讀取數據所在文件對應的唯一標識;
[0040]所述獲得單元還用於,根據自身存儲的所述虛擬存儲文件上的虛擬地址和物理存儲設備上的物理地址的對應關係,通過所述接收單元接收的所述第二次讀取數據在虛擬存儲文件上的虛擬地址,獲得所述第二次讀取數據在所述物理存儲設備上的物理地址;
[0041]所述判斷單元具體用於,判斷所述獲得單元獲得的所述第二次讀取數據在所述物理存儲設備上的物理地址與所述存儲單元記錄的所述NAS設備緩存內的預讀數據在所述物理存儲設備上的物理地址是否相同;
[0042]所述發送單元還用於,在所述判斷單元判斷相同時,將所述緩存內的預讀數據返回給所述客戶端。
[0043]第四方面,公開了一種客戶端,包括:
[0044]發送單元,用於向網絡附屬存儲NAS設備發送數據讀取指令,所述數據讀取指令包括:本次讀取數據在虛擬存儲文件上的虛擬地址,本次讀取數據所在文件的唯一標識。
[0045]結合第四方面,在第一種可能的實現方式中,所述發送單元還用於,向所述NAS設備發送文件寫入指令,所述文件寫入指令中攜帶有本次寫入文件的數據以及本次寫入文件的唯一標識;以使得所述NAS記錄所述本次寫入文件的唯一標識和所述本次寫入文件在所述虛擬存儲文件上的虛擬地址之間的對應關係。
[0046]本發明實施例提供的數據讀取的方法及裝置,NAS設備會記錄讀取數據所在文件在虛擬存儲文件上的虛擬地址與讀取數據所在文件的唯一標識之間的對應關係,在客戶端發送給NAS設備的數據讀取指令中增加本次讀取數據所在文件的唯一標識。這樣NAS設備接收到讀取數據指令後,會獲得預讀數據在所述虛擬存儲文件上的虛擬地址,根據本次讀取數據和預讀數據在虛擬存儲文件上的虛擬地址,訪問物理存儲設備,並將預讀數據存儲在NAS設備緩存中。與現有技術中NAS設備無法感知讀取數據所在文件在虛擬存儲文件上的N個虛擬地址,無法進行預讀相比,本發明提供的數據讀取的方法接收到客戶端下一次發送的讀取數據指令後,直接從緩存中讀取數據,不需要再次訪問物理存儲設備,提高了數據的讀取效率。
【專利附圖】
【附圖說明】
[0047]圖1為本發明實施例提供的虛擬化場景構架圖;
[0048]圖2為本發明實施例1提供的一種數據讀取的方法流程示意圖;
[0049]圖3為本發明實施例2提供的另一種數據讀取的方法流程示意圖;
[0050]圖4為本發明實施例2中demo, txt的分布示意圖;
[0051]圖5為本發明實施例3提供的一種NAS設備的結構框圖;
[0052]圖6為本發明實施例3提供的另一種NAS設備的結構框圖;
[0053]圖7為本發明實施例3提供的另一種NAS設備的結構框圖;
[0054]圖8為本發明實施例4提供的一種NAS設備的結構框圖。
【具體實施方式】
[0055]下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。
[0056]本發明實施例所提供的數據讀取方法,應用於虛擬化存儲場景中,如圖1所示,虛擬機用戶寫入(增刪)文件時,在NAS設備上會對應生成僅有的一個虛擬存儲文件,實際上虛擬機用戶寫入的文件存儲在了 NAS設備的物理存儲設備上,即虛擬存儲文件是用戶寫入文件的一個存儲介質。當虛擬機用戶需要讀取存儲在NAS設備物理存儲設備上的文件時,NAS設備會首先根據數據讀取指令中的本次讀取數據在虛擬存儲文件上的虛擬地址,指向本次讀取數據在虛擬存儲文件上的這個虛擬地址,然後NAS設備根據自身記錄的虛擬存儲文件上的虛擬地址和物理存儲設備上的物理地址的對應關係,指向本次讀取數據在物理存儲設備上的一個物理地址,然後訪問物理存儲設備上的這個物理地址,讀取數據。隨後再將所讀取的數據返回給虛擬機用戶,就完成了一次數據讀取。
[0057]實施例1:
[0058]本發明實施例提供了一種數據讀取的方法,執行主體是NAS設備如圖2所示,所述方法包括以下步驟:
[0059]201、網絡附屬存儲NAS設備接收客戶端發送的第一數據讀取指令。
[0060]其中,所述第一數據讀取指令包括:本次讀取數據對應在虛擬存儲文件上的虛擬地址,本次讀取數據所在文件對應的唯一標識,其中,所述在虛擬存儲文件上的虛擬地址包括在所述虛擬存儲文件上的偏移量和長度。
[0061]202、所述NAS設備根據所述本次讀取數據所在文件在所述虛擬存儲文件上的虛擬地址和所述唯一標識之間的對應關係,獲得所述本次讀取數據所在文件在所述虛擬存儲文件上的虛擬地址。
[0062]其中,所述本次讀取數據所在文件包括多個數據塊,其中每個數據塊對應虛擬存儲文件上的一個虛擬地址。因此,根據所述本次讀取數據所在文件在所述虛擬存儲文件上的虛擬地址和所述唯一標識之間的對應關係,就可以獲得所述本次讀取數據所在文件對應在所述虛擬存儲文件上的多個虛擬地址。
[0063]在所述客戶端讀取數據之前,所述NAS設備會先將所述數據所在文件寫入物理存儲設備中。所述NAS設備會隨機將所述數據所在文件分配在物理存儲設備上的N個物理地址處。所述NAS設備接收所述客戶端發送的文件寫入指令,並根據所述文件寫入指令攜帶的寫入數據及所述數據所在文件的唯一標識,記錄所述數據所在文件的唯一標識和所述寫入數據在所述虛擬存儲文件上的虛擬地址之間的對應關係。
[0064]203、所述NAS設備從所述本次讀取數據所在文件在虛擬存儲文件上的虛擬地址中,選擇除了本次讀取數據、已讀數據和已預讀數據在虛擬存儲文件上的虛擬地址外的任一虛擬地址,作為預讀數據在所述虛擬存儲文件上的預讀虛擬地址。
[0065]所述NAS設備接收數據讀取指令後可以根據所述本次讀取數據所在文件對應的唯一標識獲得本次讀取數據所在文件在所述虛擬存儲文件N個虛擬地址,進而就可以選擇出一個虛擬地址,作為所述預讀數據(即預判的客戶端下次讀取的數據)在所述虛擬存儲文件上的預讀虛擬地址。當然,所述預讀虛擬地址是在除了本次讀取數據、已讀數據、已預讀數據在虛擬存儲文件上的虛擬地址外的一個虛擬地址。
[0066]204、所述NAS設備根據自身存儲的所述虛擬存儲文件上的虛擬地址和物理存儲設備上的物理地址的對應關係,通過所述本次讀取數據在虛擬存儲文件上的虛擬地址,訪問所述本次讀取數據對應在所述物理存儲設備上的物理地址,獲得所述本次讀取數據;通過所述預讀虛擬地址,訪問所述預讀數據對應在所述物理存儲設備上的物理地址,獲得所述預讀數據。
[0067]這裡,所述NAS設備接收到的本次讀取數據對應在虛擬存儲文件上的虛擬地址,只是所述本次讀取數據所在文件在所述虛擬存儲文件的N個虛擬地址中的一個。所述NAS設備中存儲有所述虛擬存儲文件上的虛擬地址和物理存儲設備上的物理地址間的對應關係,這樣所述NAS設備就可以根據該對應關係通過所述本次讀取數據在虛擬存儲文件上的虛擬地址,訪問所述本次讀取數據對應在所述物理存儲設備上的物理地址,進而獲得所述本次讀取數據;同理,所述NAS設備還可以通過由步驟203所獲得的、預讀數據在所述虛擬存儲文件上的預讀虛擬地址,獲得所述預讀數據。
[0068]205、所述NAS設備向所述客戶端發送所述本次讀取數據。
[0069]206、所述NAS設備將所述預讀數據存儲在所述NAS設備的緩存內並記錄所述NAS設備緩存內的預讀數據對應在物理存儲設備上的物理地址。
[0070]所述NAS設備將所述預讀數據存儲在NAS設備的緩存內,以便於所述客戶端下次讀取數據時,在命中緩存的情況下可以從所述NAS設備的緩存中讀取所述預讀數據。
[0071]在所述NAS設備將所述預讀數據存儲在緩存內後,在所述客戶端還需要繼續讀取數據時,所述NAS設備接收所述客戶端發送的第二數據讀取指令,所述第二數據讀取指令包括:第二次讀取數據在虛擬存儲文件上的虛擬地址,第二次讀取數據所在文件的唯一標識。然後,所述NAS設備根據自身存儲的所述虛擬存儲文件上的虛擬地址和物理存儲設備上的物理地址的對應關係,通過所述本次讀取數據在虛擬存儲文件上的虛擬地址,獲得所述第二次讀取數據在所述物理存儲設備上的物理地址,以便判斷所述緩存內的預讀數據是否為所述第二次讀取數據。
[0072]若所述第二次讀取數據在所述物理存儲設備上的物理地址與所述緩存內的預讀數據在物理存儲設備上的物理地址相同,則表明所述第二次讀取數據是所述緩存內的預讀數據;則所述NAS設備將所述緩存內的預讀數據返回給所述客戶端;若所述第二次讀取數據在所述物理存儲設備上的物理地址與所述緩存內的預讀數據在物理存儲設備上的物理地址不相同,則進行步驟202-206,訪問第二次讀取數據在所述物理存儲設備上的物理地址,獲得第二次要讀取的數據。
[0073]當然,所述NAS設備接收所述客戶端發送的文件寫入指令,會為所述本次寫入文件分配在所述物理存儲設備上的物理地址,並記錄所述本次寫入文件的唯一標識和所述本次寫入文件在所述虛擬存儲文件上的虛擬地址之間的對應關係。這裡,所述NAS設備也可以在所述物理存儲設備上為所述本次寫入文件分配連續的物理地址。
[0074]本發明實施例提供了一種數據讀取的方法,執行主體是客戶端,所述方法包括以下步驟:客戶端向NAS設備發送數據讀取指令。
[0075]所述數據讀取指令包括:本次讀取數據在虛擬存儲文件上的虛擬地址,本次讀取數據所在文件的唯一標識。其中,所述在虛擬存儲文件上的虛擬地址包括在虛擬存儲文件上的偏移量和長度。
[0076]所述客戶端發送所述數據讀取指令以使得所述NAS設備可以根據所述本次讀取數據對應的I個在虛擬存儲文件上的虛擬地址,訪問所述本次讀取數據在所述物理存儲設備上的物理地址獲得所述本次讀取數據。根據所述本次讀取數據所在文件對應的唯一標識,獲得所述本次讀取數據所在文件在虛擬存儲文件上的虛擬地址,並從中選擇除本次讀取數據、預讀數據和已預讀數據在虛擬存儲文件上的虛擬地址外的一個虛擬地址,作為預讀數據在虛擬存儲文件上的預讀虛擬地址。進而訪問所述本次讀取數據在物理存儲設備上的物理地址和所述預讀數據在物理存儲設備上的物理地址,獲得本次讀取數據和所述預讀數據。
[0077]當然,所述客戶端在發送數據讀取指令之前還會向所述NAS設備發送文件寫入指令,所述文件寫入指令中攜帶有本次寫入文件的數據以及本次寫入文件的唯一標識;以使得所述NAS記錄所述本次寫入文件的唯一標識和所述本次寫入文件在所述虛擬存儲文件上的虛擬地址之間的對應關係。
[0078]本發明實施例提供的數據讀取的方法,NAS設備會記錄讀取數據所在文件在虛擬存儲文件上的虛擬地址與讀取數據所在文件的唯一標識之間的對應關係,在客戶端發送給NAS設備的數據讀取指令中增加本次讀取數據所在文件的唯一標識。這樣NAS設備接收到讀取數據指令後,會獲得預讀數據在所述虛擬存儲文件上的虛擬地址,根據本次讀取數據和預讀數據在虛擬存儲文件上的虛擬地址,訪問物理存儲設備,並將預讀數據存儲在NAS設備緩存中。與現有技術中NAS設備無法感知讀取數據所在文件在虛擬存儲文件上的N個虛擬地址,無法進行預讀相比,本發明提供的數據讀取的方法接收到客戶端下一次發送的讀取數據指令後,直接從緩存中讀取數據,不需要再次訪問物理存儲設備,提高了數據的讀取效率。
[0079]實施例2:
[0080]本發明實施例提供了一種數據讀取的方法,如圖3所示,所述方法包括以下步驟:
[0081]301、客戶端向NAS設備發送第一數據讀取指令。
[0082]這裡,所述第一數據讀取指令包括:本次讀取數據在虛擬存儲文件上的虛擬地址,本次讀取數據所在文件的唯一標識,其中,所述在虛擬存儲文件上的虛擬地址包括在虛擬存儲文件上的偏移量和長度。
[0083]示例的,如圖4所示,讀取文件demo, txt時,所述客戶端發送的數據讀取指令包括:本次讀取數據所在文件的唯一標識η、本次讀取數據在虛擬存儲文件上的虛擬地址,可以用偏移量+長度的形式來表示數據塊在虛擬存儲文件上的虛擬地址,則可以用0+10來表示本次讀取數據在虛擬存儲文件上的虛擬地址。
[0084]302、所述NAS設備接收到所述數據讀取指令後,根據所述本次讀取數據所在文件在所述虛擬存儲文件上的虛擬地址和所述唯一標識之間的對應關係,獲得所述本次讀取數據所在文件在所述虛擬存儲文件上的虛擬地址。
[0085]這裡,所述本次讀取數據所在文件包括多個數據塊,其中每個數據塊對應虛擬存儲文件上的一個虛擬地址。
[0086]在所述客戶端讀取數據之前,所述客戶端會先將所述數據寫入所述NAS設備的物理存儲設備中。所述NAS設備接收所述客戶端發送的文件寫入指令,並根據所述文件寫入指令攜帶的寫入數據及所述數據所在文件的唯一標識,記錄所述數據所在文件的唯一標識和所述寫入數據在所述虛擬存儲文件上的虛擬地址之間的對應關係。這樣,所述NAS設備接收所述數據讀取指令後,就會根據所述數據讀取指令中的本次讀取數據所在文件的唯一標識獲得本次讀取數據所在文件在虛擬存儲文件上的N個虛擬地址,進而就可以選擇一個虛擬地址作為預讀虛擬地址。示例的,如圖4所示,demo, txt在虛擬存儲文件上的虛擬地址是:0+10、20+15、35+10,所述NAS設備記錄有唯一標識η與這三個位置信息之間的對應關係。這樣,當所述NAS設備接收客戶端發送的讀取數據指令:η、0+10時,就會根據η找到0+10,20+15,40+10這三個在虛擬存儲文件上的虛擬地址。
[0087]303、所述NAS設備從所述本次讀取數據所在文件在虛擬存儲文件上的虛擬地址中,選擇除了本次讀取數據、已讀數據和已預讀數據在虛擬存儲文件上的虛擬地址外的任一虛擬地址,作為預讀數據在所述虛擬存儲文件上的預讀虛擬地址。
[0088]NAS設備不是任意選擇一個虛擬地址作為預讀虛擬地址,而是會選擇除了本次讀取數據、已讀數據、已預讀數據在虛擬存儲文件上的虛擬地址外的一個虛擬地址,作為所述預讀數據在所述虛擬存儲文件上的預讀虛擬地址。通常情況下,所述NAS設備會將所述本次讀取數據對應在虛擬存儲文件上的虛擬地址的下一虛擬地址預判為預讀虛擬地址。
[0089]示例的,如圖4所示,demo, txt在虛擬存儲文件上的虛擬地址是:0+10、20+15、35+10,當所述NAS設備接收客戶端發送的讀取數據指令:n、0+10時,根據η找到0+10、20+15,40+10這三個在虛擬存儲文件上的虛擬地址後,將0+10的下一虛擬地址20+15預判為預讀數據在所述虛擬存儲文件上的預讀虛擬地址。
[0090]304、所述NAS設備根據自身存儲的所述虛擬存儲文件上的虛擬地址和物理存儲設備上的物理地址的對應關係,通過所述本次讀取數據在虛擬存儲文件上的虛擬地址,訪問所述本次讀取數據對應在所述物理存儲設備上的物理地址,獲得所述本次讀取數據;通過所述預讀虛擬地址,訪問所述預讀數據對應在所述物理存儲設備上的物理地址,獲得所述預讀數據。
[0091]這裡,所述NAS設備接收到的本次讀取數據在虛擬存儲文件上的虛擬地址,只是所述本次讀取數據所在文件在所述虛擬存儲文件上的N個虛擬地址中的一個。所述NAS設備中存儲有所述虛擬存儲文件上的虛擬地址和物理存儲設備上的物理地址間的對應關係,這樣所述NAS設備就可以根據該對應關係通過所述本次讀取數據在虛擬存儲文件上的虛擬地址,訪問所述本次讀取數據在所述物理存儲設備上的物理地址,進而獲得所述本次讀取數據;同理,所述NAS設備還可以通過由步驟303所獲得的、預讀數據在所述虛擬存儲文件上的預讀虛擬地址,獲得所述預讀數據。
[0092]如圖4所示,根據所述NAS設備接收的讀取數據指令中本次讀取數據在虛擬存儲文件上的虛擬地址0+10,對應到物理存儲設備上的物理地址Blockl,訪問Blockl就可以獲得本次讀取數據。所述NAS設備還會根據步驟303所獲得的、預讀數據在所述虛擬存儲文件上的預讀虛擬地址20+15,訪問20+15在物理存儲設備上的物理地址Block2,訪問Block2就可以獲得預讀數據。
[0093]305、所述NAS設備向所述客戶端發送所述本次讀取數據。
[0094]示例的,如圖4所示,所述NAS設備在Blockl讀取本次讀取數據,並將本次讀取數據發送給所述客戶端。
[0095]306、所述NAS設備將所述預讀數據存儲在所述NAS設備的緩存內並記錄所述NAS設備緩存內的預讀數據在物理存儲設備上的物理地址。
[0096]如圖4所示,所述NAS設備首先將步驟304獲得的存儲在Block2的預讀數據存儲在所述NAS設備的緩存內,並記錄所述緩存內的預讀數據在物理存儲設備上的物理地址Block20
[0097]307、所述NAS設備接收所述客戶端發送的第二數據讀取指令。
[0098]其中,所述第二數據讀取指令包括:第二次讀取數據在虛擬存儲文件上的虛擬地址,第二次讀取數據所在文件的唯一標識。
[0099]308、所述NAS設備根據自身存儲的所述虛擬存儲文件上的虛擬地址和物理存儲設備上的物理地址的對應關係,通過所述第二次讀取數據在虛擬存儲文件上的虛擬地址,獲得所述第二次讀取數據在所述物理存儲設備上的物理地址。
[0100]所述NAS設備接收客戶端發送的第二數據讀取指令後,會根據第二次讀取數據在虛擬存儲文件上的虛擬地址獲得所述第二次讀取數據對應在所述物理存儲設備上的物理地址。如圖4所示,若用戶是連續讀取,則所述NAS設備接收的數據讀取指令中的第二次讀取數據在虛擬存儲文件上的虛擬地址是20+15,進而獲得第二次讀取數據在所述物理存儲設備上的物理地址是Block2。
[0101]309、所述NAS設備判斷所述第二次讀取數據對應在所述物理存儲設備上的物理地址與所述NAS設備緩存內的預讀數據在物理存儲設備上的物理地址是否相同。
[0102]如圖4所示,在用戶連續讀取的時候,根據第二次讀取數據在虛擬存儲文件上的虛擬地址是20+15,獲得第二次讀取數據在所述物理存儲設備上的物理地址是Block2。這時第二次讀取數據在所述物理存儲設備上的物理地址,和所述NAS設備緩存內的預讀數據在物理存儲設備上的物理地址Block2相同,則預讀成功,進行步驟310。
[0103]在用戶不是連續讀取的時候,第二數據讀取指令中所述第二次讀取數據在虛擬存儲文件上的虛擬地址就不是20+15,獲得第二次讀取數據在所述物理存儲設備上的物理地址也就不是Block2。這時第二次讀取數據在所述物理存儲設備上的物理地址和所述NAS設備緩存內的預讀數據在物理存儲設備上的物理地址Block2不相同,則預讀失敗,所述NAS設備就會從所述第二次讀取數據在所述物理存儲設備上的物理地址處獲得所述第二次讀取數據,並在所述第二次讀取數據所在文件在虛擬存儲文件上的虛擬地址中選擇一個虛擬地址作為預讀虛擬地址,即重新進行步驟302-309。但這種情況並不常見,一般情況下,客戶端會連續讀取。
[0104]310、所述NAS設備將所述緩存內的預讀數據返回給所述客戶端。
[0105]同時,所述NAS可以根據所述第二次讀取數據所在文件的唯一標識獲得所述第二次讀取數據所在文件在虛擬存儲文件上的虛擬地址,選擇一個虛擬地址作為預讀虛擬地址,並進行步驟302-309。
[0106]上述方法中,所述NAS設備可以感知客戶端磁碟分區與虛擬存儲文件上的虛擬地址間的對應關係,因此在客戶端寫入文件時,就可以儘量將該文件連續分配在物理存儲設備上。這樣,當客戶端首次向所述NAS設備發送包括有該文件在虛擬存儲文件上的第一個偏移量+長度的數據讀取指令時(默認客戶端連續讀取該文件),所述NAS設備接收所述數據讀取指令後獲得該文件在虛擬存儲文件上的第一個虛擬地址,進而獲得該文件在物理存儲設備上的第一個物理地址,另外由於所述虛擬文件在物理存儲設備上可能是連續存儲的,並且NAS設備能夠感知所述虛擬文件在物理存儲設備上的物理地址,故在下次讀取數據的時候,所述NAS設備就可以在該文件在物理存儲設備上的第一個物理地址的後續位置處開始讀取所述客戶端要求讀取的後續數據,而不需要再從該文件對應在物理存儲設備上的第一個物理地址開始尋址物理存儲設備,這樣在讀文件時就可以減少磁碟機械介質尋址操作的時間消耗。
[0107]本發明實施例提供的數據讀取的方法,NAS設備會記錄讀取數據所在文件在虛擬存儲文件上的虛擬地址與讀取數據所在文件的唯一標識之間的對應關係,在客戶端發送給NAS設備的數據讀取指令中增加本次讀取數據所在文件的唯一標識。這樣NAS設備接收到讀取數據指令後,會獲得預讀數據在所述虛擬存儲文件上的虛擬地址,根據本次讀取數據和預讀數據在虛擬存儲文件上的虛擬地址,訪問物理存儲設備,並將預讀數據存儲在NAS設備緩存中。與現有技術中NAS設備無法感知讀取數據所在文件在虛擬存儲文件上的N個虛擬地址,無法進行預讀相比,本發明提供的數據讀取的方法接收到客戶端下一次發送的讀取數據指令後,直接從緩存中讀取數據,不需要再次訪問物理存儲設備,提高了數據的讀取效率。
[0108]實施例3:
[0109]本發明實施例提供了一種NAS設備,如圖5所示,包括:接收單元501、獲得單元502、選擇單元503、訪問單元504、發送單元505和存儲單元506。
[0110]接收單元501,用於接收客戶端發送的第一數據讀取指令,所述第一數據讀取指令包括:本次讀取數據在虛擬存儲文件上的虛擬地址,本次讀取數據所在文件的唯一標識。獲得單元502,用於根據所述本次讀取數據所在文件在所述虛擬存儲文件上的虛擬地址和所述唯一標識之間的對應關係,獲得所述本次讀取數據所在文件在所述虛擬存儲文件上的虛擬地址;所述本次讀取數據所在文件包括多個數據塊,其中每個數據塊對應虛擬存儲文件上的一個虛擬地址。選擇單元503,用於從所述獲得單元502獲得的所述本次讀取數據所在文件在虛擬存儲文件上的虛擬地址中,選擇除了本次讀取數據、已讀數據和已預讀數據在虛擬存儲文件上的虛擬地址外的任一虛擬地址,作為預讀數據在所述虛擬存儲文件上的預讀虛擬地址。訪問單元504,用於根據自身存儲的所述虛擬存儲文件上的虛擬地址和物理存儲設備上的物理地址的對應關係,通過所述接收單元501接收的所述本次讀取數據在虛擬存儲文件上的虛擬地址,訪問所述本次讀取數據對應在所述物理存儲設備上的物理地址,獲得所述本次讀取數據;通過所述選擇單元503選擇的所述預讀虛擬地址,訪問所述預讀數據對應在所述物理存儲設備上的物理地址,獲得所述預讀數據。發送單元505,用於向所述客戶端發送所述訪問單元504獲得的所述本次讀取數據。存儲單元506,用於將所述訪問單元504獲得的所述預讀數據存儲在所述NAS設備的緩存內並記錄所述NAS設備緩存內的預讀數據在物理存儲設備上的物理地址。
[0111]如圖6所示,所述NAS設備還包括寫入單元507。所述接收單元501,用於在接收客戶端發送的第一數據讀取指令之前,接收所述客戶端發送的文件寫入指令,所述文件寫入指令中攜帶有本次寫入文件的數據以及本次寫入文件的唯一標識。所述寫入單元507具體用於,為所述本次寫入文件分配其在所述物理存儲設備上的物理地址,並記錄所述本次寫入文件的唯一標識和所述本次寫入文件在所述虛擬存儲文件上的虛擬地址之間的對應關係。
[0112]所述寫入單元507具體用於,為所述本次寫入文件在所述物理存儲設備上分配連續的物理地址。
[0113]如圖7所示,所述NAS設備還包括判斷單元508。所述接收單元501還用於,在所述存儲單元506將所述預讀數據存儲在所述NAS設備的緩存內之後,接收所述客戶端發送的第二數據讀取指令,所述第二數據讀取指令包括:第二次讀取數據在虛擬存儲文件上的虛擬地址,第二次讀取數據所在文件的唯一標識。所述獲得單元502還用於,根據自身存儲的所述虛擬存儲文件上的虛擬地址和物理存儲設備上的物理地址的對應關係,通過所述接收單元501接收的所述第二次讀取數據在虛擬存儲文件上的虛擬地址,獲得所述第二次讀取數據在所述物理存儲設備上的物理地址。所述判斷單元508具體用於,判斷所述獲得單元502獲得的所述第二次讀取數據在所述物理存儲設備上的物理地址與所述存儲單元506記錄的所述NAS設備緩存內的預讀數據在所述物理存儲設備上的物理地址是否相同。所述發送單元505還用於,在所述判斷單元508判斷相同時,將所述緩存內的預讀數據返回給所述客戶端。
[0114]本發明實施例提供了一種客戶端,包括:發送單元。
[0115]發送單元,用於向網絡附屬存儲NAS設備發送數據讀取指令,所述數據讀取指令包括:本次讀取數據在虛擬存儲文件上的虛擬地址,本次讀取數據所在文件的唯一標識。
[0116]所述發送單元還用於,向所述NAS設備發送文件寫入指令,所述文件寫入指令中攜帶有本次寫入文件的數據以及本次寫入文件的唯一標識;以使得所述NAS記錄所述本次寫入文件的唯一標識和所述本次寫入文件在所述虛擬存儲文件上的虛擬地址之間的對應關係。
[0117]本發明實施例提供的NAS設備和客戶端,NAS設備會記錄讀取數據所在文件在虛擬存儲文件上的虛擬地址與讀取數據所在文件的唯一標識之間的對應關係,在客戶端發送給NAS設備的數據讀取指令中增加本次讀取數據所在文件的唯一標識。這樣NAS設備接收到讀取數據指令後,會獲得預讀數據在所述虛擬存儲文件上的虛擬地址,根據本次讀取數據和預讀數據在虛擬存儲文件上的虛擬地址,訪問物理存儲設備,並將預讀數據存儲在NAS設備緩存中。與現有技術中NAS設備無法感知讀取數據所在文件在虛擬存儲文件上的N個虛擬地址,無法進行預讀相比,本發明提供的數據讀取的方法接收到客戶端下一次發送的讀取數據指令後,直接從緩存中讀取數據,不需要再次訪問物理存儲設備,提高了數據的讀取效率。
[0118]實施例4:
[0119]本發明實施例提供了一種NAS設備,如圖8所示,所述NAS設備包括:發射接口801、接收接口 802、存儲器803以及分別與發射接口 801、接收接口 802和存儲器803連接的處理器804。當然,NAS設備還可以包括基帶處理部件、中射頻處理部件、輸入輸出裝置等通用部件,本發明實施例在此不做任何限制。其中,存儲器803中存儲一組程序代碼,且處理器804用於調用存儲器803中存儲的程序代碼,用於執行以下操作:
[0120]處理器804,用於通過接收接口 802接收客戶端發送的第一數據讀取指令,所述第一數據讀取指令包括:本次讀取數據在虛擬存儲文件上的虛擬地址,本次讀取數據所在文件的唯一標識。所述處理器804,用於根據所述本次讀取數據所在文件在所述虛擬存儲文件上的虛擬地址和所述唯一標識之間的對應關係,獲得所述本次讀取數據所在文件在所述虛擬存儲文件上的虛擬地址;所述本次讀取數據所在文件包括多個數據塊,其中每個數據塊對應虛擬存儲文件上的一個虛擬地址。所述處理器804,用於從獲得的所述本次讀取數據所在文件在虛擬存儲文件上的虛擬地址中,選擇除了本次讀取數據、已讀數據和已預讀數據在虛擬存儲文件上的虛擬地址外的任一虛擬地址,作為預讀數據在所述虛擬存儲文件上的預讀虛擬地址。所述處理器804,用於根據自身存儲的所述虛擬存儲文件上的虛擬地址和物理存儲設備上的物理地址的對應關係,通過接收的所述本次讀取數據在虛擬存儲文件上的虛擬地址,訪問所述本次讀取數據對應在所述物理存儲設備上的物理地址,獲得所述本次讀取數據;通過選擇的所述預讀虛擬地址,訪問所述預讀數據對應在所述物理存儲設備上的物理地址,獲得所述預讀數據。所述處理器804,用於通過發射接口 801向所述客戶端發送獲得的所述本次讀取數據。所述處理器804,用於將獲得的所述預讀數據存儲在所述NAS設備的緩存內並記錄所述NAS設備緩存內的預讀數據在物理存儲設備上的物理地址。
[0121]所述處理器804還用於,在接收客戶端發送的第一數據讀取指令之前,通過接收接口 802接收所述客戶端發送的文件寫入指令,所述文件寫入指令中攜帶有本次寫入文件的數據以及本次寫入文件的唯一標識。所述處理器804還用於,為所述本次寫入文件分配其在所述物理存儲設備上的物理地址,並記錄所述本次寫入文件的唯一標識和所述本次寫入文件在所述虛擬存儲文件上的虛擬地址之間的對應關係。
[0122]所述處理器804具體用於,為所述本次寫入文件在所述物理存儲設備上分配連續的物理地址。
[0123]所述處理器804還用於,在將所述預讀數據存儲在所述NAS設備的緩存內之後,通過接收接口 802接收所述客戶端發送的第二數據讀取指令,所述第二數據讀取指令包括:第二次讀取數據在虛擬存儲文件上的虛擬地址,第二次讀取數據所在文件的唯一標識。所述處理器804用於,根據自身存儲的所述虛擬存儲文件上的虛擬地址和物理存儲設備上的物理地址的對應關係,通過接收的所述第二次讀取數據在虛擬存儲文件上的虛擬地址,獲得所述第二次讀取數據在所述物理存儲設備上的物理地址。所述處理器804具體用於,判斷獲得的所述第二次讀取數據在所述物理存儲設備上的物理地址與記錄的所述NAS設備緩存內的預讀數據在所述物理存儲設備上的物理地址是否相同。所述處理器804還用於,在判斷相同時,通過發射接口 801將所述緩存內的預讀數據返回給所述客戶端。
[0124]本發明實施例提供了一種客戶端,所述客戶端包括:發射接口、存儲器以及分別與發射接口和存儲器連接的處理器。當然,客戶端還可以包括基帶處理部件、中射頻處理部件、輸入輸出裝置等通用部件,本發明實施例在此不做任何限制。其中,存儲器中存儲一組程序代碼,且處理器用於調用存儲器中存儲的程序代碼,用於執行以下操作:
[0125]處理器,用於通過發射接口向網絡附屬存儲NAS設備發送數據讀取指令,所述數據讀取指令包括:本次讀取數據在虛擬存儲文件上的虛擬地址,本次讀取數據所在文件的唯一標識。
[0126]所述處理器還用於,通過所述發射接口向所述NAS設備發送文件寫入指令,所述文件寫入指令中攜帶有本次寫入文件的數據以及本次寫入文件的唯一標識;以使得所述NAS記錄所述本次寫入文件的唯一標識和所述本次寫入文件在所述虛擬存儲文件上的虛擬地址之間的對應關係。
[0127]本發明實施例提供的NAS設備和客戶端,NAS設備會記錄讀取數據所在文件在虛擬存儲文件上的虛擬地址與讀取數據所在文件的唯一標識之間的對應關係,在客戶端發送給NAS設備的數據讀取指令中增加本次讀取數據所在文件的唯一標識。這樣NAS設備接收到讀取數據指令後,會獲得預讀數據在所述虛擬存儲文件上的虛擬地址,根據本次讀取數據和預讀數據在虛擬存儲文件上的虛擬地址,訪問物理存儲設備,並將預讀數據存儲在NAS設備緩存中。與現有技術中NAS設備無法感知讀取數據所在文件在虛擬存儲文件上的N個虛擬地址,無法進行預讀相比,本發明提供的數據讀取的方法接收到客戶端下一次發送的讀取數據指令後,直接從緩存中讀取數據,不需要再次訪問物理存儲設備,提高了數據的讀取效率。
[0128]本領域普通技術人員可以理解:實現上述方法實施例的全部或部分步驟可以通過程序指令相關的硬體來完成,前述的程序可以存儲於一計算機可讀取存儲介質中,該程序在執行時,執行包括上述方法實施例的步驟;而前述的存儲介質包括:ROM、RAM、磁碟或者光碟等各種可以存儲程序代碼的介質。
[0129]以上所述,僅為本發明的【具體實施方式】,但本發明的保護範圍並不局限於此,任何熟悉本【技術領域】的技術人員在本發明揭露的技術範圍內,可輕易想到變化或替換,都應涵蓋在本發明的保護範圍之內。因此,本發明的保護範圍應所述以權利要求的保護範圍為準。
【權利要求】
1.一種數據讀取的方法,其特徵在於,包括: 網絡附屬存儲NAS設備接收客戶端發送的第一數據讀取指令,所述第一數據讀取指令包括:本次讀取數據在虛擬存儲文件上的虛擬地址,本次讀取數據所在文件的唯一標識;所述NAS設備根據所述本次讀取數據所在文件在所述虛擬存儲文件上的虛擬地址和所述唯一標識之間的對應關係,獲得所述本次讀取數據所在文件在所述虛擬存儲文件上的虛擬地址;所述本次讀取數據所在文件包括多個數據塊,其中每個數據塊對應虛擬存儲文件上的一個虛擬地址; 所述NAS設備從所述本次讀取數據所在文件在虛擬存儲文件上的虛擬地址中,選擇除了本次讀取數據、已讀數據和已預讀數據在虛擬存儲文件上的虛擬地址外的任一虛擬地址,作為預讀數據在所述虛擬存儲文件上的預讀虛擬地址; 所述NAS設備根據自身存儲的所述虛擬存儲文件上的虛擬地址和物理存儲設備上的物理地址的對應關係,通過所述本次讀取數據在虛擬存儲文件上的虛擬地址,訪問所述本次讀取數據對應在所述物理存儲設備上的物理地址,獲得所述本次讀取數據;通過所述預讀虛擬地址,訪問所述預讀數據對應在所述物理存儲設備上的物理地址,獲得所述預讀數據; 所述NAS設備向所述客戶端發送所述本次讀取數據; 所述NAS設備將所述預讀數據存儲在所述NAS設備的緩存內並記錄所述NAS設備緩存內的預讀數據在物理存儲設備上的物理地址。
2.根據權利要求1所述的方法,其特徵在於,在所述NAS設備接收客戶端發送的第一數據讀取指令之前,所述方法還包括: 所述NAS設備接收所述客戶端發送的文件寫入指令,所述文件寫入指令中攜帶有本次寫入文件的數據以及本次寫入文件的唯一標識;` 所述NAS設備為所述本次寫入文件分配其在所述物理存儲設備上的物理地址; 所述NAS設備記錄所述本次寫入文件的唯一標識和所述本次寫入文件在所述虛擬存儲文件上的虛擬地址之間的對應關係。
3.根據權利要求2所述的方法,其特徵在於,所述NAS設備為所述本次寫入文件分配在所述物理存儲設備上的物理地址是連續的。
4.根據權利要求1或2所述的方法,其特徵在於,在所述NAS設備將所述預讀數據存儲在所述NAS設備的緩存內之後,所述方法還包括: 所述NAS設備接收所述客戶端發送的第二數據讀取指令,所述第二數據讀取指令包括:第二次讀取數據在虛擬存儲文件上的虛擬地址,第二次讀取數據所在文件的唯一標識; 所述NAS設備根據自身存儲的所述虛擬存儲文件上的虛擬地址和物理存儲設備上的物理地址的對應關係,通過所述第二次讀取數據在虛擬存儲文件上的虛擬地址,獲得所述第二次讀取數據在所述物理存儲設備上的物理地址; 所述NAS設備判斷所述第二次讀取數據在所述物理存儲設備上的物理地址與所述NAS設備緩存內的預讀數據在所述物理存儲設備上的物理地址是否相同; 若相同,則所述NAS設備將所述緩存內的預讀數據返回給所述客戶端。
5.一種數據讀取的方法,其特徵在於,包括:客戶端向網絡附屬存儲NAS設備發送數據讀取指令,所述數據讀取指令包括:本次讀取數據在虛擬存儲文件上的虛擬地址,本次讀取數據所在文件對應的唯一標識。
6.根據權利要求5所述的方法,其特徵在於,所述方法還包括: 所述客戶端向所述NAS設備發送文件寫入指令,所述文件寫入指令中攜帶有本次寫入文件的數據以及本次寫入文件的唯一標識;以使得所述NAS記錄所述本次寫入文件的唯一標識和所述本次寫入文件在所述虛擬存儲文件上的虛擬地址之間的對應關係。
7.—種網絡附屬存儲NAS設備,其特徵在於,包括: 接收單元,用於接收客戶端發送的第一數據讀取指令,所述第一數據讀取指令包括:本次讀取數據在虛擬存儲文件上的虛擬地址,本次讀取數據所在文件的唯一標識; 獲得單元,用於根據所述本次讀取數據所在文件在所述虛擬存儲文件上的虛擬地址和所述唯一標識之間的對應關係,獲得所述本次讀取數據所在文件在所述虛擬存儲文件上的虛擬地址;所述本次讀取數據所在文件包括多個數據塊,其中每個數據塊對應虛擬存儲文件上的一個虛擬地址; 選擇單元,用於從所述獲得單元獲得的所述本次讀取數據所在文件在虛擬存儲文件上的虛擬地址中,選擇除了本次讀取數據、已讀數據和已預讀數據在虛擬存儲文件上的虛擬地址外的任一虛擬地址,作為預讀數據在所述虛擬存儲文件上的預讀虛擬地址; 訪問單元,用於根據自身存儲的所述虛擬存儲文件上的虛擬地址和物理存儲設備上的物理地址的對應關係,通過所述接收單元接收的所述本次讀取數據在虛擬存儲文件上的虛擬地址,訪問所述本次讀取數據對應在所述物理存儲設備上的物理地址,獲得所述本次讀取數據;通過所述選擇單元選擇的所述預讀虛擬地址,訪問所述預讀數據對應在所述物理存儲設備上的物理地址,獲得所述預讀數據;· 發送單元,用於向所述客戶端發送所述訪問單元獲得的所述本次讀取數據; 存儲單元,用於將所述訪問單元獲得的所述預讀數據存儲在所述NAS設備的緩存內並記錄所述NAS設備緩存內的預讀數據在物理存儲設備上的物理地址。
8.根據權利要求7所述的NAS設備,其特徵在於,還包括寫入單元, 所述接收單元,用於在接收客戶端發送的第一數據讀取指令之前,接收所述客戶端發送的文件寫入指令,所述文件寫入指令中攜帶有本次寫入文件的數據以及本次寫入文件的唯一標識; 所述寫入單元具體用於,為所述本次寫入文件分配其在所述物理存儲設備上的物理地址,並記錄所述本次寫入文件的唯一標識和所述本次寫入文件在所述虛擬存儲文件上的虛擬地址之間的對應關係。
9.根據權利要求8所述的NAS設備,其特徵在於,所述寫入單元具體用於,為所述本次寫入文件在所述物理存儲設備上分配連續的物理地址。
10.根據權利要求7或8所述的NAS設備,其特徵在於,還包括判斷單元, 所述接收單元還用於,在所述存儲單元將所述預讀數據存儲在所述NAS設備的緩存內之後,接收所述客戶端發送的第二數據讀取指令,所述第二數據讀取指令包括:第二次讀取數據在虛擬存儲文件上的虛擬地址,第二次讀取數據所在文件的唯一標識; 所述獲得單元還用於,根據自身存儲的所述虛擬存儲文件上的虛擬地址和物理存儲設備上的物理地址的對應關係,通過所述接收單元接收的所述第二次讀取數據在虛擬存儲文件上的虛擬地址,獲得所述第二次讀取數據在所述物理存儲設備上的物理地址; 所述判斷單元具體用於,判斷所述獲得單元獲得的所述第二次讀取數據在所述物理存儲設備上的物理地址與所述存儲單元記錄的所述NAS設備緩存內的預讀數據在所述物理存儲設備上的物理地址是否相同; 所述發送單元還用於,在所述判斷單元判斷相同時,將所述緩存內的預讀數據返回給所述客戶端。
11.一種客戶端, 其特徵在於,包括: 發送單元,用於向網絡附屬存儲NAS設備發送數據讀取指令,所述數據讀取指令包括:本次讀取數據在虛擬存儲文件上的虛擬地址,本次讀取數據所在文件的唯一標識。
12.根據權利要求11所述的客戶端,其特徵在於, 所述發送單元還用於,向所述NAS設備發送文件寫入指令,所述文件寫入指令中攜帶有本次寫入文件的數據以及本次寫入文件的唯一標識;以使得所述NAS記錄所述本次寫入文件的唯一標識和所述本次寫入文件在所述虛擬存儲文件上的虛擬地址之間的對應關係。
【文檔編號】G06F3/06GK103593147SQ201310554709
【公開日】2014年2月19日 申請日期:2013年11月7日 優先權日:2013年11月7日
【發明者】王成利, 孔晗 申請人:華為技術有限公司