一種主機與裸存儲塊之間的通信故障檢測方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信技術(shù)領(lǐng)域,特別是涉及一種主機與裸存儲塊之間的通信故障檢測方法和裝置。
【背景技術(shù)】
[0002]目前,存儲服務(wù)器主要通過基于IP網(wǎng)絡(luò)的小型計算機系統(tǒng)接口(interface SmallComputer System Interface,iSCSI)協(xié)議對外提供共享存儲服務(wù),實現(xiàn)在IP網(wǎng)絡(luò)上的主機和存儲設(shè)備之間進行大量數(shù)據(jù)的封裝和可靠傳輸。
[0003]通過iSCSI協(xié)議對外提供共享存儲服務(wù)的一種方式是,在基于iSCSI協(xié)議的存儲設(shè)備上創(chuàng)建很多個裸存儲塊,不同的裸存儲塊分配給不同的主機,各主機分別管理和訪問自己的裸存儲塊。其中,主機掛載所述裸存儲塊,并且主機上不加載任何文件系統(tǒng),因此,相當(dāng)于將多個主機的本地磁盤集中放置在一個網(wǎng)絡(luò)化的設(shè)備中,各主機之間僅實現(xiàn)硬件設(shè)備層的共享。
[0004]在云計算虛擬化管理平臺中,各個服務(wù)器是以集群方式進行管理的,在服務(wù)器上創(chuàng)建虛擬機并以集群方式對所述虛擬機進行管理和監(jiān)控。在集群啟用高可用性(HA)的情況下,一旦某臺主機或主機上的虛擬機發(fā)生故障,需要立即在集群內(nèi)另一臺主機上重啟所有受影響的虛擬機。因此,在集群啟用HA的情況下,如果由于主機故障、或主機與存儲設(shè)備之間的連接斷開等原因,導(dǎo)致主機與存儲設(shè)備之間出現(xiàn)了通信故障,需要及時檢測出這種通信故障,以便重啟受影響的虛擬機。
[0005]然而,當(dāng)存儲設(shè)備以裸存儲塊的方式提供共享存儲服務(wù)時,目前還無法檢測出主機與裸存儲塊之間是否存在通信故障。
【發(fā)明內(nèi)容】
[0006]有鑒于此,本發(fā)明提出了一種主機與裸存儲塊之間的通信故障檢測方法和裝置,能夠檢測出主機與裸存儲塊之間是否存在通信故障。
[0007]本發(fā)明提出的技術(shù)方案是:
[0008]一種主機與裸存儲塊之間的通信故障檢測方法,主機掛載所述裸存儲塊,該方法包括:
[0009]將所述裸存儲塊與檢測塊相關(guān)聯(lián),使得當(dāng)所述檢測塊無法訪問時,與所述檢測塊關(guān)聯(lián)的裸存儲塊也無法訪問;
[0010]主機通過共享文件系統(tǒng)掛載所述檢測塊,定時向所述檢測塊寫入該主機對應(yīng)的時間戳文件;
[0011]讀取所述檢測塊中的時間戳文件,當(dāng)所述時間戳文件更新不及時時,判定與所述時間戳文件對應(yīng)的主機與該對應(yīng)的主機掛載的裸存儲塊之間出現(xiàn)通信故障。
[0012]一種主機與裸存儲塊之間的通信故障檢測裝置,該裝置位于主機中,包括存儲塊掛載模塊、時間戳寫入模塊和故障檢測模塊;
[0013]所述存儲塊掛載模塊,用于掛載裸存儲塊,并通過共享文件系統(tǒng)掛載檢測塊,其中,所述檢測塊與所述裸存儲塊關(guān)聯(lián),當(dāng)所述檢測塊無法訪問時,與所述檢測塊關(guān)聯(lián)的裸存儲塊也無法訪問;
[0014]所述時間戳寫入模塊,用于定時向所述檢測塊寫入該主機對應(yīng)的時間戳文件;
[0015]所述故障檢測模塊,用于讀取所述檢測塊中的時間戳文件,當(dāng)所述時間戳文件更新不及時時,判定與所述時間戳文件對應(yīng)的主機與該對應(yīng)的主機掛載的裸存儲塊之間出現(xiàn)通信故障。
[0016]由上述技術(shù)方案可見,本發(fā)明實施例中,將主機掛載的裸存儲塊與檢測塊相關(guān)聯(lián),使得當(dāng)所述檢測塊無法訪問時,與所述檢測塊關(guān)聯(lián)的裸存儲塊也無法訪問,主機通過共享文件系統(tǒng)掛載所述檢測塊,定時向所述檢測塊寫入該主機對應(yīng)的時間戳文件,讀取所述檢測塊中的時間戳文件,當(dāng)時間戳文件更新不及時時,可以判定所述時間戳文件對應(yīng)的主機與所述檢測塊之間存在通信故障,由于主機掛載的裸存儲塊和檢測塊是關(guān)聯(lián)的,當(dāng)主機由于通信故障無法訪問檢測塊時,該主機也必然無法訪問自身掛載的裸存儲塊,因此,可以判定所述時間戳文件對應(yīng)的主機與該對應(yīng)的主機掛載的裸存儲塊之間存在通信故障。
[0017]可見,本發(fā)明實施例將裸存儲塊與檢測塊相關(guān)聯(lián),使得當(dāng)檢測塊無法訪問時,裸存儲塊也無法訪問,并采用共享文件系統(tǒng)掛載所述檢測塊,通過判斷主機是否能夠正常訪問檢測塊,能夠判斷出主機是否能夠正常訪問自身掛載的裸存儲塊,因此能夠檢測出主機與裸存儲塊之間是否存在通信故障。
【附圖說明】
[0018]圖1是本發(fā)明實施例提供的主機與裸存儲塊之間的通信故障檢測方法流程圖。
[0019]圖2是本發(fā)明實施例提供的圖1所示方法的應(yīng)用示意圖。
[0020]圖3是本發(fā)明實施例提供的主機的硬件結(jié)構(gòu)連接圖。
[0021]圖4是本發(fā)明實施例提供的主機與裸存儲塊之間的通信故障檢測裝置結(jié)構(gòu)示意圖。
【具體實施方式】
[0022]通過iSCSI協(xié)議對外提供共享存儲服務(wù)的另一種方式是,通過共享文件系統(tǒng)實現(xiàn)存儲設(shè)備的共享。在這種方式下,在存儲設(shè)備上劃分出多個存儲塊,并且,在所有需要數(shù)據(jù)共享的主機上安裝分布式共享文件系統(tǒng),主機通過所述共享文件系統(tǒng)掛載所述存儲塊,以便通過共享文件系統(tǒng)來保證多個主機能夠?qū)ν粋€存儲塊進行訪問,并且不會引起數(shù)據(jù)沖突。因此,在這種方式下,多個存儲塊能夠被多臺主機同時訪問,且不會因為并發(fā)訪問而導(dǎo)致存儲數(shù)據(jù)被破壞,比如,存儲塊1、存儲塊2和存儲塊3可以都掛載到主機1、主機2和主機3上,主機1、主機2和主機3可以同時對存儲塊1、或同時對存儲塊2、或同時對存儲塊3進行訪問。
[0023]當(dāng)通過共享文件系統(tǒng)的方式實現(xiàn)存儲設(shè)備的共享時,能夠通過所述共享文件系統(tǒng),采用文件讀寫檢測故障的方式,檢測出主機與存儲設(shè)備之間是否存在通信故障。具體地,每個主機在共享存儲設(shè)備上創(chuàng)建一個小文件,并定時寫入主機信息和寫入該主機信息時的時刻信息,如果讀寫該文件都正常,則說明主機與共享存儲設(shè)備連接正常,反之,如果無法進行正常的文件讀寫,說明主機與存儲設(shè)備之間存在通信故障,比如,主機與存儲設(shè)備的連接發(fā)生故障、或者主機本身發(fā)生故障。
[0024]然而,當(dāng)存儲設(shè)備以裸存儲塊的方式掛載到主機上時,由于主機沒有通過共享文件系統(tǒng)方式掛載該裸存儲塊,因此主機無法向所述裸存儲塊寫文件,也無法從所述裸存儲塊中讀取文件,因而也就無法檢測出主機與該裸存儲塊之間是否存在通信故障。
[0025]基于上述分析,本發(fā)明實施例提供了一種主機與裸存儲塊之間的通信故障檢測方法和裝置,能夠檢測出主機與裸存儲塊之間是否存在通信故障。
[0026]圖1是本發(fā)明實施例提供的主機與裸存儲塊之間的通信故障檢測方法流程圖。
[0027]如圖1所示,該流程包括:
[0028]步驟101,將所述裸存儲塊與檢測塊相關(guān)聯(lián),使得當(dāng)所述檢測塊無法訪問時,與所述檢測塊關(guān)聯(lián)的裸存儲塊也無法訪問。
[0029]本步驟可以在配置網(wǎng)絡(luò)環(huán)境時完成,用于保證當(dāng)所述檢測塊無法訪問時,與所述檢測塊關(guān)聯(lián)的裸存儲塊也無法訪問。
[0030]步驟102,主機通過共享文件系統(tǒng)掛載所述檢測塊,定時向所述檢測塊寫入該主機對應(yīng)的時間戳文件。
[0031]步驟103,讀取所述檢測塊中的時間戳文件,當(dāng)時間戳文件更新不及時時,判定與所述時間戳文件對應(yīng)的主機與該對應(yīng)的主機掛載的裸存儲塊之間出現(xiàn)通信故障。
[0032]可見,圖1所示方法通過將裸存儲塊與檢測塊相關(guān)聯(lián),使得當(dāng)檢測塊無法訪問時,裸存儲塊也無法訪問,借助所述檢測塊來檢測主機與裸存儲塊之間是否存在通信故障。
[0033]具體地,主機采用共享文件系統(tǒng)掛載所述檢測塊,通過判斷主機是否能夠正常訪問檢測塊,能夠判斷出主機是否能夠正常訪問自身掛載的裸存儲塊,因此能夠檢測出主機與裸存儲塊之間是否存在通信故障。
[0034]其中,裸存儲塊和檢測塊之間的關(guān)聯(lián)關(guān)系可以在布置網(wǎng)絡(luò)環(huán)境時進行配置。
[0035]裸存儲塊與檢測塊之間可以是一對一的關(guān)系,即每個裸存儲塊分別關(guān)聯(lián)一個檢測塊,也可以多對一的關(guān)系,即多個裸存儲塊關(guān)聯(lián)共同的一個檢測塊。
[0036]將裸存儲塊與檢測塊相關(guān)聯(lián)的一種方式是,在所述裸存儲塊所在的物理存儲設(shè)備上劃分檢測塊,換言之,裸存儲塊和該裸存儲塊關(guān)聯(lián)的檢測塊在同一個物理存儲設(shè)備上,因此一旦檢測塊無法訪問,則該裸存儲塊也必然無法訪問,進而能夠通過主機與所述檢測塊之間的通信情況,檢測出主機與所述裸存儲塊之間的通信是否出現(xiàn)了故障。
[0037]本發(fā)明實施例還提供了將裸存儲塊與檢測塊相關(guān)聯(lián)的另一種方式,在該另一種方式下,與該檢測塊相關(guān)聯(lián)的裸存儲塊的個數(shù)為多個,并且,該多個裸存儲塊中可以有部分裸存儲塊與所述檢測塊不在同一個物理存儲設(shè)備上。
[0038]具體地,當(dāng)采用存儲服務(wù)器集群提供共享存儲服務(wù)時,可以將檢測塊建立在存儲服務(wù)器集群的中心節(jié)點上,該檢測塊關(guān)聯(lián)存儲服務(wù)器集群中其他所有的裸存儲塊。
[0039]其中,由于所述檢測塊位于用于作為存儲服務(wù)器集群中心節(jié)點的物理存儲設(shè)備上,因此,一旦檢測塊無法訪問,則說明作為存儲服務(wù)器集群中心節(jié)點的物理存儲設(shè)備無法訪問,因此該存儲服務(wù)器集群中的其他所有裸存儲塊也無法訪問。
[0040]其中,由于所述檢測塊僅用于檢測主機與檢測塊之間的通信是否正常,因此,檢測塊中可以僅保存有主機對應(yīng)的時間戳文件,而不必保存其他文件。因此,檢測塊的容量也可以設(shè)置的比較小,比如只有128M。
[0041]在檢測出主機與關(guān)聯(lián)的裸存儲塊的通信出現(xiàn)故障之后,還可以將所述主機上的掛載了所述關(guān)聯(lián)的裸存儲塊的虛擬機迀移到根據(jù)預(yù)設(shè)原則確定出的目的主機上,并將所述關(guān)聯(lián)的裸存儲塊重新掛載到迀移到所述目的主機的所述虛擬機上,從而實現(xiàn)虛擬機集群的高可用性。
[0042]其中,關(guān)于所述