两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

訪問數(shù)據(jù)的方法及裝置制造方法

文檔序號:6535171閱讀:273來源:國知局
訪問數(shù)據(jù)的方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種訪問數(shù)據(jù)的方法及裝置,屬于信息【技術(shù)領(lǐng)域】。方法包括:獲取攜帶有讀取地址的第一磁盤組的數(shù)據(jù)讀請求;根據(jù)讀取地址確定第一磁盤組的第一條帶位置范圍;依次讀取第一條帶位置范圍內(nèi)的每個第一條帶上的數(shù)據(jù);將未成功讀取的第一條帶的數(shù)據(jù)讀取結(jié)果設(shè)置為預(yù)設(shè)的填充數(shù)據(jù),并繼續(xù)讀取下一個第一條帶上的數(shù)據(jù),直至每個第一條帶上的數(shù)據(jù)全部讀取完畢,返回各個第一條帶的數(shù)據(jù)讀取結(jié)果。本發(fā)明通過將未成功讀取的第一條帶的數(shù)據(jù)讀取結(jié)果設(shè)置為預(yù)設(shè)的填充數(shù)據(jù),并繼續(xù)讀取下一個第一條帶上的數(shù)據(jù),直至每個第一條帶上的數(shù)據(jù)全部讀取完畢,返回各個第一條帶的數(shù)據(jù)讀取結(jié)果,從而實(shí)現(xiàn)未成功讀取數(shù)據(jù)時,減少數(shù)據(jù)的丟失和訪問的中斷時間。
【專利說明】訪問數(shù)據(jù)的方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及信息【技術(shù)領(lǐng)域】,特別涉及一種訪問數(shù)據(jù)的方法及裝置。
【背景技術(shù)】
[0002]隨著信息技術(shù)的飛速發(fā)展,依靠設(shè)備存儲數(shù)據(jù)的方式得到廣泛的應(yīng)用。但是設(shè)備中的存儲區(qū)域存在損壞的風(fēng)險,致使存儲的數(shù)據(jù)丟失,這給人們帶來不便,甚至是難以挽回的損失。由于不同領(lǐng)域?qū)?shù)據(jù)可靠性的要求不同,而對于數(shù)據(jù)可靠性要求不高的應(yīng)用場景,存儲區(qū)域中殘存的數(shù)據(jù)也是有價值的。因此,如何在存儲區(qū)域損壞的情況下,減少數(shù)據(jù)的丟失,從而有效地訪問數(shù)據(jù)是人們需要考慮的問題。
[0003]現(xiàn)有技術(shù)在訪問數(shù)據(jù)時會使用RAID (Redundant Array of Independent Disks,獨(dú)立磁盤冗余陣列)技術(shù),RAID是將多個磁盤組成一個磁盤組,每個磁盤又分為多個條帶;數(shù)據(jù)被劃分為多個數(shù)據(jù)塊,分別存儲在多個磁盤中的不同條帶中,每個條帶存儲一個數(shù)據(jù)塊。以RAID5為例,RAID5包括一個磁盤組,該磁盤組包括n+1個磁盤,η個磁盤用于存儲訪問的數(shù)據(jù),I個磁盤用于存儲冗余數(shù)據(jù)。當(dāng)磁盤組中一個磁盤發(fā)生故障時,通過磁盤組中其他磁盤的數(shù)據(jù)可以計算出故障磁盤中的未知數(shù)據(jù),進(jìn)而訪問全部數(shù)據(jù)。當(dāng)磁盤組中多于一個磁盤發(fā)生故障時,通過磁盤組中其他磁盤的數(shù)據(jù)無法計算出故障磁盤中的未知數(shù)據(jù),磁盤組會進(jìn)入失效狀態(tài),并且無法訪問磁盤組中的數(shù)據(jù),在這種情況下可以采用RAID內(nèi)置的方法或者第三方服務(wù)來訪問磁盤組中的殘存數(shù)據(jù),該殘存數(shù)據(jù)為磁盤組中除故障磁盤外的其他磁盤的數(shù)據(jù)。
[0004]在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:
[0005]當(dāng)多于一個磁盤發(fā)生故障時,如果不采取其它措施,則磁盤組中的數(shù)據(jù)將全部丟失,不能有效地訪問數(shù)據(jù)。另外,即使采用RAID內(nèi)置和第三方服務(wù)的方式來訪問數(shù)據(jù),但RAID內(nèi)置和第三方服務(wù)沒有實(shí)時性,不能方便、快捷地讀取數(shù)據(jù),還會導(dǎo)致業(yè)務(wù)長時間中斷,并且第三方介入不能保證數(shù)據(jù)的保密性。

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

[0006]為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實(shí)施例提供了一種訪問數(shù)據(jù)的方法及裝置。所述技術(shù)方案如下:
[0007]—方面,提供了一種訪問數(shù)據(jù)的方法,所述方法應(yīng)用于獨(dú)立磁盤冗余陣列,所述獨(dú)立磁盤冗余陣列至少包括第一磁盤組,所述第一磁盤組包括至少一個磁盤,每個磁盤預(yù)先被劃分為至少一個條帶,所述方法包括:
[0008]獲取第一磁盤組的數(shù)據(jù)讀請求,所述數(shù)據(jù)讀請求中攜帶有讀取地址;
[0009]根據(jù)所述讀取地址確定所述第一磁盤組的第一條帶位置范圍,所述第一條帶位置范圍內(nèi)包括至少一個第一條帶;
[0010]依次讀取所述第一條帶位置范圍內(nèi)的每個第一條帶上的數(shù)據(jù);
[0011]如果當(dāng)前的第一條帶上的數(shù)據(jù)未成功讀取,則將當(dāng)前的第一條帶的數(shù)據(jù)讀取結(jié)果設(shè)置為預(yù)設(shè)的填充數(shù)據(jù),并繼續(xù)讀取下一個第一條帶上的數(shù)據(jù),直至每個第一條帶上的數(shù)據(jù)全部讀取完畢,返回各個第一條帶的數(shù)據(jù)讀取結(jié)果。
[0012]結(jié)合第一方面,在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述獨(dú)立磁盤冗余陣列還包括第二磁盤組,所述方法還包括:
[0013]獲取所述第一磁盤組的數(shù)據(jù)寫請求,所述數(shù)據(jù)寫請求中攜帶有寫入地址;
[0014]根據(jù)所述寫入地址確定所述第一磁盤組的第二條帶位置范圍,所述第二條帶位置范圍內(nèi)包括至少一個第二條帶;
[0015]依次向所述第二條帶位置范圍內(nèi)的每個第二條帶寫入數(shù)據(jù);
[0016]如果當(dāng)前的第二條帶上的數(shù)據(jù)未成功寫入,則掃描所述第一磁盤組的狀態(tài),所述第一磁盤組的狀態(tài)為只讀狀態(tài)、正常讀寫狀態(tài)和降級狀態(tài)中的一種;
[0017]如果所述第一磁盤組的狀態(tài)為只讀狀態(tài),則在所述第二磁盤組中對應(yīng)的條帶上繼續(xù)寫入數(shù)據(jù),直至將數(shù)據(jù)全部寫入完畢。
[0018]結(jié)合第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第二種可能的實(shí)現(xiàn)方式中,所述掃描所述第一磁盤組的狀態(tài)之后,還包括:
[0019]如果所述第一磁盤組的狀態(tài)為降級狀態(tài),則響應(yīng)告警。
[0020]結(jié)合第一方面至第一方面的第一種至第二種可能的實(shí)現(xiàn)方式,在第一方面的第三種可能的實(shí)現(xiàn)方式中,所述方法還包括:
[0021]檢測所述第一磁盤組中各個磁盤的狀態(tài)是否發(fā)生改變,所述磁盤的狀態(tài)為新盤狀態(tài)、正常狀態(tài)和故障狀態(tài)中的一種;
[0022]如果所述第一磁盤組中的第一磁盤的狀態(tài)由故障狀態(tài)變?yōu)樾卤P狀態(tài),則對所述第一磁盤進(jìn)行格式化,并對格式化后的第一磁盤進(jìn)行條帶劃分,將劃分得到的每個條帶的狀態(tài)設(shè)置為未寫入狀態(tài)。
[0023]結(jié)合第一方面的第三種可能的實(shí)現(xiàn)方式,在第一方面的第四種可能的實(shí)現(xiàn)方式中,所述將劃分得到的每個條帶的狀態(tài)設(shè)置為未寫入狀態(tài)之后,還包括:
[0024]在讀取未寫入狀態(tài)的條帶上的數(shù)據(jù)時,將未寫入狀態(tài)的條帶的數(shù)據(jù)讀取結(jié)果設(shè)置為預(yù)設(shè)的填充數(shù)據(jù)。
[0025]結(jié)合第一方面至第一方面的第一種至第四種可能的實(shí)現(xiàn)方式,在第一方面的第五種可能的實(shí)現(xiàn)方式中,所述方法還包括:
[0026]檢測所述第一磁盤組的當(dāng)前狀態(tài)是否為只讀狀態(tài),所述只讀狀態(tài)為所述第一磁盤組中至少兩個磁盤的狀態(tài)為故障狀態(tài);
[0027]如果所述第一磁盤組的當(dāng)前狀態(tài)為非只讀狀態(tài),則確定上次檢測到的所述第一磁盤組的狀態(tài)是否為只讀狀態(tài);
[0028]如果上次檢測到的所述第一磁盤組的狀態(tài)為只讀狀態(tài),則將所述第一磁盤組的狀態(tài)設(shè)置為非只讀狀態(tài),所述非只讀狀態(tài)包括降級狀態(tài)和正常讀寫狀態(tài)。
[0029]結(jié)合第一方面的第五種可能的實(shí)現(xiàn)方式,在第一方面的第六種可能的實(shí)現(xiàn)方式中,所述檢測所述第一磁盤組的當(dāng)前狀態(tài)是否為只讀狀態(tài)之后,還包括:
[0030]如果所述第一磁盤組的當(dāng)前狀態(tài)為只讀狀態(tài),則確定上次檢測到的所述第一磁盤組的狀態(tài)是否為非只讀狀態(tài);
[0031]如果上次檢測到的所述第一磁盤組的狀態(tài)為非只讀狀態(tài),則將所述第一磁盤組的狀態(tài)設(shè)置為只讀狀態(tài)。
[0032]第二方面,提供了一種訪問數(shù)據(jù)的裝置,所述裝置應(yīng)用于獨(dú)立磁盤冗余陣列,所述獨(dú)立磁盤冗余陣列至少包括第一磁盤組,所述第一磁盤組包括至少一個磁盤,每個磁盤預(yù)先被劃分為至少一個條帶,所述裝置包括:
[0033]第一獲取模塊,用于獲取第一磁盤組的數(shù)據(jù)讀請求,所述數(shù)據(jù)讀請求中攜帶有讀取地址;
[0034]第一確定模塊,用于根據(jù)所述讀取地址確定所述第一磁盤組的第一條帶位置范圍,所述第一條帶位置范圍內(nèi)包括至少一個第一條帶;
[0035]讀取模塊,用于依次讀取所述第一條帶位置范圍內(nèi)的每個第一條帶上的數(shù)據(jù);
[0036]第一設(shè)置模塊,用于在當(dāng)前的第一條帶上的數(shù)據(jù)未成功讀取時,將當(dāng)前的第一條帶的數(shù)據(jù)讀取結(jié)果設(shè)置為預(yù)設(shè)的填充數(shù)據(jù),并繼續(xù)讀取下一個第一條帶上的數(shù)據(jù),直至每個第一條帶上的數(shù)據(jù)全部讀取完畢;
[0037]返回模塊,用于返回各個第一條帶的數(shù)據(jù)讀取結(jié)果。
[0038]結(jié)合第二方面,在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述獨(dú)立磁盤冗余陣列還包括第二磁盤組,所述裝置還包括:
[0039]第二獲取模塊,用于獲取所述第一磁盤組的數(shù)據(jù)寫請求,所述數(shù)據(jù)寫請求中攜帶有寫入地址;
[0040]第二確定模塊,用于根據(jù)所述寫入地址確定所述第一磁盤組的第二條帶位置范圍,所述第二條帶位置范圍內(nèi)包括至少一個第二條帶;
[0041]第一寫入模塊,用于依次向所述第二條帶位置范圍內(nèi)的每個第二條帶寫入數(shù)據(jù);
[0042]掃描模塊,用于在當(dāng)前的第二條帶上的數(shù)據(jù)未成功寫入時,掃描所述第一磁盤組的狀態(tài),所述第一磁盤組的狀態(tài)為只讀狀態(tài)、正常讀寫狀態(tài)和降級狀態(tài)中的一種;
[0043]第二寫入模塊,用于當(dāng)所述第一磁盤組的狀態(tài)為只讀狀態(tài)時,在所述第二磁盤組中對應(yīng)的條帶上繼續(xù)寫入數(shù)據(jù),直至將數(shù)據(jù)全部寫入完畢。
[0044]結(jié)合第二方面的第一種可能的實(shí)現(xiàn)方式,在第二方面的第二種可能的實(shí)現(xiàn)方式中,所述裝置,還包括:
[0045]響應(yīng)模塊,用于當(dāng)所述第一磁盤組的狀態(tài)為降級狀態(tài)時,響應(yīng)告警。
[0046]結(jié)合第二方面至第二方面的第一種至第二種可能的實(shí)現(xiàn)方式,在第二方面的第三種可能的實(shí)現(xiàn)方式中,所述裝置,還包括:
[0047]第一檢測模塊,用于檢測所述第一磁盤組中各個磁盤的狀態(tài)是否發(fā)生改變,所述磁盤的狀態(tài)為新盤狀態(tài)、正常狀態(tài)和故障狀態(tài)中的一種;
[0048]格式化模塊,用于當(dāng)所述第一磁盤組中的第一磁盤的狀態(tài)由故障狀態(tài)變?yōu)樾卤P狀態(tài)時,對所述第一磁盤進(jìn)行格式化;
[0049]劃分模塊,用于對格式化后的第一磁盤進(jìn)行條帶劃分;
[0050]第二設(shè)置模塊,用于將劃分得到的每個條帶的狀態(tài)設(shè)置為未寫入狀態(tài)。
[0051]結(jié)合第二方面的第三種可能的實(shí)現(xiàn)方式,在第二方面的第四種可能的實(shí)現(xiàn)方式中,所述第一設(shè)置模塊,還用于在讀取未寫入狀態(tài)的條帶上的數(shù)據(jù)時,將未寫入狀態(tài)的條帶的數(shù)據(jù)讀取結(jié)果設(shè)置為預(yù)設(shè)的填充數(shù)據(jù)。
[0052]結(jié)合第二方面至第二方面的第一種至第四種可能的實(shí)現(xiàn)方式,在第二方面的第五種可能的實(shí)現(xiàn)方式中,所述裝置還包括:
[0053]第二檢測模塊,用于檢測所述第一磁盤組的當(dāng)前狀態(tài)是否為只讀狀態(tài),所述只讀狀態(tài)為所述第一磁盤組中至少兩個磁盤的狀態(tài)為故障狀態(tài);
[0054]第三確定模塊,用于當(dāng)所述第一磁盤組的當(dāng)前狀態(tài)為非只讀狀態(tài)時,確定上次檢測到的所述第一磁盤組的狀態(tài)是否為只讀狀態(tài);
[0055]第三設(shè)置模塊,用于當(dāng)上次檢測到的所述第一磁盤組的狀態(tài)為只讀狀態(tài)時,將所述第一磁盤組的狀態(tài)設(shè)置為非只讀狀態(tài),所述非只讀狀態(tài)包括降級狀態(tài)和正常讀寫狀態(tài)。
[0056]結(jié)合第二方面的第五種可能的實(shí)現(xiàn)方式,在第二方面的第六種可能的實(shí)現(xiàn)方式中,所述裝置,還包括:
[0057]第四確定模塊,用于當(dāng)所述第一磁盤組的當(dāng)前狀態(tài)為只讀狀態(tài)時,確定上次檢測到的所述第一磁盤組的狀態(tài)是否為非只讀狀態(tài);
[0058]第四設(shè)置模塊,用于當(dāng)上次檢測到的所述第一磁盤組的狀態(tài)為非只讀狀態(tài)時,將所述第一磁盤組的狀態(tài)設(shè)置為只讀狀態(tài)。
[0059]本發(fā)明實(shí)施例提供的技術(shù)方案帶來的有益效果是:
[0060]將未成功讀取的第一條帶的數(shù)據(jù)讀取結(jié)果設(shè)置為預(yù)設(shè)的填充數(shù)據(jù),并繼續(xù)讀取下一個第一條帶上的數(shù)據(jù),直至每個第一條帶上的數(shù)據(jù)全部讀取完畢,返回各個第一條帶的數(shù)據(jù)讀取結(jié)果,從而實(shí)現(xiàn)未成功讀取數(shù)據(jù)時,減少數(shù)據(jù)的丟失和訪問的中斷時間。
【專利附圖】

【附圖說明】
[0061]為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0062]圖1是本發(fā)明實(shí)施例一提供的訪問數(shù)據(jù)的方法流程圖;
[0063]圖2是本發(fā)明實(shí)施例二提供的訪問數(shù)據(jù)的方法流程圖;
[0064]圖3是本發(fā)明實(shí)施例二提供的第一磁盤的結(jié)構(gòu)示意圖;
[0065]圖4是本發(fā)明實(shí)施例二提供的劃分的條帶的示意圖;
[0066]圖5是本發(fā)明實(shí)施例二提供的第一種第一磁盤組的結(jié)構(gòu)示意圖;
[0067]圖6是本發(fā)明實(shí)施例二提供的第二種第一磁盤組的結(jié)構(gòu)示意圖;
[0068]圖7是本發(fā)明實(shí)施例二提供的訪問數(shù)據(jù)的軟件的結(jié)構(gòu)示意圖;
[0069]圖8是本發(fā)明實(shí)施例二提供的軟件獨(dú)立磁盤冗余陣列的結(jié)構(gòu)示意圖;
[0070]圖9是本發(fā)明實(shí)施例二提供的訪問數(shù)據(jù)的硬件的結(jié)構(gòu)示意圖;
[0071]圖10是本發(fā)明實(shí)施例三提供的訪問數(shù)據(jù)的方法流程圖;
[0072]圖11是本發(fā)明實(shí)施例三提供的顯示界面的示意圖;
[0073]圖12是本發(fā)明實(shí)施例四提供的訪問數(shù)據(jù)的裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0074]為了訪問數(shù)據(jù),需要確定存儲數(shù)據(jù)的設(shè)備。確定存儲設(shè)備時需要考慮存儲設(shè)備的性能、可靠性和成本,而獨(dú)立磁盤冗余陣列在性能、可靠性和成本之間取得了比較好的平衡。因此,民用存儲設(shè)備大部分都采用了獨(dú)立磁盤冗余陣列技術(shù)來構(gòu)建存儲環(huán)境。
[0075]本發(fā)明實(shí)施例提供的訪問數(shù)據(jù)的方法,除了應(yīng)用于流媒體數(shù)據(jù)存儲的場景外,針對數(shù)據(jù)可靠性要求不高的應(yīng)用場景,例如純文本的存儲、互聯(lián)網(wǎng)緩存等場景,也可應(yīng)用本發(fā)明實(shí)施例提供的訪問數(shù)據(jù)的方法。
[0076]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。
[0077]實(shí)施例一
[0078]本發(fā)明實(shí)施例提供了一種訪問數(shù)據(jù)的方法,應(yīng)用于獨(dú)立磁盤冗余陣列,該獨(dú)立磁盤冗余陣列至少包括第一磁盤組,該第一磁盤組包括至少一個磁盤,每個磁盤預(yù)先被劃分為至少一個條帶,參見圖1,本實(shí)施例提供的方法流程包括:
[0079]101:獲取第一磁盤組的數(shù)據(jù)讀請求,數(shù)據(jù)讀請求中攜帶有讀取地址;
[0080]102:根據(jù)讀取地址確定第一磁盤組的第一條帶位置范圍,第一條帶位置范圍內(nèi)包括至少一個第一條帶;
[0081]103:依次讀取第一條帶位置范圍內(nèi)的每個第一條帶上的數(shù)據(jù);
[0082]104:如果當(dāng)前的第一條帶上的數(shù)據(jù)未成功讀取,則將當(dāng)前的第一條帶的數(shù)據(jù)讀取結(jié)果設(shè)置為預(yù)設(shè)的填充數(shù)據(jù),并繼續(xù)讀取下一個第一條帶上的數(shù)據(jù),直至每個第一條帶上的數(shù)據(jù)全部讀取完畢,返回各個第一條帶的數(shù)據(jù)讀取結(jié)果。
[0083]優(yōu)選地,獨(dú)立磁盤冗余陣列還包括第二磁盤組,方法還包括:
[0084]獲取第一磁盤組的數(shù)據(jù)寫請求,數(shù)據(jù)寫請求中攜帶有寫入地址;
[0085]根據(jù)寫入地址確定第一磁盤組的第二條帶位置范圍,第二條帶位置范圍內(nèi)包括至少一個第二條帶;
[0086]依次向第二條帶位置范圍內(nèi)的每個第二條帶寫入數(shù)據(jù);
[0087]如果當(dāng)前的第二條帶上的數(shù)據(jù)未成功寫入,則掃描第一磁盤組的狀態(tài),第一磁盤組的狀態(tài)為只讀狀態(tài)、正常讀寫狀態(tài)和降級狀態(tài)中的一種;
[0088]如果第一磁盤組的狀態(tài)為只讀狀態(tài),則在第二磁盤組中對應(yīng)的條帶上繼續(xù)寫入數(shù)據(jù),直至將數(shù)據(jù)全部寫入完畢。
[0089]優(yōu)選地,掃描第一磁盤組的狀態(tài)之后,還包括:
[0090]如果第一磁盤組的狀態(tài)為降級狀態(tài),則響應(yīng)告警。
[0091]優(yōu)選地,方法還包括:
[0092]檢測第一磁盤組中各個磁盤的狀態(tài)是否發(fā)生改變,磁盤的狀態(tài)為新盤狀態(tài)、正常狀態(tài)和故障狀態(tài)中的一種;
[0093]如果第一磁盤組中的第一磁盤的狀態(tài)由故障狀態(tài)變?yōu)樾卤P狀態(tài),則對第一磁盤進(jìn)行格式化,并對格式化后的第一磁盤進(jìn)行條帶劃分,將劃分得到的每個條帶的狀態(tài)設(shè)置為未寫入狀態(tài)。
[0094]優(yōu)選地,將劃分得到的每個條帶的狀態(tài)設(shè)置為未寫入狀態(tài)之后,還包括:
[0095]在讀取未寫入狀態(tài)的條帶上的數(shù)據(jù)時,將未寫入狀態(tài)的條帶的數(shù)據(jù)讀取結(jié)果設(shè)置為預(yù)設(shè)的填充數(shù)據(jù)。
[0096]優(yōu)選地,方法還包括:
[0097]檢測第一磁盤組的當(dāng)前狀態(tài)是否為只讀狀態(tài),只讀狀態(tài)為第一磁盤組中至少兩個磁盤的狀態(tài)為故障狀態(tài);
[0098]如果第一磁盤組的當(dāng)前狀態(tài)為非只讀狀態(tài),則確定上次檢測到的第一磁盤組的狀態(tài)是否為只讀狀態(tài);
[0099]如果上次檢測到的第一磁盤組的狀態(tài)為只讀狀態(tài),則將第一磁盤組的狀態(tài)設(shè)置為非只讀狀態(tài),非只讀狀態(tài)包括降級狀態(tài)和正常讀寫狀態(tài)。
[0100]優(yōu)選地,檢測第一磁盤組的當(dāng)前狀態(tài)是否為只讀狀態(tài)之后,還包括:
[0101]如果第一磁盤組的當(dāng)前狀態(tài)為只讀狀態(tài),則確定上次檢測到的第一磁盤組上次的狀態(tài)是否為非只讀狀態(tài);
[0102]如果上次檢測到的第一磁盤組的狀態(tài)為非只讀狀態(tài),則將第一磁盤組的狀態(tài)設(shè)置為只讀狀態(tài)。
[0103]本發(fā)明實(shí)施例提供的方法,通過根據(jù)獲取到的第一磁盤組的數(shù)據(jù)讀請求中攜帶的讀取地址確定的第一磁盤組的第一條帶位置范圍依次讀取數(shù)據(jù),將未成功讀取的第一條帶的數(shù)據(jù)讀取結(jié)果設(shè)置為預(yù)設(shè)的填充數(shù)據(jù),并繼續(xù)讀取下一個第一條帶上的數(shù)據(jù),直至每個第一條帶上的數(shù)據(jù)全部讀取完畢,返回各個第一條帶的數(shù)據(jù)讀取結(jié)果,從而實(shí)現(xiàn)未成功讀取數(shù)據(jù)時,減少數(shù)據(jù)的丟失和訪問的中斷時間,且由于未引入第三方介入,因而能夠保證數(shù)據(jù)的保密性。
[0104]實(shí)施例二
[0105]本發(fā)明實(shí)施例提供了一種訪問數(shù)據(jù)的方法,應(yīng)用于獨(dú)立磁盤冗余陣列,該獨(dú)立磁盤冗余陣列至少包括第一磁盤組,該第一磁盤組包括至少一個磁盤,每個磁盤預(yù)先被劃分為至少一個條帶,結(jié)合上述實(shí)施例一的內(nèi)容,對本發(fā)明實(shí)施例提供的方法進(jìn)行詳細(xì)地解釋說明,參見圖2,方法流程包括:
[0106]201:獲取第一磁盤組的數(shù)據(jù)讀請求,數(shù)據(jù)讀請求中攜帶有讀取地址;
[0107]關(guān)于獲取數(shù)據(jù)讀請求的方式,本實(shí)施例不作具體限定。具體實(shí)施時,可以采用接收消息的方式來獲取數(shù)據(jù)讀請求。當(dāng)然,除了上述方式外,還可以采用其他方式。
[0108]進(jìn)一步地,為了確定讀取范圍,數(shù)據(jù)讀請求中攜帶有讀取地址,用于根據(jù)讀取地址確定讀取范圍。數(shù)據(jù)讀請求中除了攜帶有讀取地址外,還可以攜帶其他信息,本實(shí)施例對此不作具體限定。例如,數(shù)據(jù)讀請求中攜帶讀取順序等。
[0109]202:根據(jù)讀取地址確定第一磁盤組的第一條帶位置范圍,第一條帶位置范圍內(nèi)包括至少一個第一條帶;
[0110]具體地,根據(jù)讀取地址確定第一磁盤組的第一條帶位置范圍,包括但不限于:根據(jù)讀取地址計算對應(yīng)讀取地址的第一磁盤組中的第一磁盤,計算每個第一磁盤的第一條帶位置范圍,則第一條帶位置范圍為每個第一磁盤的第一條帶位置范圍的累加。當(dāng)然,除了上述方式外,還可以采用其他方式根據(jù)讀取地址確定第一磁盤組的第一條帶位置范圍,本實(shí)施例對此不作具體限定。
[0111]需要說明的是,第一條帶位置范圍內(nèi)包括至少一個第一條帶,則后續(xù)步驟中可依次讀取第一條帶位置范圍內(nèi)的每個第一條帶上的數(shù)據(jù)。
[0112]為了便于理解,以第一磁盤組中包括磁盤Dl至D8為例進(jìn)行說明。其中,讀取地址為Dl條帶I至D4條帶I,Dl條帶I為磁盤Dl中的條帶1,D4條帶I為磁盤D4中的條帶I。根據(jù)讀取地址計算對應(yīng)讀取地址的第一磁盤組中的第一磁盤為Dl至D4,計算磁盤Dl的第一條帶位置范圍是條帶1,磁盤D2的第一條帶位置范圍是條帶1,磁盤D3的第一條帶位置范圍是條帶1,磁盤D4的第一條帶位置范圍是條帶1,則第一條帶位置范圍為磁盤Dl中的條帶1、磁盤D2中的條帶1、磁盤D3中的條帶I及磁盤D4中的條帶1,即第一條帶位置范圍內(nèi)包括4個第一條帶。
[0113]203:依次讀取第一條帶位置范圍內(nèi)的每個第一條帶上的數(shù)據(jù);
[0114]由于已經(jīng)根據(jù)讀取地址確定第一磁盤組的第一條帶位置范圍,則可直接依次讀取第一條帶位置范圍內(nèi)的每個第一條帶上的數(shù)據(jù)。關(guān)于讀取條帶上的數(shù)據(jù)的方式,本實(shí)施例不作具體限定。例如,訪問的數(shù)據(jù)如果是連續(xù)數(shù)據(jù),則可提前讀取未被請求的數(shù)據(jù),并將讀取到的數(shù)據(jù)存儲在內(nèi)存中,在獲取到數(shù)據(jù)讀請求后,直接從內(nèi)存中讀取數(shù)據(jù),加快數(shù)據(jù)的讀取速度;又例如,訪問的數(shù)據(jù)如果是隨機(jī)數(shù)據(jù),則在獲取到數(shù)據(jù)讀請求后,直接從對應(yīng)的存儲區(qū)域讀取數(shù)據(jù)。
[0115]204:在讀取未寫入狀態(tài)的條帶上的數(shù)據(jù)時,將未寫入狀態(tài)的條帶的數(shù)據(jù)讀取結(jié)果設(shè)置為預(yù)設(shè)的填充數(shù)據(jù);
[0116]為了能夠確定條帶的狀態(tài),本實(shí)施例提供的方法還包括:檢測第一磁盤組中各個磁盤的狀態(tài)是否發(fā)生改變,磁盤的狀態(tài)為新盤狀態(tài)、正常狀態(tài)和故障狀態(tài)中的一種;如果第一磁盤組中的第一磁盤的狀態(tài)由故障狀態(tài)變?yōu)樾卤P狀態(tài),則對第一磁盤進(jìn)行格式化,并對格式化后的第一磁盤進(jìn)行條帶劃分,將劃分得到的每個條帶的狀態(tài)設(shè)置為未寫入狀態(tài)。
[0117]其中,關(guān)于觸發(fā)檢測第一磁盤組中各個磁盤的狀態(tài)的方式,本實(shí)施例不作具體限定。具體實(shí)施時,可以定期觸發(fā)檢測磁盤的狀態(tài)。當(dāng)然,除了上述方式外,還可以采用其他方式觸發(fā)檢測磁盤的狀態(tài)。磁盤的狀態(tài)為新盤狀態(tài)、正常狀態(tài)和故障狀態(tài)中的一種。新盤狀態(tài)的磁盤為新插入磁盤組的磁盤,正常狀態(tài)的磁盤為磁盤組中可以進(jìn)行讀取、寫入數(shù)據(jù)的磁盤,故障狀態(tài)的磁盤為磁盤組中出現(xiàn)故障或拔出磁盤組的磁盤。
[0118]如果第一磁盤組中的第一磁盤的狀態(tài)由故障狀態(tài)變?yōu)樾卤P狀態(tài),則該第一磁盤可能被人工更換為新的第一磁盤。為了正常使用新的第一磁盤,對新的第一磁盤進(jìn)行格式化,并對格式化后的第一磁盤進(jìn)行條帶劃分,將劃分得到的每個條帶的狀態(tài)設(shè)置為未寫入狀態(tài)。本實(shí)施例不對條帶的狀態(tài)作具體限定,條帶的狀態(tài)包括但不限于:已寫入狀態(tài)和未寫入狀態(tài)。需要說明的是,對第一磁盤進(jìn)行格式化,并對格式化后的第一磁盤進(jìn)行條帶劃分后,第一磁盤可正常讀寫數(shù)據(jù),則第一磁盤的狀態(tài)由新盤狀態(tài)變?yōu)檎顟B(tài)。
[0119]為了便于理解,以如圖3所示的第一磁盤為例進(jìn)行說明。第一磁盤被分為兩個區(qū)域存儲數(shù)據(jù),分別為數(shù)據(jù)區(qū)域和元數(shù)據(jù)區(qū)域。數(shù)據(jù)區(qū)域被劃分為條帶I至條帶5,由于第一磁盤的狀態(tài)由故障狀態(tài)變?yōu)樾卤P狀態(tài),則條帶I至條帶5的狀態(tài)都被設(shè)置為未寫入狀態(tài)。元數(shù)據(jù)區(qū)域又被分為全局元數(shù)據(jù)區(qū)域和本磁盤元數(shù)據(jù)區(qū)域;全局元數(shù)據(jù)區(qū)域以B+樹的形式存儲第一磁盤組的元數(shù)據(jù),本磁盤元數(shù)據(jù)區(qū)域根據(jù)全局元數(shù)據(jù)區(qū)域存儲的第一磁盤組的元數(shù)據(jù)將第一磁盤中條帶狀態(tài)為未寫入狀態(tài)的條帶的標(biāo)志存儲在“空閑條帶鏈表”,將第一磁盤中條帶狀態(tài)為已寫入狀態(tài)的條帶的標(biāo)志存儲在“已用條帶鏈表”;其中,第一磁盤組的元數(shù)據(jù)在第一磁盤組中的每個第一磁盤中的全局元數(shù)據(jù)區(qū)域鏡像存儲,即第一磁盤組中的每個第一磁盤的全局元數(shù)據(jù)區(qū)域都記錄相同的第一磁盤組的元數(shù)據(jù)。
[0120]另外,本實(shí)施例不對條帶劃分的大小作具體限定。具體實(shí)施時,可以根據(jù)不同的數(shù)據(jù)進(jìn)行不同的劃分。以流媒體數(shù)據(jù)為例,尤其是對于高清視頻來說,損失一兩個條帶的數(shù)據(jù)時,損壞的可能僅僅是幾幀圖像,在25幀每秒的播放幀率下,損壞的幾幀圖像對視覺影像不大。絕大多數(shù)解碼器和播放器可以兼容這樣的錯誤。當(dāng)損失的條帶的數(shù)據(jù)增加時,視頻的播放可能會變得斷斷續(xù)續(xù)。在視頻監(jiān)控的場景下,這樣的視頻數(shù)據(jù)一般也極具價值。
[0121]為了便于理解,以如圖4 (I)所示的劃分的條帶為例進(jìn)行說明。第一行為劃分后的條帶,條帶的大小為1MB,條帶中的數(shù)據(jù)a、b、C、e、f、h、1、j、k、m、n、p、q、r、s、u、v、x未丟失,標(biāo)0的條帶中的數(shù)據(jù)丟失;第二行為視頻數(shù)據(jù)分類,I表示關(guān)鍵幀(I幀),P表示前向預(yù)測幀(P幀);數(shù)據(jù)為O的條帶對應(yīng)I幀和P幀為損壞的幀。后續(xù)在讀取數(shù)據(jù)時,第一個I幀和第一個至第三個P幀對應(yīng)的條帶成功讀取,并可渲染到屏幕;第四個和第五個P幀對應(yīng)的條帶未成功讀取,如果解碼器解出混亂的數(shù)據(jù),則屏幕上出現(xiàn)短時花屏;后續(xù)幀的顯示效果可參照上述內(nèi)容,針對8Mbps碼率的視頻數(shù)據(jù),播放的視頻基本連貫,偶爾卡頓,花屏的現(xiàn)象較少。
[0122]又例如,以如圖4 (2)所示的劃分的條帶為例進(jìn)行說明。第一行為劃分后的條帶,條帶的大小為256kb;第二行為視頻數(shù)據(jù)分類,碼率大小同圖4 (I)。從圖4 (2)可以看出,一個幀對應(yīng)的條帶數(shù)目增加,損壞的幀的數(shù)目也增加。因此,合適的條帶大小是和媒體數(shù)據(jù)的碼率大小相關(guān)的,較大的條帶大小可以降低I幀連續(xù)被破壞的概率,但是一個條帶包含的幀數(shù)也會變多,播放媒體數(shù)據(jù)時跳躍的時間增加;較小的條帶會增大I幀連續(xù)損壞的概率,導(dǎo)致媒體數(shù)據(jù)的播放效果不佳。對于SMBps碼率的IOSOp視頻來說,IMB條帶大小是比較好的選擇,其他碼率的視頻文件可按照上述碼率和條帶的比例酌減。
[0123]進(jìn)一步地,在讀取未寫入狀態(tài)的條帶上的數(shù)據(jù)時,將未寫入狀態(tài)的條帶的數(shù)據(jù)讀取結(jié)果設(shè)置為預(yù)設(shè)的填充數(shù)據(jù)。由于讀取未寫入狀態(tài)的條帶沒有存儲數(shù)據(jù),則在讀取未寫入狀態(tài)的條帶上的數(shù)據(jù)時,并不會實(shí)際讀取數(shù)據(jù),而是將未寫入狀態(tài)的條帶的數(shù)據(jù)讀取結(jié)果設(shè)置為預(yù)設(shè)的填充數(shù)據(jù)。本實(shí)施例不對預(yù)設(shè)的填充數(shù)據(jù)的數(shù)值作具體限定,具體實(shí)施時,預(yù)設(shè)的填充數(shù)據(jù)的數(shù)值可以為零。當(dāng)然,除了上述數(shù)值外,還可以預(yù)設(shè)其他數(shù)值。
[0124]205:如果當(dāng)前的第一條帶上的數(shù)據(jù)未成功讀取,則將當(dāng)前的第一條帶的數(shù)據(jù)讀取結(jié)果設(shè)置為預(yù)設(shè)的填充數(shù)據(jù),并繼續(xù)讀取下一個第一條帶上的數(shù)據(jù),直至每個第一條帶上的數(shù)據(jù)全部讀取完畢,返回各個第一條帶的數(shù)據(jù)讀取結(jié)果。
[0125]為了使第一磁盤組中多于一個第一磁盤的狀態(tài)為故障狀態(tài)時,還可以讀取磁盤組中其他第一磁盤的數(shù)據(jù),本實(shí)施例提供的方法在當(dāng)前的第一條帶上的數(shù)據(jù)未成功讀取時,將當(dāng)前的第一條帶的數(shù)據(jù)讀取結(jié)果設(shè)置為預(yù)設(shè)的填充數(shù)據(jù),并繼續(xù)讀取下一個第一條帶上的數(shù)據(jù)。其中,預(yù)設(shè)的填充數(shù)據(jù)參見上述步驟204中的內(nèi)容,此處不再贅述。在第一條帶位置范圍內(nèi)的每個第一條帶上的數(shù)據(jù)全部讀取完畢后,返回各個第一條帶的數(shù)據(jù)讀取結(jié)果,從而避免了第一磁盤組失效時,不能讀取第一磁盤組中的任一第一磁盤的數(shù)據(jù)。
[0126]需要說明的是,在RAID5中,如果一個磁盤的狀態(tài)為故障狀態(tài),可以根據(jù)磁盤組中的冗余數(shù)據(jù)恢復(fù)該磁盤中的數(shù)據(jù)。為了便于理解,以如圖5所示的第一磁盤組為例進(jìn)行說明,該第一磁盤組中包括Dl至D9這9個磁盤,數(shù)據(jù)abcdefghi jklmnopqrstuvwx被劃分為數(shù)據(jù)塊 a、b、C、d、e、f > g、h、1、j、k、1、m、n、o、p、q、r> s、t、u、v、w、x,分別存儲在磁盤 Dl至D9的條帶中。數(shù)據(jù)a、1、q分別存儲在磁盤Dl的三個條帶中,數(shù)據(jù)b、j、r分別存儲在磁盤D2的三個條帶中,數(shù)據(jù)c、k、s分別存儲在磁盤D3的三個條帶中,數(shù)據(jù)d、1、t分別存儲在磁盤D4的三個條帶中,數(shù)據(jù)e、m、u分別存儲在磁盤D5的三個條帶中,數(shù)據(jù)f、η、ν分別存儲在磁盤D6的三個條帶中,數(shù)據(jù)g、O、w分別存儲在磁盤D7的三個條帶中,數(shù)據(jù)h、p、X分別存儲在磁盤D8的三個條帶中。冗余數(shù)據(jù)xorl、xor2、xorl分別存儲在磁盤D9的三個條帶中,xorl=a'b'c'd'e'f'g'h, xor2=i'j'k'l'm'n'o'p, xor3=q'r's't'u'v'w'x ;其中,~表示異或。當(dāng)Dl至D8中任一磁盤的狀態(tài)為故障狀態(tài)時,可通過冗余計算恢復(fù)任一磁盤中的數(shù)據(jù)。
[0127]例如,磁盤D3的狀態(tài)為故障狀態(tài),則數(shù)據(jù)c的冗余計算過程為:
[0128]xorl'a'b'd'e'f'g'h
[0129]= (a'b'c'd'e'f'g'h) 'a'b'd'e'f'g'h
[0130]= (a'a)~ (b'b) 'c' (d'd)~ (e'e)~ (f'f)~ (g'g)~ (h'h)
[0131]=0~0~。~0~0~0~0~0
[0132]=c
[0133]數(shù)據(jù)k和數(shù)據(jù)s的冗余計算過程可參見數(shù)據(jù)c的冗余計算過程,此處不再贅述。
[0134]又例如,磁盤D4和D7的狀態(tài)為故障狀態(tài),如圖6所示,由于通過冗余計算不能得到磁盤D4和D7中的數(shù)據(jù),則不能成功讀取磁盤D4和D7中的數(shù)據(jù)。設(shè)置預(yù)設(shè)的填充數(shù)據(jù)為0,磁盤D4和D7中的數(shù)據(jù)中的數(shù)據(jù)的讀取結(jié)果都為O。如果根據(jù)讀取地址確定第一磁盤組的第一條帶位置范圍為Dl至D8中的每個條帶,則返回的數(shù)據(jù)讀取結(jié)果為abcOefOhijkOmnOpqrsOuvOx。
[0135]進(jìn)一步地,本發(fā)明實(shí)施例提供的訪問數(shù)據(jù)的方法可通過軟件實(shí)現(xiàn),還可通過硬件實(shí)現(xiàn)。為了便于理解,以如圖7所示的訪問數(shù)據(jù)的軟件的結(jié)構(gòu)為例進(jìn)行說明。軟件RAID位于 VFS (Virtual File System,虛擬文件系統(tǒng))和 XFS (X-File System,X 文件系統(tǒng))之間,并且提供 WebUI (User Interface,用戶界面)和 CLI (Command Line Interface,命令行接口)用于控制軟件RAID ;RAID用戶可通過VFS控制軟件RAID。其中,軟件RAID的結(jié)構(gòu)可以如圖8 (I)所示,還可以如圖8 (2)所示。相對于圖8 (I)中的軟件RAID,圖8 (2)中的軟件RAID沒有RAID文件系統(tǒng)和讀寫緩存,虛擬塊設(shè)備直接連接標(biāo)準(zhǔn)文件系統(tǒng),在磁盤組滿足失效條件時,丟失的數(shù)據(jù)可能是標(biāo)準(zhǔn)文件里的關(guān)鍵數(shù)據(jù),導(dǎo)致標(biāo)準(zhǔn)文件系統(tǒng)損壞,因此該軟件RAID通常不應(yīng)用于文件系統(tǒng)。
[0136]另外,如圖9所示的訪問數(shù)據(jù)的硬件的結(jié)構(gòu)中,可通過RAID卡等來實(shí)現(xiàn)本發(fā)明實(shí)施例提供的訪問數(shù)據(jù)的方法。其中,RAID卡位于操作系統(tǒng)和磁盤之間。
[0137]本實(shí)施例提供的方法,通過根據(jù)獲取到的第一磁盤組的數(shù)據(jù)讀請求中攜帶的讀取地址確定的第一磁盤組的第一條帶位置范圍依次讀取數(shù)據(jù),將未成功讀取的第一條帶的數(shù)據(jù)讀取結(jié)果設(shè)置為預(yù)設(shè)的填充數(shù)據(jù),并繼續(xù)讀取下一個第一條帶上的數(shù)據(jù),直至每個第一條帶上的數(shù)據(jù)全部讀取完畢,返回各個第一條帶的數(shù)據(jù)讀取結(jié)果,從而實(shí)現(xiàn)未成功讀取數(shù)據(jù)時,減少數(shù)據(jù)的丟失和訪問的中斷時間,且由于未引入第三方介入,因而能夠保證數(shù)據(jù)的保密性。
[0138]實(shí)施例三
[0139]本實(shí)施例提供了一種訪問數(shù)據(jù)的方法,應(yīng)用于獨(dú)立磁盤冗余陣列,該獨(dú)立磁盤冗余陣列包括第一磁盤組和第二磁盤組,第一磁盤組和第二磁盤組分別包括至少一個磁盤,每個磁盤預(yù)先被劃分為至少一個條帶,參見圖10,方法流程包括:
[0140]1001:獲取第一磁盤組的數(shù)據(jù)寫請求,數(shù)據(jù)寫請求中攜帶有寫入地址;[0141]為了能夠訪問磁盤組中的數(shù)據(jù),獲取第一磁盤組的數(shù)據(jù)寫請求。關(guān)于獲取數(shù)據(jù)寫請求的方式,本實(shí)施例不作具體限定。具體實(shí)施時,可以采用接收消息的方式來獲取數(shù)據(jù)寫請求。當(dāng)然,除了上述方式外,還可以采用其他方式。
[0142]進(jìn)一步地,為了確定寫入范圍,數(shù)據(jù)寫請求中攜帶有寫入地址,用于根據(jù)寫入地址確定寫入范圍。數(shù)據(jù)寫請求中除了攜帶有寫入地址外,還可以攜帶其他信息,本實(shí)施例對此不作具體限定。例如,數(shù)據(jù)寫請求中攜帶寫入順序等。
[0143]1002:根據(jù)寫入地址確定第一磁盤組的第二條帶位置范圍,第二條帶位置范圍內(nèi)包括至少一個第二條帶;
[0144]具體地,根據(jù)寫入地址確定第一磁盤組的第二條帶位置范圍,包括但不限于:根據(jù)寫入地址計算對應(yīng)寫入地址的第一磁盤組中的第一磁盤,計算每個第一磁盤的第二條帶位置范圍,則第二條帶位置范圍為每個第一磁盤的第二條帶位置范圍的累加。當(dāng)然,除了上述方式外,還可以采用其他方式根據(jù)寫入地址確定第一磁盤組的第二條帶位置范圍,本實(shí)施例對此不作具體限定。
[0145]需要說明的是,第一條帶位置范圍內(nèi)包括至少一個第一條帶,則后續(xù)步驟中可依次向第二條帶位置范圍內(nèi)的每個第二條帶寫入數(shù)據(jù)。
[0146]為了便于理解,以第一磁盤組中包括磁盤Dl至D8為例進(jìn)行說明。其中,寫入地址為Dl條帶I至D4條帶I,Dl條帶I為磁盤Dl中的條帶1,D4條帶I為磁盤D4中的條帶I。根據(jù)寫入地址計算對應(yīng)寫入地址的第一磁盤組中的第一磁盤為Dl至D4,計算磁盤Dl的第二條帶位置范圍是條帶1,磁盤D2的第二條帶位置范圍是條帶1,磁盤D3的第二條帶位置范圍是條帶1,磁盤D4的第二條帶位置范圍是條帶1,則第二條帶位置范圍為磁盤Dl中的條帶1、磁盤D2中的條帶1、磁盤D3中的條帶I及磁盤D4中的條帶1,即第二條帶位置范圍內(nèi)包括4個第二條帶。
[0147]1003:依次向第二條帶位置范圍內(nèi)的每個第二條帶寫入數(shù)據(jù);
[0148]由于已經(jīng)根據(jù)寫入地址確定第一磁盤組的第二條帶位置范圍,則可直接依次向第二條帶位置范圍內(nèi)的每個第二條帶寫入數(shù)據(jù)。關(guān)于向條帶寫入數(shù)據(jù)的方式,本實(shí)施例不作具體限定。具體實(shí)施時,可以將待寫入的數(shù)據(jù)劃分為多個數(shù)據(jù)塊,并行寫入第二條帶位置范圍內(nèi)的每個第二條帶寫入數(shù)據(jù),從而提高寫入數(shù)據(jù)的速度。當(dāng)然,除了上述方式外,還可以采用其他方式。
[0149]1004:如果當(dāng)前的第二條帶上的數(shù)據(jù)未成功寫入,則掃描第一磁盤組的狀態(tài),第一磁盤組的狀態(tài)為只讀狀態(tài)、正常讀寫狀態(tài)和降級狀態(tài)中的一種;
[0150]為了將數(shù)據(jù)成功寫入獨(dú)立磁盤冗余陣列,本實(shí)施例提供的方法在當(dāng)前的第二條帶上的數(shù)據(jù)未成功寫入時,掃描第一磁盤組的狀態(tài)。需要說明的是,除了在當(dāng)前的第二條帶上的數(shù)據(jù)未成功寫入時觸發(fā)掃描第一磁盤組的狀態(tài),還可以定期觸發(fā)掃描第一磁盤組的狀態(tài)。其中,第一磁盤組的狀態(tài)為只讀狀態(tài)、正常讀寫狀態(tài)和降級狀態(tài)中的一種;只讀狀態(tài)為第一磁盤組中的每個第一磁盤只能進(jìn)行讀取數(shù)據(jù)的操作,不能進(jìn)行寫入數(shù)據(jù)的操作;正常讀寫狀態(tài)為第一磁盤中的每個第一磁盤既能進(jìn)行讀取數(shù)據(jù)的操作,還能進(jìn)行寫入數(shù)據(jù)的操作;降級狀態(tài)為第一磁盤中的每個第一磁盤既能進(jìn)行讀取數(shù)據(jù)的操作,還能進(jìn)行寫入數(shù)據(jù)的操作,并且第一磁盤組中有至少一個第一磁盤的狀態(tài)為故障狀態(tài);降級狀態(tài)介于只讀狀態(tài)和正常讀寫狀態(tài)之間。針對不同的獨(dú)立磁盤冗余陣列,第一磁盤組的狀態(tài)對應(yīng)不同的第一磁盤的狀態(tài)。
[0151]為了便于理解,以RAID5為例進(jìn)行說明。如果第一磁盤組中有多于一個第一磁盤的狀態(tài)為故障狀態(tài),則掃描到的第一磁盤組的狀態(tài)為只讀狀態(tài);如果第一磁盤組中沒有第一磁盤的狀態(tài)為故障狀態(tài),則掃描到的第一磁盤組的狀態(tài)為正常讀寫狀態(tài);如果第一磁盤組中有一個第一磁盤的狀態(tài)為故障狀態(tài),則掃描到的第一磁盤組的狀態(tài)為降級狀態(tài)。
[0152]1005:如果第一磁盤組的狀態(tài)為只讀狀態(tài),則在第二磁盤組中對應(yīng)的條帶上繼續(xù)寫入數(shù)據(jù),直至將數(shù)據(jù)全部寫入完畢。
[0153]如果第一磁盤組的狀態(tài)為只讀狀態(tài),則只能讀取第一磁盤組中的數(shù)據(jù),而不能在第一磁盤組中的條帶上繼續(xù)寫入數(shù)據(jù)。為了能夠繼續(xù)向?qū)懭氇?dú)立磁盤冗余陣列中寫入數(shù)據(jù),在第二磁盤組中對應(yīng)的條帶上繼續(xù)寫入數(shù)據(jù),直至將數(shù)據(jù)全部寫入完畢。
[0154]優(yōu)選地,為了將第一磁盤組的狀態(tài)恢復(fù)為正常讀寫狀態(tài),本實(shí)施例提供的方法還包括但不限于:顯不第一磁盤組中磁盤狀態(tài)為故障狀態(tài)的第一磁盤。關(guān)于顯不第一磁盤的方式,本實(shí)施例不作具體限定。為了便于理解,以圖11所示的顯示界面為例進(jìn)行說明。根據(jù)第一磁盤組中的每個第一磁盤實(shí)際對應(yīng)的插卡槽的位置顯示每個第一磁盤對應(yīng)的標(biāo)志,分別為Dl至D8 ;在磁盤D4和磁盤D7的位置標(biāo)注,表明磁盤D4和磁盤D7的狀態(tài)為故障狀態(tài)。
[0155]由于已經(jīng)標(biāo)注故障狀態(tài)的第一磁盤的位置,便于人工更換第一磁盤,為了檢測第一磁盤是否被更換,本實(shí)施例提供的方法包括但不限于:檢測第一磁盤組中各個磁盤的狀態(tài)是否發(fā)生改變,磁盤的狀態(tài)為新盤狀態(tài)、正常狀態(tài)和故障狀態(tài)中的一種;如果第一磁盤組中的第一磁盤的狀態(tài)由故障狀態(tài)變?yōu)樾卤P狀態(tài),則對第一磁盤進(jìn)行格式化,并對格式化后的第一磁盤進(jìn)行條帶劃分,將劃分得到的每個條帶的狀態(tài)設(shè)置為未寫入狀態(tài)。
[0156]進(jìn)一步地,在檢測第一磁盤組中各個磁盤的狀態(tài)是否發(fā)生改變之后,本實(shí)施例提供的方法還包括但不限于:
[0157](I)檢測第一磁盤組的當(dāng)前狀態(tài)是否為只讀狀態(tài),只讀狀態(tài)為第一磁盤組中至少兩個磁盤的狀態(tài)為故障狀態(tài);如果第一磁盤組的當(dāng)前狀態(tài)為非只讀狀態(tài),則執(zhí)行(2);如果第一磁盤組的當(dāng)前狀態(tài)為只讀狀態(tài),則執(zhí)行(4 );
[0158](2)確定上次檢測到的第一磁盤組的狀態(tài)是否為只讀狀態(tài);
[0159](3)如果上次檢測到的第一磁盤組的狀態(tài)為只讀狀態(tài),則將第一磁盤組的狀態(tài)設(shè)置為非只讀狀態(tài),非只讀狀態(tài)包括降級狀態(tài)和正常讀寫狀態(tài)。
[0160](4)確定上次檢測到的第一磁盤組的狀態(tài)是否為非只讀狀態(tài);
[0161](5)如果上次檢測到的第一磁盤組的狀態(tài)為非只讀狀態(tài),則將第一磁盤組的狀態(tài)設(shè)置為只讀狀態(tài)。
[0162]另外,為了盡量避免磁盤組失效條件,在掃描第一磁盤組的狀態(tài)之后,如果第一磁盤組的狀態(tài)為降級狀態(tài),則響應(yīng)告警。第一磁盤組的狀態(tài)為降級狀態(tài)時,表明第一磁盤組中有一個第一磁盤的狀態(tài)為故障狀態(tài)。通過響應(yīng)警告,可提醒人工更換磁盤。關(guān)于響應(yīng)告警的方式,本實(shí)施例不作具體限定。具體實(shí)施時,可以采用發(fā)出告警信息的方式來響應(yīng)告警。另外,告警信息中還可攜帶磁盤的位置信息,便于更換磁盤。
[0163]需要說明的是,本發(fā)明實(shí)施例提供的訪問數(shù)據(jù)的方法可通過軟件實(shí)現(xiàn),還可通過硬件實(shí)現(xiàn),具體詳見上述實(shí)施例二中關(guān)于軟件實(shí)現(xiàn)和硬件實(shí)現(xiàn)的具體描述內(nèi)容,此處不再贅述。
[0164]本發(fā)明實(shí)施例提供的方法,通過在當(dāng)前的第二條帶上的數(shù)據(jù)未成功寫入時,掃描到第一磁盤組的狀態(tài)為只讀狀態(tài),在第二磁盤組中對應(yīng)的條帶上繼續(xù)寫入數(shù)據(jù),直至將數(shù)據(jù)全部寫入完畢,從而無需重新組建磁盤組就實(shí)現(xiàn)了寫入數(shù)據(jù),減少訪問的中斷時間,且由于未引入第三方介入,因而能夠保證數(shù)據(jù)的保密性。
[0165]實(shí)施例四
[0166]參見圖12,本發(fā)明實(shí)施例提供了一種訪問數(shù)據(jù)的裝置,該裝置應(yīng)用于獨(dú)立磁盤冗余陣列,獨(dú)立磁盤冗余陣列至少包括第一磁盤組,第一磁盤組包括至少一個磁盤,每個磁盤預(yù)先被劃分為至少一個條帶,該裝置包括:
[0167]第一獲取模塊1201,用于獲取第一磁盤組的數(shù)據(jù)讀請求,數(shù)據(jù)讀請求中攜帶有讀取地址;
[0168]第一確定模塊1202,用于根據(jù)讀取地址確定第一磁盤組的第一條帶位置范圍,第一條帶位置范圍內(nèi)包括至少一個第一條帶;
[0169]讀取模塊1203,用于依次讀取第一條帶位置范圍內(nèi)的每個第一條帶上的數(shù)據(jù);
[0170]第一設(shè)置模塊1204,用于在當(dāng)前的第一條帶上的數(shù)據(jù)未成功讀取時,將當(dāng)前的第一條帶的數(shù)據(jù)讀取結(jié)果設(shè)置為預(yù)設(shè)的填充數(shù)據(jù),并繼續(xù)讀取下一個第一條帶上的數(shù)據(jù),直至每個第一條帶上的數(shù)據(jù)全部讀取完畢;
[0171]返回模塊1205,用于返回各個第一條帶的數(shù)據(jù)讀取結(jié)果。
[0172]優(yōu)選地,獨(dú)立磁盤冗余陣列還包括第二磁盤組,該裝置,還包括:
[0173]第二獲取模塊,用于獲取第一磁盤組的數(shù)據(jù)寫請求,數(shù)據(jù)寫請求中攜帶有寫入地址;
[0174]第二確定模塊,用于根據(jù)寫入地址確定第一磁盤組的第二條帶位置范圍,第二條帶位置范圍內(nèi)包括至少一個第二條帶;
[0175]第一寫入模塊,用于依次向第二條帶位置范圍內(nèi)的每個第二條帶寫入數(shù)據(jù);
[0176]掃描模塊,用于在當(dāng)前的第二條帶上的數(shù)據(jù)未成功寫入時,掃描第一磁盤組的狀態(tài),第一磁盤組的狀態(tài)為只讀狀態(tài)、正常讀寫狀態(tài)和降級狀態(tài)中的一種;
[0177]第二寫入模塊,用于當(dāng)?shù)谝淮疟P組的狀態(tài)為只讀狀態(tài)時,在第二磁盤組中對應(yīng)的條帶上繼續(xù)寫入數(shù)據(jù),直至將數(shù)據(jù)全部寫入完畢。
[0178]優(yōu)選地,該裝置,還包括:
[0179]響應(yīng)模塊,用于當(dāng)?shù)谝淮疟P組的狀態(tài)為降級狀態(tài)時,響應(yīng)告警。
[0180]優(yōu)選地,該裝置,還包括:
[0181]第一檢測模塊,用于檢測第一磁盤組中各個磁盤的狀態(tài)是否發(fā)生改變,磁盤的狀態(tài)為新盤狀態(tài)、正常狀態(tài)和故障狀態(tài)中的一種;
[0182]格式化模塊,用于當(dāng)?shù)谝淮疟P組中的第一磁盤的狀態(tài)由故障狀態(tài)變?yōu)樾卤P狀態(tài)時,對第一磁盤進(jìn)行格式化;
[0183]劃分模塊,用于對格式化后的第一磁盤進(jìn)行條帶劃分;
[0184]第二設(shè)置模塊,用于將劃分得到的每個條帶的狀態(tài)設(shè)置為未寫入狀態(tài)。
[0185]優(yōu)選地,第一設(shè)置模塊1204,還用于在讀取未寫入狀態(tài)的條帶上的數(shù)據(jù)時,將未寫入狀態(tài)的條帶的數(shù)據(jù)讀取結(jié)果設(shè)置為預(yù)設(shè)的填充數(shù)據(jù)。[0186]優(yōu)選地,裝置還包括:
[0187]第二檢測模塊,用于檢測第一磁盤組的當(dāng)前狀態(tài)是否為只讀狀態(tài),只讀狀態(tài)為第一磁盤組中至少兩個磁盤的狀態(tài)為故障狀態(tài);
[0188]第三確定模塊,用于當(dāng)?shù)谝淮疟P組的當(dāng)前狀態(tài)為非只讀狀態(tài)時,確定上次檢測到的第一磁盤組的狀態(tài)是否為只讀狀態(tài);
[0189]第三設(shè)置模塊,用于當(dāng)上次檢測到的第一磁盤組的狀態(tài)為只讀狀態(tài)時,將第一磁盤組的狀態(tài)設(shè)置為非只讀狀態(tài),非只讀狀態(tài)包括降級狀態(tài)和正常讀寫狀態(tài)。
[0190]優(yōu)選地,該裝置,還包括:
[0191]第四確定模塊,用于當(dāng)?shù)谝淮疟P組的當(dāng)前狀態(tài)為只讀狀態(tài)時,確定上次檢測到的第一磁盤組的狀態(tài)是否為非只讀狀態(tài);
[0192]第四設(shè)置模塊,用于當(dāng)上次檢測到的第一磁盤組的狀態(tài)為非只讀狀態(tài)時,將第一磁盤組的狀態(tài)設(shè)置為只讀狀態(tài)。
[0193]本實(shí)施例提供的裝置,通過根據(jù)獲取到的第一磁盤組的數(shù)據(jù)讀請求中攜帶的讀取地址確定的第一磁盤組的第一條帶位置范圍依次讀取數(shù)據(jù),將未成功讀取的第一條帶的數(shù)據(jù)讀取結(jié)果設(shè)置為預(yù)設(shè)的填充數(shù)據(jù),并繼續(xù)讀取下一個第一條帶上的數(shù)據(jù),直至每個第一條帶上的數(shù)據(jù)全部讀取完畢,返回各個第一條帶的數(shù)據(jù)讀取結(jié)果,從而實(shí)現(xiàn)未成功讀取數(shù)據(jù)時,減少數(shù)據(jù)的丟失和訪問的中斷時間,且由于未引入第三方介入,因而能夠保證數(shù)據(jù)的保密性。
[0194]實(shí)施例五
[0195]本發(fā)明實(shí)施例提供了一種訪問數(shù)據(jù)的終端,該終端應(yīng)用于獨(dú)立磁盤冗余陣列,獨(dú)立磁盤冗余陣列至少包括第一磁盤組,第一磁盤組包括至少一個磁盤,每個磁盤預(yù)先被劃分為至少一個條帶,該終端包括處理器、發(fā)射機(jī)和接收機(jī)。
[0196]其中,接收機(jī),用于獲取第一磁盤組的數(shù)據(jù)讀請求,數(shù)據(jù)讀請求中攜帶有讀取地址;
[0197]處理器,用于根據(jù)讀取地址確定第一磁盤組的第一條帶位置范圍,第一條帶位置范圍內(nèi)包括至少一個第一條帶;
[0198]處理器,還用于依次讀取第一條帶位置范圍內(nèi)的每個第一條帶上的數(shù)據(jù);
[0199]處理器,還用于在當(dāng)前的第一條帶上的數(shù)據(jù)未成功讀取時,將當(dāng)前的第一條帶的數(shù)據(jù)讀取結(jié)果設(shè)置為預(yù)設(shè)的填充數(shù)據(jù),并繼續(xù)讀取下一個第一條帶上的數(shù)據(jù),直至每個第一條帶上的數(shù)據(jù)全部讀取完畢;
[0200]發(fā)射機(jī),用于返回各個第一條帶的數(shù)據(jù)讀取結(jié)果。
[0201]作為一種可選實(shí)施例,處理器,還用于檢測第一磁盤組中各個磁盤的狀態(tài)是否發(fā)生改變,磁盤的狀態(tài)為新盤狀態(tài)、正常狀態(tài)和故障狀態(tài)中的一種;
[0202]處理器,還用于在第一磁盤組中的第一磁盤的狀態(tài)由故障狀態(tài)變?yōu)樾卤P狀態(tài)時,對第一磁盤進(jìn)行格式化,并對格式化后的第一磁盤進(jìn)行條帶劃分,將劃分得到的每個條帶的狀態(tài)設(shè)置為未寫入狀態(tài)。
[0203]作為一種可選實(shí)施例,處理器,還用于在讀取未寫入狀態(tài)的條帶上的數(shù)據(jù)時,將未寫入狀態(tài)的條帶的數(shù)據(jù)讀取結(jié)果設(shè)置為預(yù)設(shè)的填充數(shù)據(jù)。
[0204]作為一種可選實(shí)施例,處理器,還用于檢測第一磁盤組的當(dāng)前狀態(tài)是否為只讀狀態(tài),只讀狀態(tài)為第一磁盤組中至少兩個磁盤的狀態(tài)為故障狀態(tài);
[0205]處理器,還用于在第一磁盤組的當(dāng)前狀態(tài)為非只讀狀態(tài)時,確定上次檢測到的第一磁盤組的狀態(tài)是否為只讀狀態(tài);
[0206]處理器,還用于在上次檢測到的第一磁盤組的狀態(tài)為只讀狀態(tài)時,將第一磁盤組的狀態(tài)設(shè)置為非只讀狀態(tài),非只讀狀態(tài)包括降級狀態(tài)和正常讀寫狀態(tài)。
[0207]作為一種可選實(shí)施例,處理器,還用于在第一磁盤組的當(dāng)前狀態(tài)為只讀狀態(tài)時,確定上次檢測到的第一磁盤組的狀態(tài)是否為非只讀狀態(tài);
[0208]處理器,還用于在上次檢測到的第一磁盤組的狀態(tài)為非只讀狀態(tài)時,將第一磁盤組的狀態(tài)設(shè)置為只讀狀態(tài)。
[0209]本實(shí)施例提供的終端,通過根據(jù)獲取到的第一磁盤組的數(shù)據(jù)讀請求中攜帶的讀取地址確定的第一磁盤組的第一條帶位置范圍依次讀取數(shù)據(jù),將未成功讀取的第一條帶的數(shù)據(jù)讀取結(jié)果設(shè)置為預(yù)設(shè)的填充數(shù)據(jù),并繼續(xù)讀取下一個第一條帶上的數(shù)據(jù),直至每個第一條帶上的數(shù)據(jù)全部讀取完畢,返回各個第一條帶的數(shù)據(jù)讀取結(jié)果,從而實(shí)現(xiàn)未成功讀取數(shù)據(jù)時,減少數(shù)據(jù)的丟失和訪問的中斷時間,且由于未引入第三方介入,因而能夠保證數(shù)據(jù)的保密性。
[0210]實(shí)施例六
[0211]本發(fā)明實(shí)施例提供了一種訪問數(shù)據(jù)的終端,該終端應(yīng)用于獨(dú)立磁盤冗余陣列,獨(dú)立磁盤冗余陣列至少包括第一磁盤組和第二磁盤組,第一磁盤組包括至少一個磁盤,每個磁盤預(yù)先被劃分為至少一個條帶,該終端包括處理器和接收機(jī)。
[0212]其中,接收機(jī),用于獲取第一磁盤組的數(shù)據(jù)寫請求,數(shù)據(jù)寫請求中攜帶有寫入地址;
[0213]處理器,用于根據(jù)寫入地址確定第一磁盤組的第二條帶位置范圍,第二條帶位置范圍內(nèi)包括至少一個第二條帶;
[0214]處理器,還用于依次向第二條帶位置范圍內(nèi)的每個第二條帶寫入數(shù)據(jù);
[0215]處理器,還用于在當(dāng)前的第二條帶上的數(shù)據(jù)未成功寫入時,掃描第一磁盤組的狀態(tài),第一磁盤組的狀態(tài)為只讀狀態(tài)、正常讀寫狀態(tài)和降級狀態(tài)中的一種;
[0216]處理器,還用于在如果第一磁盤組的狀態(tài)為只讀狀態(tài)時,在第二磁盤組中對應(yīng)的條帶上繼續(xù)寫入數(shù)據(jù),直至將數(shù)據(jù)全部寫入完畢。
[0217]作為一種可選實(shí)施例,處理器,還用于在第一磁盤組的狀態(tài)為降級狀態(tài)時,響應(yīng)告
m
目O
[0218]作為一種可選實(shí)施例,處理器,還用于檢測第一磁盤組中各個磁盤的狀態(tài)是否發(fā)生改變,磁盤的狀態(tài)為新盤狀態(tài)、正常狀態(tài)和故障狀態(tài)中的一種;
[0219]處理器,還用于在第一磁盤組中的第一磁盤的狀態(tài)由故障狀態(tài)變?yōu)樾卤P狀態(tài)時,對第一磁盤進(jìn)行格式化,并對格式化后的第一磁盤進(jìn)行條帶劃分,將劃分得到的每個條帶的狀態(tài)設(shè)置為未寫入狀態(tài)。
[0220]作為一種可選實(shí)施例,處理器,還用于檢測第一磁盤組的當(dāng)前狀態(tài)是否為只讀狀態(tài),只讀狀態(tài)為第一磁盤組中至少兩個磁盤的狀態(tài)為故障狀態(tài);
[0221 ] 處理器,還用于在第一磁盤組的當(dāng)前狀態(tài)為非只讀狀態(tài)時,確定上次檢測到的第一磁盤組的狀態(tài)是否為只讀狀態(tài);[0222]處理器,還用于在上次檢測到的第一磁盤組的狀態(tài)為只讀狀態(tài)時,將第一磁盤組的狀態(tài)設(shè)置為非只讀狀態(tài),非只讀狀態(tài)包括降級狀態(tài)和正常讀寫狀態(tài)。
[0223]作為一種可選實(shí)施例,處理器,還用于在第一磁盤組的當(dāng)前狀態(tài)為只讀狀態(tài)時,確定上次檢測到的第一磁盤組的狀態(tài)是否為非只讀狀態(tài);
[0224]處理器,還用于在上次檢測到的第一磁盤組的狀態(tài)為非只讀狀態(tài)時,將第一磁盤組的狀態(tài)設(shè)置為只讀狀態(tài)。
[0225]本發(fā)明實(shí)施例提供的終端,通過在當(dāng)前的第二條帶上的數(shù)據(jù)未成功寫入時,掃描到第一磁盤組的狀態(tài)為只讀狀態(tài),在第二磁盤組中對應(yīng)的條帶上繼續(xù)寫入數(shù)據(jù),直至將數(shù)據(jù)全部寫入完畢,從而無需重新組建磁盤組就實(shí)現(xiàn)了寫入數(shù)據(jù),減少訪問的中斷時間,且由于未引入第三方介入,因而能夠保證數(shù)據(jù)的保密性。
[0226]需要說明的是:上述實(shí)施例提供的訪問數(shù)據(jù)的裝置在訪問數(shù)據(jù)時,僅以上述各功能模塊的劃分進(jìn)行舉例說明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實(shí)施例提供的訪問數(shù)據(jù)的裝置與訪問數(shù)據(jù)的方法實(shí)施例屬于同一構(gòu)思,其具體實(shí)現(xiàn)過程詳見方法實(shí)施例,這里不再贅述。
[0227]上述本發(fā)明實(shí)施例序號僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
[0228]本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機(jī)可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。
[0229]以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種訪問數(shù)據(jù)的方法,其特征在于,所述方法應(yīng)用于獨(dú)立磁盤冗余陣列,所述獨(dú)立磁盤冗余陣列至少包括第一磁盤組,所述第一磁盤組包括至少一個磁盤,每個磁盤預(yù)先被劃分為至少一個條帶,所述方法包括: 獲取第一磁盤組的數(shù)據(jù)讀請求,所述數(shù)據(jù)讀請求中攜帶有讀取地址; 根據(jù)所述讀取地址確定所述第一磁盤組的第一條帶位置范圍,所述第一條帶位置范圍內(nèi)包括至少一個第一條帶; 依次讀取所述第一條帶位置范圍內(nèi)的每個第一條帶上的數(shù)據(jù); 如果當(dāng)前的第一條帶上的數(shù)據(jù)未成功讀取,則將當(dāng)前的第一條帶的數(shù)據(jù)讀取結(jié)果設(shè)置為預(yù)設(shè)的填充數(shù)據(jù),并繼續(xù)讀取下一個第一條帶上的數(shù)據(jù),直至每個第一條帶上的數(shù)據(jù)全部讀取完畢,返回各個第一條帶的數(shù)據(jù)讀取結(jié)果。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獨(dú)立磁盤冗余陣列還包括第二磁盤組,所述方法還包括: 獲取所述第一磁盤組的數(shù)據(jù)寫請求,所述數(shù)據(jù)寫請求中攜帶有寫入地址; 根據(jù)所述寫入地址確定所述第一磁盤組的第二條帶位置范圍,所述第二條帶位置范圍內(nèi)包括至少一個第二條帶; 依次向所述第二條帶位置范圍內(nèi)的每個第二條帶寫入數(shù)據(jù); 如果當(dāng)前的第二條帶 上的數(shù)據(jù)未成功寫入,則掃描所述第一磁盤組的狀態(tài),所述第一磁盤組的狀態(tài)為只讀狀態(tài)、正常讀寫狀態(tài)和降級狀態(tài)中的一種; 如果所述第一磁盤組的狀態(tài)為只讀狀態(tài),則在所述第二磁盤組中對應(yīng)的條帶上繼續(xù)寫入數(shù)據(jù),直至將數(shù)據(jù)全部寫入完畢。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述掃描所述第一磁盤組的狀態(tài)之后,還包括: 如果所述第一磁盤組的狀態(tài)為降級狀態(tài),則響應(yīng)告警。
4.根據(jù)權(quán)利要求1至3中任一權(quán)利要求所述的方法,其特征在于,所述方法還包括: 檢測所述第一磁盤組中各個磁盤的狀態(tài)是否發(fā)生改變,所述磁盤的狀態(tài)為新盤狀態(tài)、正常狀態(tài)和故障狀態(tài)中的一種; 如果所述第一磁盤組中的第一磁盤的狀態(tài)由故障狀態(tài)變?yōu)樾卤P狀態(tài),則對所述第一磁盤進(jìn)行格式化,并對格式化后的第一磁盤進(jìn)行條帶劃分,將劃分得到的每個條帶的狀態(tài)設(shè)置為未寫入狀態(tài)。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述將劃分得到的每個條帶的狀態(tài)設(shè)置為未寫入狀態(tài)之后,還包括: 在讀取未寫入狀態(tài)的條帶上的數(shù)據(jù)時,將未寫入狀態(tài)的條帶的數(shù)據(jù)讀取結(jié)果設(shè)置為預(yù)設(shè)的填充數(shù)據(jù)。
6.根據(jù)權(quán)利要求1至5中任一權(quán)利要求所述的方法,其特征在于,所述方法還包括: 檢測所述第一磁盤組的當(dāng)前狀態(tài)是否為只讀狀態(tài),所述只讀狀態(tài)為所述第一磁盤組中至少兩個磁盤的狀態(tài)為故障狀態(tài); 如果所述第一磁盤組的當(dāng)前狀態(tài)為非只讀狀態(tài),則確定上次檢測到的所述第一磁盤組的狀態(tài)是否為只讀狀態(tài); 如果上次檢測到的所述第一磁盤組的狀態(tài)為只讀狀態(tài),則將所述第一磁盤組的狀態(tài)設(shè)置為非只讀狀態(tài),所述非只讀狀態(tài)包括降級狀態(tài)和正常讀寫狀態(tài)。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述檢測所述第一磁盤組的當(dāng)前狀態(tài)是否為只讀狀態(tài)之后,還包括: 如果所述第一磁盤組的當(dāng)前狀態(tài)為只讀狀態(tài),則確定上次檢測到的所述第一磁盤組的狀態(tài)是否為非只讀狀態(tài); 如果上次檢測到的所述第一磁盤組的狀態(tài)為非只讀狀態(tài),則將所述第一磁盤組的狀態(tài)設(shè)置為只讀狀態(tài)。
8.一種訪問數(shù)據(jù)的裝置,其特征在于,所述裝置應(yīng)用于獨(dú)立磁盤冗余陣列,所述獨(dú)立磁盤冗余陣列至少包括第一磁盤組,所述第一磁盤組包括至少一個磁盤,每個磁盤預(yù)先被劃分為至少一個條帶,所述裝置包括: 第一獲取模塊,用于獲取第一磁盤組的數(shù)據(jù)讀請求,所述數(shù)據(jù)讀請求中攜帶有讀取地址; 第一確定模塊,用于根據(jù)所述讀取地址確定所述第一磁盤組的第一條帶位置范圍,所述第一條帶位置范圍內(nèi)包括至少一個第一條帶; 讀取模塊,用于依次讀取所述第一條帶位置范圍內(nèi)的每個第一條帶上的數(shù)據(jù); 第一設(shè)置模塊,用于在當(dāng)前的第一條帶上的數(shù)據(jù)未成功讀取時,將當(dāng)前的第一條帶的數(shù)據(jù)讀取結(jié)果設(shè)置為 設(shè)的填充數(shù)據(jù),并繼續(xù)讀取下一個第一條帶上的數(shù)據(jù),直至每個第一條帶上的數(shù)據(jù)全部讀取完畢; 返回模塊,用于返回各個第一條帶的數(shù)據(jù)讀取結(jié)果。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述獨(dú)立磁盤冗余陣列還包括第二磁盤組,所述裝置還包括: 第二獲取模塊,用于獲取所述第一磁盤組的數(shù)據(jù)寫請求,所述數(shù)據(jù)寫請求中攜帶有寫入地址; 第二確定模塊,用于根據(jù)所述寫入地址確定所述第一磁盤組的第二條帶位置范圍,所述第二條帶位置范圍內(nèi)包括至少一個第二條帶; 第一寫入模塊,用于依次向所述第二條帶位置范圍內(nèi)的每個第二條帶寫入數(shù)據(jù); 掃描模塊,用于在當(dāng)前的第二條帶上的數(shù)據(jù)未成功寫入時,掃描所述第一磁盤組的狀態(tài),所述第一磁盤組的狀態(tài)為只讀狀態(tài)、正常讀寫狀態(tài)和降級狀態(tài)中的一種; 第二寫入模塊,用于當(dāng)所述第一磁盤組的狀態(tài)為只讀狀態(tài)時,在所述第二磁盤組中對應(yīng)的條帶上繼續(xù)寫入數(shù)據(jù),直至將數(shù)據(jù)全部寫入完畢。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述裝置,還包括: 響應(yīng)模塊,用于當(dāng)所述第一磁盤組的狀態(tài)為降級狀態(tài)時,響應(yīng)告警。
11.根據(jù)權(quán)利要求8至10中任一權(quán)利要求所述的裝置,其特征在于,所述裝置,還包括: 第一檢測模塊,用于檢測所述第一磁盤組中各個磁盤的狀態(tài)是否發(fā)生改變,所述磁盤的狀態(tài)為新盤狀態(tài)、正常狀態(tài)和故障狀態(tài)中的一種; 格式化模塊,用于當(dāng)所述第一磁盤組中的第一磁盤的狀態(tài)由故障狀態(tài)變?yōu)樾卤P狀態(tài)時,對所述第一磁盤進(jìn)行格式化; 劃分模塊,用于對格式化后的第一磁盤進(jìn)行條帶劃分;第二設(shè)置模塊,用于將劃分得到的每個條帶的狀態(tài)設(shè)置為未寫入狀態(tài)。
12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述第一設(shè)置模塊,還用于在讀取未寫入狀態(tài)的條帶上的數(shù)據(jù)時,將未寫入狀態(tài)的條帶的數(shù)據(jù)讀取結(jié)果設(shè)置為預(yù)設(shè)的填充數(shù)據(jù)。
13.根據(jù)權(quán)利要求8-12中任一權(quán)利要求所述的裝置,其特征在于,所述裝置還包括:第二檢測模塊,用于檢測所述第一磁盤組的當(dāng)前狀態(tài)是否為只讀狀態(tài),所述只讀狀態(tài)為所述第一磁盤組中至少兩個磁盤的狀態(tài)為故障狀態(tài); 第三確定模塊,用于當(dāng)所述第一磁盤組的當(dāng)前狀態(tài)為非只讀狀態(tài)時,確定上次檢測到的所述第一磁盤組的狀態(tài)是否為只讀狀態(tài); 第三設(shè)置模塊,用于當(dāng)上次檢測到的所述第一磁盤組的狀態(tài)為只讀狀態(tài)時,將所述第一磁盤組的狀態(tài)設(shè)置為非只讀寫狀態(tài),所述非只讀狀態(tài)包括降級狀態(tài)和正常讀寫狀態(tài)。
14.根據(jù)權(quán)利要求13所述的裝置,其特征在于,所述裝置,還包括: 第四確定模塊,用于當(dāng)所述第一磁盤組的當(dāng)前狀態(tài)為只讀狀態(tài)時,確定上次檢測到的所述第一磁盤組的狀態(tài)是否為非只讀狀態(tài); 第四設(shè)置模塊,用于當(dāng)上次檢測到的所述第一磁盤組的狀態(tài)為非只讀狀態(tài)時,將所述第一磁盤組的狀態(tài)設(shè)置為只讀狀態(tài)。
【文檔編號】G06F3/06GK104007936SQ201410007103
【公開日】2014年8月27日 申請日期:2014年1月7日 優(yōu)先權(quán)日:2014年1月7日
【發(fā)明者】陳曉亮, 石玉清, 雷勇, 王天課 申請人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
石柱| 博罗县| 大理市| 仪征市| 西安市| 临沧市| 眉山市| 仪征市| 南阳市| 吉水县| 日照市| 将乐县| 新源县| 麦盖提县| 仁怀市| 北辰区| 湖州市| 尼勒克县| 广东省| 遵化市| 晋宁县| 莱西市| 澄城县| 嵊泗县| 刚察县| 海门市| 乌鲁木齐市| 淳化县| 盐城市| 克东县| 开远市| 侯马市| 南宁市| 灌南县| 孝义市| 阜阳市| 云阳县| 晴隆县| 鄯善县| 佛教| 勃利县|