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