亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種陣列控制器、陣列和數(shù)據(jù)處理方法

文檔序號(hào):6623692閱讀:231來源:國知局
一種陣列控制器、陣列和數(shù)據(jù)處理方法
【專利摘要】本發(fā)明涉及數(shù)據(jù)處理【技術(shù)領(lǐng)域】,尤其涉及陣列控制器、陣列和數(shù)據(jù)處理方法,用以解決現(xiàn)有采用胖邏輯單元號(hào)thick?LUN技術(shù)的陣列,若采用數(shù)據(jù)完整性保證區(qū)域DIF技術(shù),為避免用戶主機(jī)訪問未寫入的數(shù)據(jù)區(qū)域時(shí)發(fā)生錯(cuò)誤,通過額外的數(shù)據(jù)寫入操作清除殘留數(shù)據(jù),造成額外的IO寫入,時(shí)間開銷大的問題。本發(fā)明實(shí)施例提供的陣列控制器,包括:接口,用于接收用戶主機(jī)發(fā)送的讀取數(shù)據(jù)的命令;處理器,用于從thick?LUN中讀取數(shù)據(jù);若邏輯區(qū)塊地址LBA校驗(yàn)錯(cuò)誤,且陣列控制器保存的該thick?LUN的第二標(biāo)識(shí),沒有記錄該thick?LUN上,讀取的數(shù)據(jù)對(duì)應(yīng)的信息字段中,則確定讀取的數(shù)據(jù)為殘留數(shù)據(jù),從而避免了額外的數(shù)據(jù)寫入。
【專利說明】—種陣列控制器、陣列和數(shù)據(jù)處理方法

【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理【技術(shù)領(lǐng)域】,尤其涉及一種陣列控制器、陣列和數(shù)據(jù)處理方法。

【背景技術(shù)】
[0002]數(shù)據(jù)完整性保證區(qū)域(Data Integrity Field,DIF),是目前常用的數(shù)據(jù)完整性保護(hù)方法。其驗(yàn)證數(shù)據(jù)本身是否正確,以及數(shù)據(jù)否被正確引用。
[0003]對(duì)于數(shù)據(jù)本身是否正確,通常在對(duì)數(shù)據(jù)進(jìn)行校驗(yàn)計(jì)算后,與之前存放的校驗(yàn)值進(jìn)比較,當(dāng)兩者一致時(shí),表明數(shù)據(jù)沒有被破壞;否則表明數(shù)據(jù)已被破壞。
[0004]對(duì)于數(shù)據(jù)是否被正確引用,通常對(duì)數(shù)據(jù)的偏移進(jìn)行記錄。當(dāng)再次讀取數(shù)據(jù)時(shí),傳入讀取的數(shù)據(jù)偏移,如果該偏移和記錄的偏移一致,則表明數(shù)據(jù)被正常讀??;否則表明數(shù)據(jù)讀取位置出現(xiàn)偏差或者偏移記錄被破壞。
[0005]目前,陣列中常用的DIF技術(shù)一般符合TlO標(biāo)準(zhǔn)。TlO標(biāo)準(zhǔn)規(guī)定,在每一個(gè)512字節(jié)的扇區(qū)(稱為“數(shù)據(jù)區(qū)域”)后面額外使用8個(gè)字節(jié)(稱為“DIF區(qū)域”),如圖1所示。其中,前兩個(gè)字節(jié)為校驗(yàn)和(Guard),然后是2字節(jié)的應(yīng)用標(biāo)簽(Applicat1n Tag或MetaTag),通常保存用戶自定義的和應(yīng)用相關(guān)的信息;最后是4字節(jié)的Ref標(biāo)簽(Ref Tag):通常是邏輯區(qū)塊地址(Logical Block Address, LBA)。
[0006]thick LUN,一種常用的邏輯單元號(hào)(Logical Unit Number, LUN)實(shí)現(xiàn)技術(shù),通常由多個(gè)很大的塊組成一個(gè)用戶可見的連續(xù)LUN空間,其中每一個(gè)LUN空間包括上述的數(shù)據(jù)區(qū)域和對(duì)應(yīng)的DIF區(qū)域,在創(chuàng)建LUN后即完成同樣大小的空間分配。
[0007]對(duì)于采用了 thick LUN的陣列,若采用DIF進(jìn)行數(shù)據(jù)完整性保護(hù),為了避免用戶主機(jī)在訪問未寫入的數(shù)據(jù)區(qū)域時(shí),用戶主機(jī)報(bào)1錯(cuò)誤,需要額外進(jìn)行一次數(shù)據(jù)寫入的操作,用戶主機(jī)必須要等待該次數(shù)據(jù)寫入的操作完成后再能使用陣列,造成陣列訪問速度慢。并且,該額外的數(shù)據(jù)寫入的操作會(huì)增加硬盤的1數(shù)目,從而造成陣列性能降低。


【發(fā)明內(nèi)容】

[0008]本發(fā)明實(shí)施例提供一種陣列控制器、陣列和數(shù)據(jù)處理方法,用以解決現(xiàn)有采用thick LUN技術(shù)的陣列,若采用DIF進(jìn)行數(shù)據(jù)完整性保護(hù),為了避免用戶主機(jī)在訪問未寫入的數(shù)據(jù)區(qū)域時(shí)發(fā)生錯(cuò)誤,通過額外的數(shù)據(jù)寫入操作清除殘留數(shù)據(jù),造成額外的1寫入,時(shí)間開銷大的問題。
[0009]第一方面,本發(fā)明實(shí)施例提供一種陣列控制器,包括:
[0010]接口,用于接收用戶主機(jī)發(fā)送的讀取數(shù)據(jù)的第一命令,所述第一命令攜帶thickLUN的第一標(biāo)識(shí)和第一偏移地址信息;
[0011]處理器,用于根據(jù)所述第一標(biāo)識(shí),確定所述用戶主機(jī)待訪問的thick LUN ;從所述確定出的thick LUN中,讀取所述第一命令待讀取的數(shù)據(jù);若所述待讀取的數(shù)據(jù)對(duì)應(yīng)的第一信息字段中記錄的第二偏移地址信息,與所述第一命令中的所述第一偏移地址信息不一致,且所述陣列控制器保存的所述用戶主機(jī)要訪問的所述thick LUN的第二標(biāo)識(shí),沒有記錄在所述待讀取的數(shù)據(jù)對(duì)應(yīng)的第二信息字段中,則確定所述待讀取的數(shù)據(jù)為殘留數(shù)據(jù),通過所述接口,向所述用戶主機(jī)返回零數(shù)據(jù),其中,所述第一信息字段為所述thick LUN中的用于記錄數(shù)據(jù)的所述第二偏移地址信息的字段;所述第二信息字段為所述thick LUN中的用于記錄所述thick LUN的第二標(biāo)識(shí)的字段。
[0012]結(jié)合第一方面,在第一種可能的實(shí)現(xiàn)方式中,所述處理器還用于:
[0013]若所述待讀取的數(shù)據(jù)對(duì)應(yīng)的第一信息字段中記錄的所述第二偏移地址信息,與所述第一命令中的所述第一偏移地址信息不一致,但所述陣列控制器保存的所述thick LUN的所述第二標(biāo)識(shí),記錄在所述待讀取的數(shù)據(jù)對(duì)應(yīng)的所述第二信息字段中,則
[0014]確定所述待讀取的數(shù)據(jù)發(fā)生指向錯(cuò)誤,通過所述接口,向所述用戶主機(jī)返回地址校驗(yàn)錯(cuò)誤信息。
[0015]結(jié)合第一方面,在第二種可能的實(shí)現(xiàn)方式中,所述處理器還用于:
[0016]若所述待讀取的數(shù)據(jù)對(duì)應(yīng)的第一信息字段中記錄的所述第二偏移地址信息,與所述第一命令中的所述第一偏移地址信息一致,且所述陣列控制器保存的所述thick LUN的所述第二標(biāo)識(shí),記錄在所述待讀取的數(shù)據(jù)對(duì)應(yīng)的第二信息字段中,則
[0017]確定通過所述接口,向所述用戶主機(jī)返回所述待讀取的數(shù)據(jù)。
[0018]結(jié)合第一方面,在第三種可能的實(shí)現(xiàn)方式中,所述處理器還用于:
[0019]若所述待讀取的數(shù)據(jù)對(duì)應(yīng)的第一信息字段中記錄的所述第二偏移地址信息,與所述第一命令中的所述第一偏移地址信息一致,但所述陣列控制器保存的所述thick LUN的所述第二標(biāo)識(shí),沒有記錄在所述待讀取的數(shù)據(jù)對(duì)應(yīng)的所述第二信息字段中,則
[0020]確定通過所述接口,向所述用戶主機(jī)返回零數(shù)據(jù)。
[0021]結(jié)合第一方面、第一方面的第一種可能的實(shí)現(xiàn)方式、第一方面的第二種可能的實(shí)現(xiàn)方式、第一方面的第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,
[0022]所述接口還用于:接收創(chuàng)建所述thick LUN的第二命令,所述第二命令中攜帶所述第一標(biāo)識(shí)、以及要?jiǎng)?chuàng)建的所述thick LUN的容量信息;
[0023]所述處理器還用于:創(chuàng)建所述thick LUN,所述thick LUN的容量為所述容量信息指示的容量,保存所述thick LUN的所述第一標(biāo)識(shí),生成并保存所述thick LUN的第二標(biāo)識(shí)。
[0024]結(jié)合第一方面的第四種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,所述接口還用于:接收向所述thick LUN寫入數(shù)據(jù)的第三命令,所述第三命令中攜帶所述第一標(biāo)識(shí)、待寫入數(shù)據(jù)和所述待寫入數(shù)據(jù)在所述thick LUN上的第三偏移地址信息;
[0025]所述陣列控制器在所述thick LUN上寫入所述待寫入數(shù)據(jù),根據(jù)所述第三偏移地址信息,在所述待寫入數(shù)據(jù)對(duì)應(yīng)的第一信息字段中,記錄所述待寫入數(shù)據(jù)的所述第二偏移地址信息,并將所述thick LUN的第二標(biāo)識(shí),記錄在所述第二信息字段中。
[0026]第二方面,本發(fā)明實(shí)施例提供一種陣列,包括:
[0027]硬盤,以及本發(fā)明第一方面及第一方面的各種可能的實(shí)現(xiàn)方式中的陣列控制器,其中所述thick LUN處于所述硬盤上。
[0028]第三方面,本發(fā)明實(shí)施例提供一種數(shù)據(jù)處理的方法,所述方法應(yīng)用于陣列控制器中,包括:
[0029]所述陣列控制器接收用戶主機(jī)發(fā)送的讀取數(shù)據(jù)的第一命令,所述第一命令攜帶胖邏輯單元號(hào)thick LUN的第一標(biāo)識(shí)和第一偏移地址信息;
[0030]所述陣列控制器根據(jù)所述第一標(biāo)識(shí),確定所述用戶主機(jī)待訪問的thick LUN ;
[0031]所述陣列控制器從所述確定出的thick LUN中,讀取所述第一命令待讀取的數(shù)據(jù);
[0032]若所述待讀取的數(shù)據(jù)對(duì)應(yīng)的第一信息字段中記錄的第二偏移地址信息,與所述第一命令中的所述第一偏移地址信息不一致,且所述陣列控制器保存的所述thick LUN的第二標(biāo)識(shí),沒有記錄在所述待讀取的數(shù)據(jù)對(duì)應(yīng)的第二信息字段中,則所述陣列控制器確定所述待讀取的數(shù)據(jù)為殘留數(shù)據(jù),向所述用戶主機(jī)返回零數(shù)據(jù),其中,所述第一信息字段為所述thick LUN中的用于記錄數(shù)據(jù)的所述第二偏移地址信息的字段;所述第二信息字段為所述thick LUN中的用于記錄所述thick LUN的第二標(biāo)識(shí)的字段。
[0033]結(jié)合第三方面,在第一種可能的實(shí)現(xiàn)方式中,所述方法還包括:
[0034]若所述待讀取的數(shù)據(jù)對(duì)應(yīng)的第一信息字段中記錄的所述第二偏移地址信息,與所述第一命令中的所述第一偏移地址信息不一致,但所述陣列控制器保存的所述thick LUN的所述第二標(biāo)識(shí),記錄在所述待讀取的數(shù)據(jù)對(duì)應(yīng)的所述第二信息字段中,則
[0035]所述陣列控制器確定所述待讀取的數(shù)據(jù)發(fā)生指向錯(cuò)誤,向所述用戶主機(jī)返回地址校驗(yàn)錯(cuò)誤信息。
[0036]結(jié)合第三方面,在第二種可能的實(shí)現(xiàn)方式中,所述方法還包括:
[0037]若所述待讀取的數(shù)據(jù)對(duì)應(yīng)的第一信息字段中記錄的所述第二偏移地址信息,與所述第一命令中的所述第一偏移地址信息一致,且所述陣列控制器保存的所述thick LUN的所述第二標(biāo)識(shí),記錄在所述待讀取的數(shù)據(jù)對(duì)應(yīng)的第二信息字段中,則
[0038]所述陣列控制器向所述用戶主機(jī)返回所述待讀取的數(shù)據(jù)。
[0039]結(jié)合第三方面,在第三種可能的實(shí)現(xiàn)方式中,所述方法還包括:
[0040]若所述待讀取的數(shù)據(jù)對(duì)應(yīng)的第一信息字段中記錄的所述第二偏移地址信息,與所述第一命令中的所述第一偏移地址信息一致,但所述陣列控制器保存的所述thick LUN的所述第二標(biāo)識(shí),沒有記錄在所述待讀取的數(shù)據(jù)對(duì)應(yīng)的所述第二信息字段中,則
[0041 ] 所述陣列控制器向所述用戶主機(jī)返回零數(shù)據(jù)。
[0042]結(jié)合第三方面、第三方面的第一種可能的實(shí)現(xiàn)方式、第三方面的第二種可能的實(shí)現(xiàn)方式、第三方面的第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述方法還包括:
[0043]所述陣列控制器接收創(chuàng)建所述thick LUN的第二命令,所述第二命令中攜帶所述第一標(biāo)識(shí)、以及要?jiǎng)?chuàng)建的所述thick LUN的容量信息;
[0044]所述thick LUN陣列控制器創(chuàng)建所述thick LUN,所述thick LUN的容量為所述容量信息指示的容量,保存所述thick LUN的所述第一標(biāo)識(shí),生成并保存所述LUN的第二標(biāo)識(shí)。
[0045]結(jié)合第三發(fā)明的第四種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,在生成LUN并保存所述第二標(biāo)識(shí)之后,還包括:
[0046]所述陣列控制器接收向所述thick LUN寫入數(shù)據(jù)的第三命令,所述第三命令中攜帶所述第一標(biāo)識(shí)、待寫入數(shù)據(jù)和所述待寫入數(shù)據(jù)在所述thick LUN上的第三偏移地址信息;
[0047]所述陣列控制器在所述thick LUN上寫入所述待寫入數(shù)據(jù),根據(jù)所述第三偏移地址信息,在所述待寫入數(shù)據(jù)對(duì)應(yīng)的第一信息字段中,記錄所述待寫入數(shù)據(jù)的所述第二偏移地址信息,并將所述thick LUN的第二標(biāo)識(shí),記錄在所述第二信息字段中。
[0048]本發(fā)明實(shí)施例中,thick LUN除了具有一個(gè)與用戶主機(jī)交互時(shí)使用的第一標(biāo)識(shí)之夕卜,還具有一個(gè)內(nèi)部的第二標(biāo)識(shí),該標(biāo)識(shí)由本發(fā)明實(shí)施例提供的陣列控制器保存,通過對(duì)該第二標(biāo)識(shí)進(jìn)行判斷,即可確定讀取的數(shù)據(jù)是之前的殘留數(shù)據(jù),然后直接向用戶主機(jī)返回零數(shù)據(jù)。無需在創(chuàng)建thick LUN之后,以及在刪除thick LUN之后,在對(duì)應(yīng)的數(shù)據(jù)空間寫入零數(shù)據(jù),在對(duì)應(yīng)的DIF區(qū)域?qū)懭胩厥獾臉?biāo)志信息,避免了額外的1寫入,節(jié)省了時(shí)間開銷。

【專利附圖】

【附圖說明】
[0049]圖1為TlO標(biāo)準(zhǔn)規(guī)定的DIF區(qū)域的格式示意圖;
[0050]圖2為本發(fā)明實(shí)施例一的數(shù)據(jù)系統(tǒng)的結(jié)構(gòu)示意圖;
[0051]圖3為本發(fā)明實(shí)施例一數(shù)據(jù)系統(tǒng)中的陣列控制器的結(jié)構(gòu)示意圖;
[0052]圖4為本發(fā)明實(shí)施例二的殘留數(shù)據(jù)判斷的流程圖;
[0053]圖5為本發(fā)明實(shí)施例三的創(chuàng)建thick LUN和向thick LUN寫入數(shù)據(jù)的流程圖;
[0054]圖6為本發(fā)明實(shí)施例四的流程圖;
[0055]圖7為本發(fā)明實(shí)施例五的流程圖。

【具體實(shí)施方式】
[0056]本發(fā)明實(shí)施例提供一種數(shù)據(jù)處理的方法、陣列控制器和陣列,用以解決現(xiàn)有采用thick LUN技術(shù)的陣列,若采用DIF進(jìn)行數(shù)據(jù)完整性保護(hù),為了避免用戶主機(jī)在訪問未寫入的數(shù)據(jù)區(qū)域時(shí)發(fā)生錯(cuò)誤,通過額外的數(shù)據(jù)寫入操作清除殘留數(shù)據(jù),造成額外的1寫入,時(shí)間開銷大的問題。
[0057]本發(fā)明實(shí)施例中,thick LUN除了具有一個(gè)與用戶主機(jī)交互時(shí)使用的第一標(biāo)識(shí)之夕卜,還具有一個(gè)內(nèi)部的第二標(biāo)識(shí),該標(biāo)識(shí)由本發(fā)明實(shí)施例提供的陣列控制器保存,通過對(duì)該第二標(biāo)識(shí)進(jìn)行判斷,即可確定讀取的數(shù)據(jù)是之前的殘留數(shù)據(jù),然后直接向用戶主機(jī)返回零數(shù)據(jù)。無需在創(chuàng)建thick LUN之后,以及在刪除thick LUN之后,在對(duì)應(yīng)的數(shù)據(jù)空間寫入零數(shù)據(jù),在對(duì)應(yīng)的DIF區(qū)域?qū)懭胩厥獾臉?biāo)志信息,避免了額外的1寫入,節(jié)省了時(shí)間開銷。
[0058]下面,結(jié)合附圖對(duì)本發(fā)明各實(shí)施例進(jìn)行詳細(xì)介紹。
[0059]實(shí)施例一
[0060]實(shí)施例一介紹了本發(fā)明實(shí)施例提供的數(shù)據(jù)系統(tǒng)。如圖2所示,該數(shù)據(jù)系統(tǒng)包括:
[0061]一個(gè)或多個(gè)用戶主機(jī)201,與一個(gè)或多個(gè)用戶主機(jī)201連接的陣列202 ;其中,陣列202中又包括與各用戶主機(jī)201連接的陣列控制器2021和與陣列控制器2021連接的一個(gè)或多個(gè)硬盤2022。其中,陣列控制器2021可作為陣列控制器,執(zhí)行圖2所示的處理。本發(fā)明實(shí)施例中thick LUN處于硬盤2022上。
[0062]為了示意簡單,圖2中僅示出了一個(gè)用戶主機(jī)201,但實(shí)際應(yīng)用中,可存在多個(gè)用戶主機(jī)201,它們分別與陣列202連接。
[0063]圖2中,用戶主機(jī)201是業(yè)務(wù)發(fā)起者,其可執(zhí)行的操作包括但不限于:
[0064]向陣列202發(fā)送命令,請(qǐng)求創(chuàng)建thick LUN ;
[0065]向陣列202發(fā)送命令,請(qǐng)求刪除thick LUN ;
[0066]向陣列202發(fā)送命令,請(qǐng)求讀取thick LUN上的數(shù)據(jù);
[0067]向陣列202發(fā)送命令,請(qǐng)求將數(shù)據(jù)寫入thick LUN。
[0068]陣列202中,陣列控制器2021為主要的業(yè)務(wù)執(zhí)行者,其可執(zhí)行的操作包括但不限于:
[0069]在收到用戶主機(jī)201發(fā)送的創(chuàng)建thick LUN的命令時(shí),建立thick LUN的LBA到硬盤2022的映射關(guān)系;
[0070]在收到用戶主機(jī)201發(fā)送的刪除thick LUN的命令時(shí),將thick LUN在硬盤2022上的空間回收,用于后續(xù)thick LUN的使用;
[0071]在收到用戶主機(jī)201發(fā)送的讀取thick LUN上的數(shù)據(jù)的命令時(shí),根據(jù)thick LUN的LBA到硬盤2022的映射關(guān)系,從硬盤2022上讀取數(shù)據(jù);
[0072]在收到用戶主機(jī)201發(fā)送的將數(shù)據(jù)寫入thick LUN的命令后,根據(jù)thick LUN的LBA到硬盤2022的映射關(guān)系,將數(shù)據(jù)寫入硬盤2022。
[0073]硬盤2022,主要用于執(zhí)行陣列控制器2021的讀寫請(qǐng)求,并實(shí)際存放數(shù)據(jù)。這里,硬盤2022支持DIF數(shù)據(jù)完整性保護(hù),可選地,扇區(qū)規(guī)格為520字節(jié)。本發(fā)明實(shí)施例中,thickLUN處于硬盤2022上。
[0074]如圖3所示,實(shí)施例二中,陣列控制器2021可包括:
[0075]接口 2021a,用于接收用戶主機(jī)發(fā)送的讀取數(shù)據(jù)的第一命令,第一命令攜帶thickLUN的第一標(biāo)識(shí)和第一偏移地址信息;
[0076]處理器2021b,用于根據(jù)第一標(biāo)識(shí),確定用戶主機(jī)待訪問的thick LUN ;從確定出的thick LUN中,讀取第一命令待讀取的數(shù)據(jù);若待讀取的數(shù)據(jù)對(duì)應(yīng)的第一信息字段中記錄的第二偏移地址信息,與第一命令中的第一偏移地址信息不一致,且陣列控制器保存的用戶主機(jī)要訪問的thick LUN的第二標(biāo)識(shí),沒有記錄在待讀取的數(shù)據(jù)對(duì)應(yīng)的第二信息字段中,則確定待讀取的數(shù)據(jù)為殘留數(shù)據(jù),通過接口 2021a,向用戶主機(jī)返回零數(shù)據(jù),其中,第一信息字段為thick LUN中的用于記錄數(shù)據(jù)的第二偏移地址信息的字段;第二信息字段為thick LUN中的用于記錄thick LUN的第二標(biāo)識(shí)的字段。
[0077]其中,在圖3中,總線架構(gòu)可以包括任意數(shù)量的互聯(lián)的總線和橋,具體由處理器2021b代表的一個(gè)或多個(gè)處理器和接口 2021a代表的接口裝置的各種電路鏈接在一起??偩€架構(gòu)還可以將諸如外圍設(shè)備、穩(wěn)壓器和功率管理電路等之類的各種其他電路鏈接在一起,這些都是本領(lǐng)域所公知的,因此,本文不再對(duì)其進(jìn)行進(jìn)一步描述。
[0078]通常,對(duì)于采用thick LUN技術(shù)的陣列,若采用DIF進(jìn)行數(shù)據(jù)完整性保護(hù),一種情況是,在刪除LUN后再次使用對(duì)應(yīng)的數(shù)據(jù)空間創(chuàng)建LUN時(shí),該數(shù)據(jù)空間上還保留有原有數(shù)據(jù)的LBA信息,如果此時(shí)用戶主機(jī)訪問該數(shù)據(jù)空間,保留的原有數(shù)據(jù)的LBA和訪問LBA通常不匹配,會(huì)向用戶主機(jī)返回LBA校驗(yàn)失敗的輸入輸出(Input Output, 10)錯(cuò)誤。另一種情況是,在創(chuàng)建LUN后,未進(jìn)行數(shù)據(jù)寫入前,用戶主機(jī)訪問對(duì)應(yīng)的數(shù)據(jù)空間,由于在創(chuàng)建LUN之后,對(duì)應(yīng)的數(shù)據(jù)空間上會(huì)存在一些隨機(jī)數(shù)據(jù),此時(shí)要向用戶主機(jī)返回這些隨機(jī)數(shù)據(jù),而用戶主機(jī)并不知道收到的數(shù)據(jù)自身存在錯(cuò)誤,還是由于創(chuàng)建LUN后沒有寫入造成,也會(huì)引起用戶主機(jī)處理的錯(cuò)誤。
[0079]以上兩種情況都是因?yàn)樵趧?chuàng)建了 LUN后,未發(fā)生數(shù)據(jù)寫入時(shí)用戶主機(jī)就直接訪問對(duì)應(yīng)的數(shù)據(jù)空間而發(fā)生的。針對(duì)上述可能發(fā)生的兩種情況,目前無論是在創(chuàng)建LUN空間之后,還是在刪除LUN空間之后,都會(huì)在對(duì)應(yīng)的數(shù)據(jù)空間寫入零數(shù)據(jù),在對(duì)應(yīng)的DIF區(qū)域?qū)懭胩厥獾臉?biāo)志信息,當(dāng)用戶主機(jī)訪問對(duì)應(yīng)的數(shù)據(jù)區(qū)域時(shí),根據(jù)DIF區(qū)域中特殊的標(biāo)記信息即可判斷對(duì)應(yīng)的數(shù)據(jù)區(qū)域是否發(fā)生過數(shù)據(jù)寫入,若確定未發(fā)生過數(shù)據(jù)寫入,則不進(jìn)行LBA校驗(yàn),也就不會(huì)向用戶主機(jī)返回1錯(cuò)誤。
[0080]上述方法的一個(gè)缺點(diǎn)是為了保證在訪問未寫入的數(shù)據(jù)區(qū)域時(shí),不向用戶主機(jī)報(bào)1錯(cuò)誤,需要額外進(jìn)行一次數(shù)據(jù)寫入的操作,用戶主機(jī)必須要等待該次數(shù)據(jù)寫入的操作完成后再能使用陣列,造成陣列訪問速度慢。并且,該額外的數(shù)據(jù)寫入的操作會(huì)增加硬盤的1數(shù)目,從而造成陣列性能降低。
[0081]有鑒于此,本發(fā)明實(shí)施例提供的陣列控制器2021可執(zhí)行下面實(shí)施例二?實(shí)施例五的操作,進(jìn)行相應(yīng)的數(shù)據(jù)處理,以解決上述陣列訪問速度慢、陣列性能低的問題。具體的,下面實(shí)施例二?實(shí)施例五中的操作都是由陣列控制器2021的處理器執(zhí)行的。
[0082]實(shí)施例二、殘留數(shù)據(jù)的判斷
[0083]實(shí)施例二的方法可應(yīng)用于陣列控制器2021中。圖4為本發(fā)明實(shí)施例二的方法流程圖。如圖4所示,該方法包括:
[0084]S401:陣列控制器接收用戶主機(jī)發(fā)送的讀取數(shù)據(jù)的第一命令,該第一命令攜帶thick LUN的第一標(biāo)識(shí)和第一偏移地址信息,根據(jù)該第一標(biāo)識(shí),陣列控制器確定該用戶主機(jī)待訪問的thick LUN ;
[0085]S402:陣列控制器從確定出的thick LUN中,讀取第一命令待讀取的數(shù)據(jù);
[0086]S403:陣列控制器將待讀取的數(shù)據(jù)對(duì)應(yīng)的第一信息字段中記錄的第二偏移地址信息,與第一命令中的第一偏移地址信息進(jìn)行比較,比如:對(duì)待讀取的數(shù)據(jù)進(jìn)行LBA校驗(yàn);
[0087]S404:陣列控制器判斷比較結(jié)果,若不一致,則執(zhí)行步驟S405 ;
[0088]S405:陣列控制器判斷保存的該thick LUN的第二標(biāo)識(shí)是否記錄在該待讀取的數(shù)據(jù)對(duì)應(yīng)的第二信息字段中;若否,則執(zhí)行步驟S406 ;
[0089]S406:陣列控制器確定讀取的數(shù)據(jù)為殘留數(shù)據(jù),向用戶主機(jī)返回零數(shù)據(jù)。
[0090]上述步驟中,第一信息字段為該thick LUN中的用于記錄數(shù)據(jù)的該第二偏移地址信息的字段,比如:該字段位于圖1所示的DIF區(qū)域的“參考標(biāo)簽”中;第二信息字段為該thick LUN中的用于記錄該thick LUN的第二標(biāo)識(shí)的字段,比如:該字段位于圖1所示的DIF區(qū)域的“應(yīng)用標(biāo)簽”中。
[0091]步驟S403中,第一偏移地址信息與第二偏移地址信息的比較,可通過如下方式實(shí)現(xiàn):
[0092]用戶主機(jī)向陣列控制器發(fā)送讀取數(shù)據(jù)的第一命令時(shí),攜帶待讀取的數(shù)據(jù)在硬盤上的偏移地址,即:第一偏移地址信息,以及待讀取數(shù)據(jù)的容量信息。
[0093]陣列控制器按照第一命令中的第一偏移地址信息,以及待讀取數(shù)據(jù)的容量信息,到確定的thick LUN上讀取數(shù)據(jù)。比如,從該第一偏移地址信息指示的偏移地址開始讀取數(shù)據(jù),讀取數(shù)據(jù)的總?cè)萘繛榈谝幻钪袛y帶的待讀取數(shù)據(jù)的容量信息指示的容量,并讀取每一個(gè)512字節(jié)的數(shù)據(jù)對(duì)應(yīng)的DIF區(qū)域中的LBA,即第二偏移地址信息。
[0094]通常,第一命令中攜帶的第一偏移地址信息的長度大于4個(gè)字節(jié),而DIF區(qū)域中的LBA為4個(gè)字節(jié),因此,將第一偏移地址信息的后4個(gè)字節(jié)取出,與讀取的第一個(gè)512字節(jié)的數(shù)據(jù)對(duì)應(yīng)的DIF區(qū)域中的LBA進(jìn)行比較;將第一偏移地址信息的后4個(gè)字節(jié)加上512字節(jié),與讀取的第二個(gè)512字節(jié)的數(shù)據(jù)對(duì)應(yīng)的DIF區(qū)域中的LBA進(jìn)行比較,以此類推,驗(yàn)證讀取的數(shù)據(jù)的每一個(gè)512字節(jié)的數(shù)據(jù)對(duì)應(yīng)的DIF區(qū)域中的LBA,若都一致,則確定LBA校驗(yàn)正確,否則,確定LBA檢驗(yàn)錯(cuò)誤。
[0095]可選地,用于記錄thick LUN第二標(biāo)識(shí)的字段位于DIF區(qū)域的應(yīng)用標(biāo)簽中,比如圖1中的應(yīng)用標(biāo)簽中。
[0096]步驟S404中,若第一偏移地址信息與第二偏移地址信息不一致,則需要進(jìn)一步判斷錯(cuò)誤是由于數(shù)據(jù)本身被破壞,還是由于讀取了未經(jīng)寫入的殘留數(shù)據(jù)而造成的。所以,步驟S405中,對(duì)指定thick LUN的標(biāo)識(shí)進(jìn)一步判斷,當(dāng)陣列控制器保存的該thick LUN的第二標(biāo)識(shí)沒有記錄在待讀取的數(shù)據(jù)對(duì)應(yīng)的第二信息字段中,則表明數(shù)據(jù)是未發(fā)生寫入的殘留數(shù)據(jù),該情況下,由于數(shù)據(jù)未寫入,所以向用戶主機(jī)返回零數(shù)據(jù)即可。
[0097]可選地,若步驟S405的判斷結(jié)果為是,即陣列控制器保存的該thick LUN的第二標(biāo)識(shí),記錄在了該待讀取的數(shù)據(jù)對(duì)應(yīng)的第二信息字段中,則執(zhí)行步驟S407:向用戶主機(jī)返回地址校驗(yàn)錯(cuò)誤信息,比如:LBA錯(cuò)誤信息。
[0098]可選地,若步驟S404的判斷結(jié)果為一致,則執(zhí)行步驟S408:判斷陣列控制器保存的該thick LUN的第二標(biāo)識(shí)是否記錄在待讀取的數(shù)據(jù)對(duì)應(yīng)的第二信息字段中,若是,則執(zhí)行步驟S409:向用戶主機(jī)返回讀取的數(shù)據(jù),否則執(zhí)行步驟S406:確定讀取的數(shù)據(jù)為殘留數(shù)據(jù),向用戶主機(jī)返回零數(shù)據(jù)。
[0099]當(dāng)?shù)刂沸r?yàn)正確,比如:LBA校驗(yàn)正確時(shí),通常都是讀取到了該thick LUN中寫入的有效數(shù)據(jù);但為了避免殘留數(shù)據(jù)的偏移地址信息,這里還是執(zhí)行了步驟S408,進(jìn)行了該thick LUN的第二標(biāo)識(shí)的判斷。若陣列控制器2021保存的該thick LUN的標(biāo)識(shí)記錄在待讀取的數(shù)據(jù)對(duì)應(yīng)的第二信息字段中,則確定讀取的數(shù)據(jù)是該thick LUN寫入的有效數(shù)據(jù);否則說明讀取數(shù)據(jù)時(shí),傳入的讀取數(shù)據(jù)的數(shù)據(jù)偏移與殘留的偏移地址信息恰好相同,此時(shí),讀取的數(shù)據(jù)也是未發(fā)生寫入的數(shù)據(jù),所以向用戶主機(jī)返回零數(shù)據(jù)。
[0100]實(shí)施例二中,通過判斷陣列控制器的指定thick LUN的標(biāo)識(shí)是否記錄在指定thickLUN上讀取的數(shù)據(jù)對(duì)應(yīng)的第二信息字段中,確定讀取的數(shù)據(jù)是之前的殘留數(shù)據(jù),然后直接向用戶主機(jī)返回零數(shù)據(jù)即可,無需通過在數(shù)據(jù)空間寫入零數(shù)據(jù),在對(duì)應(yīng)的DIF區(qū)域?qū)懭霕?biāo)識(shí)信息來標(biāo)識(shí)數(shù)據(jù)是未發(fā)生寫入的,減少了硬盤的1數(shù)目和時(shí)間開銷。
[0101]實(shí)施例三、創(chuàng)建thick LUN和向thick LUN寫入數(shù)據(jù)
[0102]在實(shí)施例二的基礎(chǔ)上,進(jìn)一步地,在步驟S401之前,可選地,如圖5所示,還包括如下步驟:
[0103]S501:陣列控制器接收創(chuàng)建該thick LUN的第二命令,該第二命令中攜帶上述第一標(biāo)識(shí),以及要?jiǎng)?chuàng)建的該thick LUN的容量信息;
[0104]S502:陣列控制器創(chuàng)建該thick LUN,該thick LUN的容量為上述容量信息指示的容量,保存該thick LUN的上述第一標(biāo)識(shí),生成并保存該thick LUN的第二標(biāo)識(shí)。
[0105]可選地,實(shí)施例三也可應(yīng)用于圖2所示的數(shù)據(jù)系統(tǒng),此時(shí),實(shí)施例三中的各步驟可由圖2中的陣列控制器2021執(zhí)行。
[0106]可選地,用戶主機(jī)主動(dòng)發(fā)起創(chuàng)建該thick LUN的命令,陣列控制器收到該命令后,生成一個(gè)16位的唯一標(biāo)識(shí)(Identificat1n, ID)-即該thick LUN的第二標(biāo)識(shí),并保存在自身的元數(shù)據(jù)中。一種簡單可行的生成thick LUN的第二標(biāo)識(shí)的方法是:每次成功創(chuàng)建一個(gè)thick LUN,第二標(biāo)識(shí)計(jì)數(shù)增加I。可選地,為了工程使用更方便,可預(yù)留前面幾個(gè)數(shù)作為特殊用途。16位計(jì)數(shù)可以表示65536次創(chuàng)建,去除少量預(yù)留值,也能有效記錄約6萬次創(chuàng)建,這在實(shí)際中已經(jīng)滿足使用要求。當(dāng)計(jì)數(shù)器沒有到達(dá)翻轉(zhuǎn)前,都返回成功,并給出該標(biāo)識(shí)的計(jì)數(shù)值;當(dāng)計(jì)數(shù)器已經(jīng)達(dá)到翻轉(zhuǎn)條件則不再增加計(jì)數(shù),而返回錯(cuò)誤和無效的計(jì)數(shù)值??蛇x地,設(shè)定最大在計(jì)數(shù)為65530,設(shè)定65535為無效標(biāo)識(shí)值。
[0107]可選地,在步驟S502之后,還包括:
[0108]S503:陣列控制器接收向該thick LUN寫入數(shù)據(jù)的第三命令,第三命令中攜帶上述第一標(biāo)識(shí)、待寫入數(shù)據(jù)和待寫入數(shù)據(jù)在該thick LUN上的第三偏移地址信息;
[0109]S504:陣列控制器在該thick LUN中寫入待寫入的數(shù)據(jù),根據(jù)上述第三偏移地址信息,在待寫入數(shù)據(jù)對(duì)應(yīng)的第一信息字段中,記錄待寫入數(shù)據(jù)的第二偏移地址信息,并將該thick LUN的第二標(biāo)識(shí),記錄在上述第二信息字段中。
[0110]當(dāng)該thick LUN進(jìn)行數(shù)據(jù)寫入時(shí),陣列控制器可按照現(xiàn)有方法生成DIF區(qū)域的校驗(yàn)和、Ref標(biāo)簽,可選地,陣列控制器將保存的該thick LUN的第二標(biāo)識(shí)標(biāo)識(shí)填在該thickLUN中的寫入的數(shù)據(jù)對(duì)應(yīng)的DIF區(qū)域的應(yīng)用標(biāo)簽中。
[0111]步驟S504中,根據(jù)上述第三偏移地址信息,在待寫入數(shù)據(jù)對(duì)應(yīng)的第一信息字段中,記錄待寫入數(shù)據(jù)的第二偏移地址信息,可通過如下方式實(shí)現(xiàn):
[0112]陣列控制器按照第三命令中的第三偏移地址信息,確定在該thick LUN上寫入數(shù)據(jù)的位置,并取該第三偏移地址信息的后4字節(jié),作為第二偏移地址信息,寫入第一個(gè)512字節(jié)數(shù)據(jù)對(duì)應(yīng)的DIF區(qū)域;將第三偏移地址信息的后4個(gè)字節(jié)加上512字節(jié),作為第二偏移地址信息,寫入第二個(gè)512字節(jié)數(shù)據(jù)對(duì)應(yīng)的DIF區(qū)域;以此類推。在寫入數(shù)據(jù)的每一個(gè)512字節(jié)對(duì)應(yīng)的DIF區(qū)域中,均寫入第二偏移地址信息。
[0113]當(dāng)實(shí)施例三應(yīng)用于圖2所示的數(shù)據(jù)系統(tǒng)中時(shí),DIF區(qū)域中的數(shù)據(jù)可由用戶主機(jī)201生成,也可由陣列控制器2021生成。
[0114]實(shí)施例三中,16位的thick LUN的第二標(biāo)識(shí),能夠表示6萬多個(gè)thick LUN的創(chuàng)建,能夠滿足絕大部分的應(yīng)用場景。但為了保證該標(biāo)識(shí)的唯一性,需要對(duì)標(biāo)識(shí)溢出進(jìn)行專門處理。當(dāng)陣列控制器檢測到標(biāo)識(shí)即將溢出時(shí),比如:已經(jīng)達(dá)到標(biāo)識(shí)計(jì)數(shù)上限,則不再增加,返回溢出標(biāo)志。對(duì)于溢出后的處理,直接采用現(xiàn)有的寫零方法來進(jìn)行處理,即在創(chuàng)建LUN空間之后,或在刪除LUN空間之后,在對(duì)應(yīng)的數(shù)據(jù)空間寫入零數(shù)據(jù),在對(duì)應(yīng)的DIF區(qū)域?qū)懭胩厥獾臉?biāo)志信息。
[0115]目前,DIF技術(shù)的TlO標(biāo)準(zhǔn)中,沒有對(duì)應(yīng)用標(biāo)簽進(jìn)行數(shù)據(jù)保護(hù)。當(dāng)在本發(fā)明實(shí)施例中使用該應(yīng)用標(biāo)簽存放thick LUN的標(biāo)識(shí)時(shí),如果該部分?jǐn)?shù)據(jù)被破壞,則會(huì)錯(cuò)誤地返回用戶10。為了保護(hù)該部分?jǐn)?shù)據(jù)的有效性。在向硬盤寫入數(shù)據(jù)時(shí),將該部分?jǐn)?shù)據(jù)的thick LUN的標(biāo)識(shí)和校驗(yàn)和進(jìn)行一次異或,將異或運(yùn)算后的校驗(yàn)和寫入DIF區(qū)域;在訪問該thick LUN時(shí),用讀取的DIF區(qū)域應(yīng)用標(biāo)簽中的thick LUN的標(biāo)識(shí)對(duì)DIF區(qū)域的校驗(yàn)和再進(jìn)行一次異或運(yùn)算,即恢復(fù)了原來的校驗(yàn)和,再和讀取的數(shù)據(jù)的校驗(yàn)和進(jìn)行比較,比較時(shí),數(shù)據(jù)本身、校驗(yàn)和或者應(yīng)用標(biāo)簽中的thick LUN的標(biāo)識(shí)任何一個(gè)發(fā)生錯(cuò)誤,CRC校驗(yàn)都無法通過,將返回?cái)?shù)據(jù)校驗(yàn)錯(cuò)誤。
[0116]這樣就能及時(shí)發(fā)現(xiàn)數(shù)據(jù)被破壞的情況,并且保證thick LUN標(biāo)識(shí)的正確性。在和外部對(duì)接T1標(biāo)準(zhǔn)時(shí),可以將DIF區(qū)域的校驗(yàn)和與應(yīng)用標(biāo)簽中的thick LUN標(biāo)識(shí)再進(jìn)行一次異或,即可恢復(fù)外部標(biāo)準(zhǔn)。
[0117]以上,對(duì)本發(fā)明實(shí)施例二殘留數(shù)據(jù)判斷的方法,以及本發(fā)明實(shí)施例三的創(chuàng)建thickLUN和向thick LUN寫入數(shù)據(jù)的方法進(jìn)行了介紹。下面,通過實(shí)施例四,給出當(dāng)實(shí)施例二應(yīng)用于本發(fā)明圖2所示的數(shù)據(jù)系統(tǒng)時(shí),從thick LUN上讀取數(shù)據(jù)的處理流程;通過實(shí)施例五,給出當(dāng)實(shí)施例三應(yīng)用于本地發(fā)明圖2所示的數(shù)據(jù)系統(tǒng)時(shí),創(chuàng)建thick LUN和向thick LUN寫入數(shù)據(jù)的處理流程。
[0118]實(shí)施例四
[0119]如圖6所示,實(shí)施例四包括如下步驟:
[0120]S601:用戶主機(jī)發(fā)送數(shù)據(jù)讀取命令,命令中指定訪問的thick LUN和偏移地址;
[0121]S602:陣列控制器根據(jù)步驟S601中收到的命令,查找數(shù)據(jù)存放位置;
[0122]S603:陣列控制器向硬盤3022發(fā)送數(shù)據(jù)讀取命令;
[0123]S604:硬盤3022向陣列控制器返回讀取的數(shù)據(jù);
[0124]S605:陣列控制器進(jìn)行DIF數(shù)據(jù)校驗(yàn);
[0125]S606:陣列控制器判斷LBA是否正確;若正確,則執(zhí)行步驟S607 ;否則執(zhí)行步驟S610 ;
[0126]S607:陣列控制器判斷自身記錄的thick LUN的標(biāo)識(shí)是否記錄在該thick LUN上、讀取的數(shù)據(jù)對(duì)應(yīng)的DIF區(qū)域中的應(yīng)用標(biāo)簽中;若是,則執(zhí)行步驟S608,否則,執(zhí)行步驟S609 ;
[0127]S608:向用戶主機(jī)返回讀取的數(shù)據(jù);
[0128]S609:向用戶主機(jī)返回零數(shù)據(jù);
[0129]S610:陣列控制器判斷保存的該thick LUN的第二標(biāo)識(shí)是否記錄在該thick LUN中、讀取的數(shù)據(jù)對(duì)應(yīng)的DIF區(qū)域中的應(yīng)用標(biāo)簽中;若是,則執(zhí)行步驟S611,否則,執(zhí)行步驟S613 ;
[0130]S611:確定數(shù)據(jù)發(fā)生指向錯(cuò)誤;
[0131]S612:向用戶主機(jī)返回LBA錯(cuò)誤信息;
[0132]S613:確定讀取的數(shù)據(jù)為殘留數(shù)據(jù);
[0133]S614:向用戶主機(jī)返回零數(shù)據(jù)。
[0134]實(shí)施例五
[0135]如圖7所示,實(shí)施例五包括如下步驟:
[0136]S701:用戶主機(jī)向陣列控制器發(fā)送創(chuàng)建thick LUN的命令;
[0137]S702:陣列控制器生成保存thick LUN的第二標(biāo)識(shí);
[0138]S703:陣列控制器完成thick LUN的創(chuàng)建;
[0139]S704:陣列控制器向用戶主機(jī)返回thick LUN創(chuàng)建成功的消息;
[0140]S705:用戶主機(jī)向陣列控制器發(fā)送在thick LUN上寫入數(shù)據(jù)的命令;
[0141]S706:陣列控制器生成DIF數(shù)據(jù),在DIF區(qū)域的應(yīng)用標(biāo)簽中寫入該thick LUN的第二標(biāo)識(shí);
[0142]S707:陣列控制器將帶有DIF區(qū)域的數(shù)據(jù)寫入硬盤3022 ;
[0143]S708:硬盤3022向陣列控制器返回寫入成功消息;
[0144]S709:陣列控制器向用戶主機(jī)返回?cái)?shù)據(jù)寫入成功消息。
[0145]實(shí)施例五中,步驟S701?步驟S704創(chuàng)建thick LUN的過程中的用戶主機(jī),與步驟S705?步驟S709向thick LUN寫入數(shù)據(jù)的用戶主機(jī)可以為同一用戶主機(jī),也可為不同用戶主機(jī)。
[0146]綜上,本發(fā)明實(shí)施例提供的數(shù)據(jù)處理的方法、陣列控制器和陣列中,thick LUN除了具有一個(gè)與用戶主機(jī)交互時(shí)使用的第一標(biāo)識(shí)之外,還具有一個(gè)內(nèi)部的第二標(biāo)識(shí),該標(biāo)識(shí)由本發(fā)明實(shí)施例提供的陣列控制器保存,通過對(duì)該第二標(biāo)識(shí)進(jìn)行判斷,即可確定讀取的數(shù)據(jù)是之前的殘留數(shù)據(jù),然后直接向用戶主機(jī)返回零數(shù)據(jù)。無需在創(chuàng)建thick LUN之后,以及在刪除thick LUN之后,在對(duì)應(yīng)的數(shù)據(jù)空間寫入零數(shù)據(jù),在對(duì)應(yīng)的DIF區(qū)域?qū)懭胩厥獾臉?biāo)志信息,避免了額外的1寫入,節(jié)省了時(shí)間開銷。
[0147]本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
[0148]本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序命令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序命令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的命令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
[0149]這些計(jì)算機(jī)程序命令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的命令產(chǎn)生包括命令裝置的制造品,該命令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
[0150]這些計(jì)算機(jī)程序命令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的命令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
[0151]盡管已描述了本發(fā)明的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本發(fā)明范圍的所有變更和修改。
[0152]顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
【權(quán)利要求】
1.一種陣列控制器,其特征在于,包括: 接口,用于接收用戶主機(jī)發(fā)送的讀取數(shù)據(jù)的第一命令,所述第一命令攜帶胖邏輯單元號(hào)thick LUN的第一標(biāo)識(shí)和第一偏移地址信息; 處理器,用于根據(jù)所述第一標(biāo)識(shí),確定所述用戶主機(jī)待訪問的thick LUN ;從所述確定出的thick LUN中,讀取所述第一命令待讀取的數(shù)據(jù);若所述待讀取的數(shù)據(jù)對(duì)應(yīng)的第一信息字段中記錄的第二偏移地址信息,與所述第一命令中的所述第一偏移地址信息不一致,且所述陣列控制器保存的所述用戶主機(jī)要訪問的所述thick LUN的第二標(biāo)識(shí),沒有記錄在所述待讀取的數(shù)據(jù)對(duì)應(yīng)的第二信息字段中,則確定所述待讀取的數(shù)據(jù)為殘留數(shù)據(jù),通過所述接口,向所述用戶主機(jī)返回零數(shù)據(jù),其中,所述第一信息字段為所述thick LUN中的用于記錄數(shù)據(jù)的所述第二偏移地址信息的字段;所述第二信息字段為所述thick LUN中的用于記錄所述thick LUN的第二標(biāo)識(shí)的字段。
2.如權(quán)利要求1所述的陣列控制器,其特征在于,所述處理器還用于: 若所述待讀取的數(shù)據(jù)對(duì)應(yīng)的第一信息字段中記錄的所述第二偏移地址信息,與所述第一命令中的所述第一偏移地址信息不一致,但所述陣列控制器保存的所述thick LUN的所述第二標(biāo)識(shí),記錄在所述待讀取的數(shù)據(jù)對(duì)應(yīng)的所述第二信息字段中,則 確定所述待讀取的數(shù)據(jù)發(fā)生指向錯(cuò)誤,通過所述接口,向所述用戶主機(jī)返回地址校驗(yàn)錯(cuò)誤信息。
3.如權(quán)利要求1所述的陣列控制器,其特征在于,所述處理器還用于: 若所述待讀取的數(shù)據(jù)對(duì)應(yīng)的第一信息字段中記錄的所述第二偏移地址信息,與所述第一命令中的所述第一偏移地址信息一致,且所述陣列控制器保存的所述thick LUN的所述第二標(biāo)識(shí),記錄在所述待讀取的數(shù)據(jù)對(duì)應(yīng)的第二信息字段中,則 確定通過所述接口,向所述用戶主機(jī)返回所述待讀取的數(shù)據(jù)。
4.如權(quán)利要求1所述的陣列控制器,其特征在于,所述處理器還用于: 若所述待讀取的數(shù)據(jù)對(duì)應(yīng)的第一信息字段中記錄的所述第二偏移地址信息,與所述第一命令中的所述第一偏移地址信息一致,但所述陣列控制器保存的所述thick LUN的所述第二標(biāo)識(shí),沒有記錄在所述待讀取的數(shù)據(jù)對(duì)應(yīng)的所述第二信息字段中,則 確定通過所述接口,向所述用戶主機(jī)返回零數(shù)據(jù)。
5.如權(quán)利要求1?4任一項(xiàng)所述的陣列控制器,其特征在于, 所述接口還用于:接收創(chuàng)建所述thick LUN的第二命令,所述第二命令中攜帶所述第一標(biāo)識(shí)、以及要?jiǎng)?chuàng)建的所述thick LUN的容量信息; 所述處理器還用于:創(chuàng)建所述thick LUN,所述thick LUN的容量為所述容量信息指示的容量,保存所述thick LUN的所述第一標(biāo)識(shí),生成并保存所述thick LUN的第二標(biāo)識(shí)。
6.如權(quán)利要求5所述的陣列控制器,其特征在于, 所述接口還用于:接收向所述thick LUN寫入數(shù)據(jù)的第三命令,所述第三命令中攜帶所述第一標(biāo)識(shí)、待寫入數(shù)據(jù)和所述待寫入數(shù)據(jù)在所述thick LUN上的第三偏移地址信息; 所述陣列控制器在所述thick LUN上寫入所述待寫入數(shù)據(jù),根據(jù)所述第三偏移地址信息,在所述待寫入數(shù)據(jù)對(duì)應(yīng)的第一信息字段中,記錄所述待寫入數(shù)據(jù)的所述第二偏移地址信息,并將所述thick LUN的第二標(biāo)識(shí),記錄在所述第二信息字段中。
7.—種陣列,其特征在于,包括:硬盤和權(quán)利要求1?6任一項(xiàng)所述的陣列控制器,其中所述thick LUN處于所述硬盤上。
8.一種數(shù)據(jù)處理的方法,所述方法應(yīng)用于陣列控制器中,其特征在于,所述方法包括: 所述陣列控制器接收用戶主機(jī)發(fā)送的讀取數(shù)據(jù)的第一命令,所述第一命令攜帶胖邏輯單兀號(hào)thick LUN的第一標(biāo)識(shí)和第一偏移地址信息; 所述陣列控制器根據(jù)所述第一標(biāo)識(shí),確定所述用戶主機(jī)待訪問的thickLUN ; 所述陣列控制器從所述確定出的thick LUN中,讀取所述第一命令待讀取的數(shù)據(jù);若所述待讀取的數(shù)據(jù)對(duì)應(yīng)的第一信息字段中記錄的第二偏移地址信息,與所述第一命令中的所述第一偏移地址信息不一致,且所述陣列控制器保存的所述thick LUN的第二標(biāo)識(shí),沒有記錄在所述待讀取的數(shù)據(jù)對(duì)應(yīng)的第二信息字段中,則所述陣列控制器確定所述待讀取的數(shù)據(jù)為殘留數(shù)據(jù),向所述用戶主機(jī)返回零數(shù)據(jù),其中,所述第一信息字段為所述thick LUN中的用于記錄數(shù)據(jù)的所述第二偏移地址信息的字段;所述第二信息字段為所述thick LUN中的用于記錄所述thick LUN的第二標(biāo)識(shí)的字段。
9.如權(quán)利要求8所述的方法,其特征在于,還包括: 若所述待讀取的數(shù)據(jù)對(duì)應(yīng)的第一信息字段中記錄的所述第二偏移地址信息,與所述第一命令中的所述第一偏移地址信息不一致,但所述陣列控制器保存的所述thick LUN的所述第二標(biāo)識(shí),記錄在所述待讀取的數(shù)據(jù)對(duì)應(yīng)的所述第二信息字段中,則 所述陣列控制器確定所述待讀取的數(shù)據(jù)發(fā)生指向錯(cuò)誤,向所述用戶主機(jī)返回地址校驗(yàn)錯(cuò)誤信息。
10.如權(quán)利要求8所述的方法,其特征在于,還包括: 若所述待讀取的數(shù)據(jù)對(duì)應(yīng)的第一信息字段中記錄的所述第二偏移地址信息,與所述第一命令中的所述第一偏移地址信息一致,且所述陣列控制器保存的所述thick LUN的所述第二標(biāo)識(shí),記錄在所述待讀取的數(shù)據(jù)對(duì)應(yīng)的第二信息字段中,則所述陣列控制器向所述用戶主機(jī)返回所述待讀取的數(shù)據(jù)。
11.如權(quán)利要求8所述的方法,其特征在于,還包括: 若所述待讀取的數(shù)據(jù)對(duì)應(yīng)的第一信息字段中記錄的所述第二偏移地址信息,與所述第一命令中的所述第一偏移地址信息一致,但所述陣列控制器保存的所述thick LUN的所述第二標(biāo)識(shí),沒有記錄在所述待讀取的數(shù)據(jù)對(duì)應(yīng)的所述第二信息字段中,則所述陣列控制器向所述用戶主機(jī)返回零數(shù)據(jù)。
12.如權(quán)利要求8?11任一項(xiàng)所述的方法,其特征在于,還包括: 所述陣列控制器接收創(chuàng)建所述thick LUN的第二命令,所述第二命令中攜帶所述第一標(biāo)識(shí)、以及要?jiǎng)?chuàng)建的所述thick LUN的容量信息; 所述thick LUN陣列控制器創(chuàng)建所述thick LUN,所述thick LUN的容量為所述容量信息指示的容量,保存所述thick LUN的所述第一標(biāo)識(shí),生成并保存所述LUN的第二標(biāo)識(shí)。
13.如權(quán)利要求12所述的方法,其特征在于,在生成LUN并保存所述第二標(biāo)識(shí)之后,還包括: 所述陣列控制器接收向所述thick LUN寫入數(shù)據(jù)的第三命令,所述第三命令中攜帶所述第一標(biāo)識(shí)、待寫入數(shù)據(jù)和所述待寫入數(shù)據(jù)在所述thick LUN上的第三偏移地址信息; 所述陣列控制器在所述thick LUN上寫入所述待寫入數(shù)據(jù),根據(jù)所述第三偏移地址信息,在所述待寫入數(shù)據(jù)對(duì)應(yīng)的第一信息字段中,記錄所述待寫入數(shù)據(jù)的所述第二偏移地址信息,并將所述thick LUN的第二標(biāo)識(shí),記錄在所述第二信息字段中。
【文檔編號(hào)】G06F21/64GK104182701SQ201410404926
【公開日】2014年12月3日 申請(qǐng)日期:2014年8月15日 優(yōu)先權(quán)日:2014年8月15日
【發(fā)明者】蒲貴友 申請(qǐng)人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1