本發(fā)明涉及多節(jié)點(diǎn)存儲(chǔ)技術(shù)領(lǐng)域,特別是涉及一種多節(jié)點(diǎn)存儲(chǔ)系統(tǒng)以及l(fā)unownernode切換方法。
背景技術(shù):
現(xiàn)有雙節(jié)點(diǎn)存儲(chǔ)系統(tǒng)中,節(jié)點(diǎn)失效或者節(jié)點(diǎn)重新上線都會(huì)引起lunownernode的切換。在雙節(jié)點(diǎn)系統(tǒng)中,節(jié)點(diǎn)失效則lunownernode均切換為當(dāng)前在線節(jié)點(diǎn);失效節(jié)點(diǎn)重新上線時(shí),則會(huì)根據(jù)均衡策略重新選擇ownernode。
多節(jié)點(diǎn)存儲(chǔ)系統(tǒng)中,正常情況下各節(jié)點(diǎn)會(huì)緩存以自己為ownernode和partnernode的lun的數(shù)據(jù)。當(dāng)其中一個(gè)節(jié)點(diǎn)出現(xiàn)故障時(shí)(假設(shè)node1發(fā)生故障),此時(shí)node0上lun0數(shù)據(jù)和node2上lun1數(shù)據(jù)只有一份。為了確保數(shù)據(jù)安全,node0上lun0數(shù)據(jù)和node2上lun1數(shù)據(jù)需要下刷。在現(xiàn)有策略中需要由ownernode做下刷動(dòng)作,因此lun0的緩存數(shù)據(jù)可以直接由node0進(jìn)行下刷;lun1此時(shí)ownernode處于故障狀態(tài),當(dāng)故障節(jié)點(diǎn)(node1)重新上線時(shí),由于所有l(wèi)un均處于ownernode在線的情況,如果將所有的lun重新分配ownernode,效率將會(huì)很低。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供了一種多節(jié)點(diǎn)存儲(chǔ)系統(tǒng)lunownernode切換方法,在故障節(jié)點(diǎn)重新上線后無需重新將所有的lun進(jìn)行分配,提高了存儲(chǔ)系統(tǒng)的效率。
為解決上述技術(shù)問題,本發(fā)明實(shí)施例提供了一種多節(jié)點(diǎn)存儲(chǔ)系統(tǒng)lunownernode切換方法,包括:
步驟1,判斷存儲(chǔ)系統(tǒng)中的存儲(chǔ)節(jié)點(diǎn)是否發(fā)生故障;
若是,步驟2,將與故障存儲(chǔ)節(jié)點(diǎn)相鄰的partnernode作為所述故障節(jié)點(diǎn)lunownernode;
步驟3,判斷所述故障節(jié)點(diǎn)是否重新上線;
若是,步驟4,將重新上線的所述故障節(jié)點(diǎn)的lunownernode由所述partnernode修改為原所述故障節(jié)點(diǎn)所在的lunownernode,將原所述故障節(jié)點(diǎn)的prepartnernode和原所述故障節(jié)點(diǎn)的partnernode中與原所述故障節(jié)點(diǎn)對(duì)應(yīng)的緩存數(shù)據(jù)進(jìn)行下刷。
其中,步驟3還包括:
將所述故障節(jié)點(diǎn)重新上線的信息進(jìn)行記錄、存儲(chǔ)和輸出。
其中,所述步驟2,還包括:
將所述故障節(jié)點(diǎn)的名稱、發(fā)生故障時(shí)間進(jìn)行記錄、存儲(chǔ)和輸出。
其中,在所述步驟4之后,還包括:
步驟5,將所述存儲(chǔ)節(jié)點(diǎn)的下刷數(shù)據(jù)的時(shí)間和下刷目的存儲(chǔ)節(jié)點(diǎn)進(jìn)行記錄。
其中,在所述步驟5之后,還包括:
統(tǒng)計(jì)并輸出在預(yù)定時(shí)間段內(nèi)的故障節(jié)點(diǎn)的位置和數(shù)量信息。
除此之外,本發(fā)明實(shí)施例還提供了一種多節(jié)點(diǎn)存儲(chǔ)系統(tǒng),包括多個(gè)順序連接的存儲(chǔ)節(jié)點(diǎn)和lun切換模塊,所述存儲(chǔ)節(jié)點(diǎn)存儲(chǔ)本存儲(chǔ)節(jié)點(diǎn)的緩存數(shù)據(jù)和上一個(gè)相鄰所述存儲(chǔ)節(jié)點(diǎn)的緩存數(shù)據(jù),所述lun切換模塊用于在所述存儲(chǔ)節(jié)點(diǎn)發(fā)生故障成為故障節(jié)點(diǎn),將與所述故障節(jié)點(diǎn)相鄰的所述存儲(chǔ)節(jié)點(diǎn)作為所述故障節(jié)點(diǎn)lunownernode,在所述故障節(jié)點(diǎn)重新上線后,將重新上線的所述故障節(jié)點(diǎn)的lunownernode由所述partnernode修改為原所述故障節(jié)點(diǎn)所在的lunownernode,將原所述故障節(jié)點(diǎn)的prepartnernode和原所述故障節(jié)點(diǎn)的partnernode中與原所述故障節(jié)點(diǎn)對(duì)應(yīng)的緩存數(shù)據(jù)進(jìn)行下刷。
其中,還包括與所述lun切換模塊連接的日志模塊,用于記錄所述故障模塊發(fā)生故障的時(shí)間和重新上線的時(shí)間以及所述存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)下刷信息。
其中,還包括與所述日志模塊連接的統(tǒng)計(jì)模塊,用于統(tǒng)計(jì)在預(yù)定時(shí)間段內(nèi)發(fā)生故障節(jié)點(diǎn)的位置和數(shù)量信息。
本發(fā)明實(shí)施例所提供的多節(jié)點(diǎn)存儲(chǔ)系統(tǒng)以及l(fā)unownernode切換方法,與現(xiàn)有技術(shù)相比,具有以下優(yōu)點(diǎn):
本發(fā)明實(shí)施例提供的多節(jié)點(diǎn)存儲(chǔ)系統(tǒng)lunownernode切換方法,包括:
步驟1,判斷存儲(chǔ)系統(tǒng)中的存儲(chǔ)節(jié)點(diǎn)是否發(fā)生故障;
若是,步驟2,將與故障存儲(chǔ)節(jié)點(diǎn)相鄰的partnernode作為所述故障節(jié)點(diǎn)lunownernode;
步驟3,判斷所述故障節(jié)點(diǎn)是否重新上線;
若是,步驟4,將重新上線的所述故障節(jié)點(diǎn)的lunownernode由所述partnernode修改為原所述故障節(jié)點(diǎn)所在的lunownernode,將原所述故障節(jié)點(diǎn)的prepartnernode和原所述故障節(jié)點(diǎn)的partnernode中與原所述故障節(jié)點(diǎn)對(duì)應(yīng)的緩存數(shù)據(jù)進(jìn)行下刷。
本發(fā)明實(shí)施例提供的多節(jié)點(diǎn)存儲(chǔ)系統(tǒng),包括多個(gè)順序連接的存儲(chǔ)節(jié)點(diǎn)和lun切換模塊,所述存儲(chǔ)節(jié)點(diǎn)存儲(chǔ)本存儲(chǔ)節(jié)點(diǎn)的緩存數(shù)據(jù)和上一個(gè)相鄰所述存儲(chǔ)節(jié)點(diǎn)的緩存數(shù)據(jù),所述lun切換模塊用于在所述存儲(chǔ)節(jié)點(diǎn)發(fā)生故障成為故障節(jié)點(diǎn),將與所述故障節(jié)點(diǎn)相鄰的所述存儲(chǔ)節(jié)點(diǎn)作為所述故障節(jié)點(diǎn)lunownernode,在所述故障節(jié)點(diǎn)重新上線后,將重新上線的所述故障節(jié)點(diǎn)的lunownernode由所述partnernode修改為原所述故障節(jié)點(diǎn)所在的lunownernode,將原所述故障節(jié)點(diǎn)的prepartnernode和原所述故障節(jié)點(diǎn)的partnernode中與原所述故障節(jié)點(diǎn)對(duì)應(yīng)的緩存數(shù)據(jù)進(jìn)行下刷。
所述多節(jié)點(diǎn)存儲(chǔ)系統(tǒng)以及l(fā)unownernode切換方法,通過有節(jié)點(diǎn)發(fā)生故障時(shí),將相鄰的partnernode作為所述故障節(jié)點(diǎn)lunownernode,以確保lun的緩存數(shù)據(jù)可以正常下刷到后端磁盤,故障節(jié)點(diǎn)重新上線后,根據(jù)記錄的信息,將lun重新交換上線節(jié)點(diǎn)后,將原故障節(jié)點(diǎn)的lunownernode重新設(shè)為新上線接點(diǎn),無需將所有的lun進(jìn)行重新分配,保證了整個(gè)存儲(chǔ)系統(tǒng)的效率。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例提供的多節(jié)點(diǎn)存儲(chǔ)系統(tǒng)lunownernode切換方法的一種具體實(shí)施方式的步驟流程示意圖;
圖2為本發(fā)明實(shí)施例提供的多節(jié)點(diǎn)存儲(chǔ)系統(tǒng)lunownernode切換方法的另一種具體實(shí)施方式的步驟流程示意圖;
圖3為本發(fā)明實(shí)施例多節(jié)點(diǎn)存儲(chǔ)系統(tǒng)的一種具體實(shí)施方式的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(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ù)的范圍。
請(qǐng)參考圖1~圖3,圖1為本發(fā)明實(shí)施例提供的多節(jié)點(diǎn)存儲(chǔ)系統(tǒng)lunownernode切換方法的一種具體實(shí)施方式的步驟流程示意圖;圖2為本發(fā)明實(shí)施例提供的多節(jié)點(diǎn)存儲(chǔ)系統(tǒng)lunownernode切換方法的另一種具體實(shí)施方式的步驟流程示意圖;圖3為本發(fā)明實(shí)施例多節(jié)點(diǎn)存儲(chǔ)系統(tǒng)的一種具體實(shí)施方式的結(jié)構(gòu)示意圖。
在一種具體實(shí)施方式中,所述多節(jié)點(diǎn)存儲(chǔ)系統(tǒng)lunownernode切換方法,包括:
步驟1,判斷存儲(chǔ)系統(tǒng)中的存儲(chǔ)節(jié)點(diǎn)是否發(fā)生故障;
若是,步驟2,將與故障存儲(chǔ)節(jié)點(diǎn)相鄰的partnernode作為所述故障節(jié)點(diǎn)lunownernode;
步驟3,判斷所述故障節(jié)點(diǎn)是否重新上線;
若是,步驟4,將重新上線的所述故障節(jié)點(diǎn)的lunownernode由所述partnernode修改為原所述故障節(jié)點(diǎn)所在的lunownernode,將原所述故障節(jié)點(diǎn)的prepartnernode和原所述故障節(jié)點(diǎn)的partnernode中與原所述故障節(jié)點(diǎn)對(duì)應(yīng)的緩存數(shù)據(jù)進(jìn)行下刷。
通過有節(jié)點(diǎn)發(fā)生故障時(shí),將相鄰的partnernode作為所述故障節(jié)點(diǎn)lunownernode,以確保lun的緩存數(shù)據(jù)可以正常下刷到后端磁盤,故障節(jié)點(diǎn)重新上線后,根據(jù)記錄的信息,將lun重新交換上線節(jié)點(diǎn)后,將原故障節(jié)點(diǎn)的lunownernode重新設(shè)為新上線接點(diǎn),無需將所有的lun進(jìn)行重新分配,保證了整個(gè)存儲(chǔ)系統(tǒng)的效率。
為了進(jìn)一步方便對(duì)多節(jié)點(diǎn)存儲(chǔ)系統(tǒng)進(jìn)行管理,步驟3還包括:
將所述故障節(jié)點(diǎn)重新上線的信息進(jìn)行記錄、存儲(chǔ)和輸出。
通過對(duì)故障節(jié)點(diǎn)重新上線的信息進(jìn)行記錄,實(shí)時(shí)反映當(dāng)前的存儲(chǔ)系統(tǒng)的狀態(tài),方便進(jìn)行管理。
而由于在多節(jié)點(diǎn)存儲(chǔ)系統(tǒng)的工作過程中,可能有節(jié)點(diǎn)會(huì)發(fā)生工作故障,為了方便快速維護(hù),在本發(fā)明的一個(gè)實(shí)施例中,所述步驟2,還包括:
將所述故障節(jié)點(diǎn)的名稱、發(fā)生故障時(shí)間進(jìn)行記錄、存儲(chǔ)和輸出。
由于在故障節(jié)點(diǎn)恢復(fù)之后重新上下之后,是沒有數(shù)據(jù)存儲(chǔ)的,需要相鄰的存儲(chǔ)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)下刷之后才能夠正常使用,為了保證存儲(chǔ)系統(tǒng)的使用可靠性,在所述步驟4之后,還包括:
步驟5,將所述存儲(chǔ)節(jié)點(diǎn)的下刷數(shù)據(jù)的時(shí)間和下刷目的存儲(chǔ)節(jié)點(diǎn)進(jìn)行記錄。
通過記錄數(shù)據(jù)下刷的時(shí)間,避免了在存儲(chǔ)節(jié)點(diǎn)剛上線,但是還沒有被下刷數(shù)據(jù)的情況下被操作的可能性,使得整個(gè)多節(jié)點(diǎn)存儲(chǔ)系統(tǒng)有序運(yùn)行。
為了方便維護(hù)人員對(duì)存儲(chǔ)系統(tǒng)的維護(hù),在本發(fā)明一個(gè)實(shí)施例中,在所述步驟5之后,還包括:
統(tǒng)計(jì)并輸出在預(yù)定時(shí)間段內(nèi)的故障節(jié)點(diǎn)的位置和數(shù)量信息。
通過統(tǒng)計(jì)和輸出在預(yù)定時(shí)間段內(nèi)的故障節(jié)點(diǎn)的位置和數(shù)量信息,即方便進(jìn)行維護(hù),也使得在進(jìn)行相應(yīng)的存儲(chǔ)操作時(shí),通過該方式計(jì)算不同的存儲(chǔ)節(jié)點(diǎn)的工作可靠性,實(shí)現(xiàn)不同的功能。
除此之外,本發(fā)明實(shí)施例還提供了一種多節(jié)點(diǎn)存儲(chǔ)系統(tǒng),包括多個(gè)順序連接的存儲(chǔ)節(jié)點(diǎn)和lun切換模塊10,所述存儲(chǔ)節(jié)點(diǎn)存儲(chǔ)本存儲(chǔ)節(jié)點(diǎn)的緩存數(shù)據(jù)和上一個(gè)相鄰所述存儲(chǔ)節(jié)點(diǎn)的緩存數(shù)據(jù),所述lun切換模塊用于在所述存儲(chǔ)節(jié)點(diǎn)發(fā)生故障成為故障節(jié)點(diǎn),將與所述故障節(jié)點(diǎn)相鄰的所述存儲(chǔ)節(jié)點(diǎn)作為所述故障節(jié)點(diǎn)lunownernode,在所述故障節(jié)點(diǎn)重新上線后,將重新上線的所述故障節(jié)點(diǎn)的lunownernode由所述partnernode修改為原所述故障節(jié)點(diǎn)所在的lunownernode,將原所述故障節(jié)點(diǎn)的prepartnernode和原所述故障節(jié)點(diǎn)的partnernode中與原所述故障節(jié)點(diǎn)對(duì)應(yīng)的緩存數(shù)據(jù)進(jìn)行下刷。
在本發(fā)明的一個(gè)實(shí)施例中,具有多個(gè)存儲(chǔ)節(jié)點(diǎn),node0~node3,節(jié)點(diǎn)(node1)出現(xiàn)故障時(shí),故障節(jié)點(diǎn)的lunownernode需要切換為故障節(jié)點(diǎn)的partnernode,以保障lun1緩存數(shù)據(jù)可以正常下刷,同時(shí)集群保存lun1原ownernode信息,node020下刷lun0數(shù)據(jù),node240下刷lun1數(shù)據(jù);node130重新上線后,需要根據(jù)集群中l(wèi)un1原ownernode信息將lun130的ownernode修改為node130,保證了整個(gè)存儲(chǔ)系統(tǒng)的效率。節(jié)點(diǎn)重新上線時(shí),先由node240將lun1數(shù)據(jù)進(jìn)行下刷,然后將lun1ownernode修改為node130。
為了方便后續(xù)對(duì)故障節(jié)點(diǎn)進(jìn)行維護(hù)管理,提高存儲(chǔ)系統(tǒng)的工作可靠性,在本發(fā)明一個(gè)實(shí)施例中,所述多節(jié)點(diǎn)存儲(chǔ)系統(tǒng)還包括與所述lun切換模塊連接的日志模塊,用于記錄所述故障模塊發(fā)生故障的時(shí)間和重新上線的時(shí)間以及所述存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)下刷信息。
為了方便維護(hù)人員對(duì)存儲(chǔ)系統(tǒng)的維護(hù)和管理,提高存儲(chǔ)系統(tǒng)的應(yīng)用可靠性,所述多節(jié)點(diǎn)存儲(chǔ)系統(tǒng)還包括與所述日志模塊連接的統(tǒng)計(jì)模塊,用于統(tǒng)計(jì)在預(yù)定時(shí)間段內(nèi)發(fā)生故障節(jié)點(diǎn)的位置和數(shù)量信息。通過統(tǒng)計(jì)和輸出在預(yù)定時(shí)間段內(nèi)的故障節(jié)點(diǎn)的位置和數(shù)量信息,即方便進(jìn)行維護(hù),也使得在進(jìn)行相應(yīng)的存儲(chǔ)操作時(shí),通過該方式計(jì)算不同的存儲(chǔ)節(jié)點(diǎn)的工作可靠性,實(shí)現(xiàn)不同的功能。
綜上所述,本發(fā)明實(shí)施例提供的多節(jié)點(diǎn)存儲(chǔ)系統(tǒng)以及l(fā)unownernode切換方法,通過有節(jié)點(diǎn)發(fā)生故障時(shí),將相鄰的partnernode作為所述故障節(jié)點(diǎn)lunownernode,以確保lun的緩存數(shù)據(jù)可以正常下刷到后端磁盤,故障節(jié)點(diǎn)重新上線后,根據(jù)記錄的信息,將lun重新交換上線節(jié)點(diǎn)后,將原故障節(jié)點(diǎn)的lunownernode重新設(shè)為新上線接點(diǎn),無需將所有的lun進(jìn)行重新分配,保證了整個(gè)存儲(chǔ)系統(tǒng)的效率。
以上對(duì)本發(fā)明所提供的多節(jié)點(diǎn)存儲(chǔ)系統(tǒng)以及l(fā)unownernode切換方法進(jìn)行了詳細(xì)介紹。本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想。應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以對(duì)本發(fā)明進(jìn)行若干改進(jìn)和修飾,這些改進(jìn)和修飾也落入本發(fā)明權(quán)利要求的保護(hù)范圍內(nèi)。