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