本發(fā)明涉及多用戶管理技術(shù)領(lǐng)域,尤其涉及一種共享設(shè)備熱拔出方法、裝置和多用戶管理系統(tǒng)。
背景技術(shù):
目前,大多數(shù)通信系統(tǒng)都支持多用戶管理,在系統(tǒng)使用中,經(jīng)常遇到多用戶共享的設(shè)備需要進行熱拔出的情況,因此,支持的系統(tǒng)中的共享設(shè)備接口熱拔出也是系統(tǒng)的重要功能之一。但是當多個用戶同時登陸系統(tǒng),并同時對共享設(shè)備進行操作時,某個用戶突然對共享設(shè)備進行熱拔出,往往會導(dǎo)致其他用戶的數(shù)據(jù)丟失,導(dǎo)致設(shè)備訪問異常。
舉例來說,以io卡熱拔出的過程為例,當某個用戶進行io卡的熱拔出時,會導(dǎo)致整個系統(tǒng)的信息流中斷,進而導(dǎo)致其它用戶的io請求數(shù)據(jù)丟失,從而出現(xiàn)訪問異常的問題。
技術(shù)實現(xiàn)要素:
針對現(xiàn)有方法的不足,本發(fā)明提出了一種共享設(shè)備熱拔出方法、裝置和多用戶管理系統(tǒng),解決了現(xiàn)有技術(shù)中的問題,在某個用戶進行共享設(shè)備熱拔出后,并不會導(dǎo)致其他用戶的應(yīng)用請求數(shù)據(jù)丟失。
為達到以上目的,本發(fā)明的技術(shù)方案如下:
一種共享設(shè)備熱拔出方法,應(yīng)用于多用戶管理系統(tǒng),該多用戶管理系統(tǒng)中包括多個用戶和多個相同的共享設(shè)備,每個共享設(shè)備可由多個用戶同時共享,該方法包括:
接收到第一共享設(shè)備即將被熱拔出的指示信息;
讀取并記錄用戶與用戶正在使用的共享設(shè)備之間的映射關(guān)系,得到指示所述用戶與用戶正在使用的共享設(shè)備之間的映射關(guān)系的映射列表,所述映射列表中包括第一用戶與所述第一共享設(shè)備的映射關(guān)系,所述用戶包括所述第一用戶和第二用戶,所述第一用戶為將所述第一共享設(shè)備進行熱拔出的用戶,所述第二用戶為所述多個用戶中除所述第一用戶之外的其它用戶;
根據(jù)所述第一共享設(shè)備的標識信息,在預(yù)先存儲的指示所述多個共享設(shè)備及其對應(yīng)的狀態(tài)信息的狀態(tài)列表中,查找到所述第一共享設(shè)備,并將所述狀態(tài)列表中的所述第一共享設(shè)備的狀態(tài)信息修改為正在拔出或已拔出,所述狀態(tài)信息包括正常使用狀態(tài)、正在拔出、以及已拔出;
當接收到第一共享設(shè)備即將被熱拔出的指示信息后,接收到所述第二用戶發(fā)送的共享設(shè)備應(yīng)用請求時,根據(jù)所述映射列表和所述狀態(tài)列表,停止向所述第一共享設(shè)備發(fā)送所述第二用戶的應(yīng)用請求,并向第二共享設(shè)備發(fā)送所述第二用戶的應(yīng)用請求,所述第二共享設(shè)備為所述多個共享設(shè)備中除所述第一共享設(shè)備之外的其它未被熱拔出的共享設(shè)備。
優(yōu)選的,所述將所述狀態(tài)列表中的所述第一共享設(shè)備的狀態(tài)信息修改為正在拔出或已拔出,具體為:
查找到所述第一共享設(shè)備之后,將所述狀態(tài)列表中的所述第一共享設(shè)備的狀態(tài)信息由正常使用狀態(tài)修改為正在拔出;
當接收到所述第一共享設(shè)備完成熱拔出的指示信息后,根據(jù)所述第一共享設(shè)備的標識信息,在所述狀態(tài)列表中,查找到所述第一共享設(shè)備;
將所述狀態(tài)列表中的所述第一共享設(shè)備的狀態(tài)信息由正在拔出修改為已拔出。
優(yōu)選的,所述查找到所述第一共享設(shè)備,具體為:
在所述狀態(tài)列表中,將所述第一共享設(shè)備的標識信息,與所述狀態(tài)列表中的多個共享設(shè)備的標識信息進行一一比對,以查找到所述第一共享設(shè)備。
優(yōu)選的,還包括:
當接收到所述第一共享設(shè)備完成熱拔出的指示信息后,清除所述映射列表中的所述第一用戶與所述第一共享設(shè)備的映射關(guān)系。
優(yōu)選的,根據(jù)所述映射列表和所述狀態(tài)列表,停止向所述第一共享設(shè)備發(fā)送所述第二用戶的共享設(shè)備應(yīng)用請求,并向第二共享設(shè)備發(fā)送所述第二用戶的應(yīng)用請求,具體為:
讀取所述映射列表,根據(jù)所述第二用戶的標識信息,在所述映射列表中查找到與所述第二用戶對應(yīng)的共享設(shè)備;
根據(jù)查找到的與所述第二用戶對應(yīng)的共享設(shè)備的標識信息,在所述狀態(tài)列表中查找到與所述第二用戶對應(yīng)的共享設(shè)備的狀態(tài)信息;
根據(jù)所述狀態(tài)列表,判斷與所述第二用戶對應(yīng)的共享設(shè)備的狀態(tài)信息是否為正在拔出或已拔出,若是,則判定該與所述第二用戶對應(yīng)的共享設(shè)備為所述第一共享設(shè)備,停止向所述第一共享設(shè)備發(fā)送所述第二用戶的共享設(shè)備應(yīng)用請求,并向第二共享設(shè)備發(fā)送所述第二用戶的應(yīng)用請求;若否,則判定該與所述第二用戶對應(yīng)的共享設(shè)備為所述第二共享設(shè)備,則向所述第二共享設(shè)備發(fā)送所述第二用戶的應(yīng)用請求。
優(yōu)選的,所述向所述第二共享設(shè)備發(fā)送所述第二用戶的應(yīng)用請求,具體為:
根據(jù)負載均衡機制,為所述第二用戶的應(yīng)用請求分配相應(yīng)的第二共享設(shè)備;
將所述第二用戶的應(yīng)用請求,發(fā)送給所述相應(yīng)的第二共享設(shè)備。
優(yōu)選的,所述共享設(shè)備為io卡。
優(yōu)選的,所述io卡為fc卡、sas卡或iscsi卡。
優(yōu)選的,在所述映射列表中,所述用戶與用戶正在使用的共享設(shè)備之間的映射關(guān)系為,所述用戶的id號碼與所述io卡的id號碼對應(yīng)關(guān)聯(lián);
在所述狀態(tài)列表中,所述io卡的id號碼與該io卡的狀態(tài)信息一一對應(yīng);
所述共享設(shè)備的標識信息為所述io卡的id號碼。
優(yōu)選的,所述狀態(tài)信息為狀態(tài)標識,所述狀態(tài)標識包括指示io卡處于正常使用狀態(tài)的標識、指示io卡正在拔出的標識、以及指示io卡已拔出的標識。
優(yōu)選的,所述第一共享設(shè)備即將被熱拔出的指示信息為,所述第一io卡與對應(yīng)的插卡口接觸位置出現(xiàn)松動時,發(fā)出的指示信息;所述第一共享設(shè)備完成熱拔出的指示信息為,與所述第一io卡與對應(yīng)的插卡口處于閑置狀態(tài)時,發(fā)出的指示信息。
本發(fā)明實施例還提供了一種共享設(shè)備熱拔出裝置,應(yīng)用于多用戶管理系統(tǒng),該多用戶管理系統(tǒng)中包括多個用戶和多個共享設(shè)備,每個共享設(shè)備可由多個用戶同時共享,該裝置包括:
第一接收單元,用于接收第一共享設(shè)備即將被熱拔出的指示信息,以及接收所述第一共享設(shè)備完成熱拔出的指示信息;
第二接收單元,用于接收用戶發(fā)送的應(yīng)用請求;
記錄單元,用于讀取并記錄用戶與用戶正在使用的共享設(shè)備之間的映射關(guān)系,得到指示所述用戶與用戶正在使用的共享設(shè)備之間的映射關(guān)系的映射列表,所述映射列表中包括第一用戶與所述第一共享設(shè)備的映射關(guān)系,所述用戶包括所述第一用戶和第二用戶,所述第一用戶為將所述第一共享設(shè)備進行熱拔出的用戶,所述第二用戶為所述多個用戶中除所述第一用戶之外的其它用戶;
存儲單元,用于存儲所述映射列表和指示所述多個共享設(shè)備及其對應(yīng)的狀態(tài)信息的狀態(tài)列表;
第一查找單元,用于根據(jù)所述第一共享設(shè)備或所述第二共享設(shè)備的標識信息,在所述狀態(tài)列表中,查找到所述第一共享設(shè)備或所述第二共享設(shè)備,所述第二共享設(shè)備為所述多個共享設(shè)備中除所述第一共享設(shè)備之外的其它未被熱拔出的共享設(shè)備;
狀態(tài)設(shè)置單元,用于設(shè)置所述狀態(tài)列表中的共享設(shè)備的狀態(tài)信息,所述狀態(tài)信息包括正常使用狀態(tài)、正在拔出、以及已拔出;
控制單元,用于根據(jù)所述第一接收單元和所述第二接收單元接收到的信息,以及所述映射列表和所述狀態(tài)列表,控制向所述第一共享設(shè)備和所述第二共享設(shè)備發(fā)送所述第二用戶的應(yīng)用請求的方式;當接收到第一共享設(shè)備即將被熱拔出的指示信息后,接收到所述第二用戶發(fā)送的共享設(shè)備應(yīng)用請求時,停止向所述第一共享設(shè)備發(fā)送所述第二用戶的應(yīng)用請求,并向所述第二共享設(shè)備發(fā)送所述第二用戶的應(yīng)用請求。
優(yōu)選的,還包括:更新單元,用于當接收到所述第一共享設(shè)備完成熱拔出的指示信息后,清除所述映射列表中的所述第一用戶與所述第一共享設(shè)備的映射關(guān)系。
優(yōu)選的,所述控制單元包括:
第二查找單元,用于讀取所述映射列表,根據(jù)所述第二用戶的標識信息,在所述映射列表中查找到與所述第二用戶對應(yīng)的共享設(shè)備;
判斷單元,用于根據(jù)所述狀態(tài)列表,判斷與所述第二用戶對應(yīng)的共享設(shè)備的狀態(tài)信息是否為正在拔出或已拔出;
攔截單元,用于判定與所述第二用戶對應(yīng)的共享設(shè)備為所述第一共享設(shè)備時,停止向所述第一共享設(shè)備發(fā)送所述第二用戶的應(yīng)用請求;
分配單元,用于判定與所述第二用戶對應(yīng)的共享設(shè)備為所述第一共享設(shè)備或所述第二共享設(shè)備后,為所述第二用戶的應(yīng)用請求分配相應(yīng)的第二共享設(shè)備;
發(fā)送單元,用于將所述第二用戶的應(yīng)用請求,發(fā)送給所述相應(yīng)的第二共享設(shè)備。
本發(fā)明實施例還提供了一種多用戶管理系統(tǒng),該系統(tǒng)中包括多個用戶、多個相同的共享設(shè)備及處理器,每個共享設(shè)備可由多個用戶同時共享;
所述處理器接收到第一共享設(shè)備即將被熱拔出的指示信息后,讀取并記錄用戶與用戶正在使用的共享設(shè)備之間的映射關(guān)系,得到指示所述用戶與用戶正在使用的共享設(shè)備之間的映射關(guān)系的映射列表,并根據(jù)所述第一共享設(shè)備的標識信息,在預(yù)先存儲的指示所述多個共享設(shè)備及其對應(yīng)的狀態(tài)信息的狀態(tài)列表中,查找到所述第一共享設(shè)備,并將所述狀態(tài)列表中的所述第一共享設(shè)備的狀態(tài)信息修改為正在拔出或已拔出;并在接收到第一共享設(shè)備即將被熱拔出的指示信息后,接收到所述第二用戶發(fā)送的共享設(shè)備應(yīng)用請求時,根據(jù)所述映射列表和所述狀態(tài)列表,停止向所述第一共享設(shè)備發(fā)送所述第二用戶的應(yīng)用請求,并通過第二共享設(shè)備發(fā)送所述第二用戶的應(yīng)用請求,所述第二共享設(shè)備為所述多個共享設(shè)備中除所述第一共享設(shè)備之外的其它未被熱拔出的共享設(shè)備;
其中,所述映射列表中包括第一用戶與所述第一共享設(shè)備的映射關(guān)系,所述用戶包括所述第一用戶和第二用戶,所述第一用戶為將所述第一共享設(shè)備進行熱拔出的用戶,所述第二用戶為所述多個用戶中除所述第一用戶之外的其它用戶,所述狀態(tài)信息包括正常使用狀態(tài)、正在拔出、以及已拔出。
本發(fā)明的有益效果在于:
本發(fā)明公開的共享設(shè)備熱拔出方法、裝置和多用戶管理系統(tǒng),在第一用戶突然對第一共享設(shè)備進行熱拔出時,記錄當前所有用戶與共享設(shè)備之間的映射關(guān)系,并修改預(yù)先存儲的共享設(shè)備及其對應(yīng)的狀態(tài)信息的狀態(tài)列表中的第一共享設(shè)備的狀態(tài)信息,使得在第一共享設(shè)備處于正在拔出或已拔出的狀態(tài)下,再次接收到第二用戶發(fā)送的應(yīng)用請求時,根據(jù)第二用戶與共享設(shè)備之間的映射關(guān)系,可以獲知第二用戶正在向哪個共享設(shè)備發(fā)送應(yīng)用請求,之后通過查詢所有共享設(shè)備的狀態(tài)信息,可獲知第二用戶是否在向第一共享設(shè)備發(fā)送應(yīng)用請求,當確定第二用戶在向第一共享設(shè)備發(fā)送應(yīng)用請求后,停止將第二用戶發(fā)送的應(yīng)用請求發(fā)給第一共享設(shè)備,即將第一共享設(shè)備轉(zhuǎn)換成只允許第一用戶獨占,暫停第二用戶向第一共享設(shè)備發(fā)送的數(shù)據(jù)流,從而避免了第二用戶的應(yīng)用請求數(shù)據(jù)丟失,之后,將第二用戶的應(yīng)用請求發(fā)送給第二共享設(shè)備,從而也滿足了第二用戶在第一共享設(shè)備熱拔出期間的應(yīng)用需求。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例公開的共享設(shè)備熱拔出方法的流程圖;
圖2為本發(fā)明實施例公開的共享設(shè)備熱拔出方法的流程圖;
圖3為本發(fā)明實施例公開的共享設(shè)備熱拔出裝置的結(jié)構(gòu)圖。
具體實施方式
下面結(jié)合說明書附圖對本發(fā)明實施例的方案進行進一步的描述。需要說明的是,本說明書中各個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對于實施例公開的裝置而言,由于其與實施例公開的方法相對應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。
如背景技術(shù)所述,現(xiàn)有技術(shù)中的方式,在某一用戶將共享設(shè)備熱拔出期間,容易導(dǎo)致其它用戶的訪問數(shù)據(jù)丟失?;诖?,本發(fā)明實施例提供了一種共享設(shè)備熱拔出方法,應(yīng)用于多用戶管理系統(tǒng)(即支持多用戶管理的通信系統(tǒng)),該多用戶管理系統(tǒng)中包括多個用戶和多個相同的共享設(shè)備,每個共享設(shè)備均可以由多個用戶同時共享。
需要說明的是,本實施例中的共享設(shè)備可以為多用管理系統(tǒng)中的任意設(shè)備,如io卡等,本實施例中的io卡可以為fc卡、sas卡或iscsi卡,此外還可以為其它類型的io卡,本發(fā)明實施例對此并不限定。
具體的,該共享設(shè)備熱拔出方法的流程圖如圖1所示,包括以下步驟:
步驟s101、接收到第一共享設(shè)備即將被熱拔出的指示信息;
需要說明的是,本實施例中對第一共享設(shè)備即將被熱拔出的指示信息的發(fā)出方式不做限定,只要能夠接收到相應(yīng)的指示信息即可。
舉例來說,以第一共享設(shè)備為第一io卡為例,當?shù)谝籭o卡與對應(yīng)的插卡口接觸位置出現(xiàn)松動時,即可通過設(shè)置于插卡口處的檢測模塊,向系統(tǒng)發(fā)出第一io卡即將被熱拔出的指示信息?;蛘撸瑢τ诘谝籭o卡的端口頂部與對應(yīng)的插卡口的底部的接觸的方式來說,當?shù)谝籭o卡的端口頂部一旦脫離對應(yīng)的插卡口的底部,即可通過設(shè)置在插卡口底部的檢測模塊,向系統(tǒng)發(fā)出第一io卡即將被熱拔出的指示信息。本領(lǐng)域技術(shù)人員根據(jù)不同的共享設(shè)備進行相應(yīng)的設(shè)計即可,本發(fā)明對此不做限定。
步驟s102、讀取用戶與用戶正在使用的共享設(shè)備之間的映射關(guān)系;
該步驟為步驟103的準備動作,可通過遍歷的方式讀取用戶與用戶正在使用的共享設(shè)備之間的映射關(guān)系。該映射關(guān)系可以不是一對一的形式,即并非一個用戶只向一個共享設(shè)備發(fā)送應(yīng)用請求,而是多對多的關(guān)系,即一個用戶可以向多個共享設(shè)備發(fā)送應(yīng)用請求,一個共享設(shè)備也可以接收多個用戶發(fā)送的應(yīng)用請求,當然該映射關(guān)系中也可能存在一對一的情況,本實施例中對此不做具體限定。
步驟s103、記錄用戶與用戶正在使用的共享設(shè)備之間的映射關(guān)系,得到指示所述用戶與用戶正在使用的共享設(shè)備之間的映射關(guān)系的映射列表;
需要說明的是,該步驟中得到的映射列表中包括當前所有用戶與所有共享設(shè)備的映射關(guān)系,其中必然也包括第一用戶與所述第一共享設(shè)備的映射關(guān)系。其中,所述用戶包括所述第一用戶和第二用戶,第一用戶為將所述第一共享設(shè)備進行熱拔出的用戶,第二用戶為所述多個用戶中除所述第一用戶之外的其它用戶,即未對共享設(shè)備進行熱拔出的用戶。
步驟s104、根據(jù)所述第一共享設(shè)備的標識信息,在預(yù)先存儲的指示所述多個共享設(shè)備及其對應(yīng)的狀態(tài)信息的狀態(tài)列表中,查找到所述第一共享設(shè)備;
需要說明的是,每個用戶以及每個共享設(shè)備都有自己特有的標識信息,對于用戶來說,該標識信息可以為用戶的身份識別信息,即用戶的id號碼,對于共享設(shè)備來說,該標識信息可以為該共享設(shè)備的身份識別信息,即該共享設(shè)備的id號碼。也就是說,在上述映射列表中,具體形式為用戶的id號碼與共享設(shè)備的id號碼的對應(yīng)關(guān)系。
并且,共享設(shè)備的狀態(tài)信息包括正常使用狀態(tài)、正在拔出、以及已拔出,對于這幾種狀態(tài)信息來說,也可以對應(yīng)相應(yīng)的狀態(tài)標識,即,共享設(shè)備的狀態(tài)信息為狀態(tài)標識,所述狀態(tài)標識包括指示io卡處于正常使用狀態(tài)的標識、指示io卡正在拔出的標識、以及指示io卡已拔出的標識。舉例來說,可以用數(shù)字來標識共享設(shè)備的狀態(tài)信息,不同數(shù)字表示共享設(shè)備不同的狀態(tài),如數(shù)字0表示正常使用狀態(tài),1表示共享設(shè)備正在拔出,2表示已拔出。僅以數(shù)字為例進行說明,其它形式也可以采用,本實施例對此不做限定。
相應(yīng)的,在該狀態(tài)列表中,具體形式可以為共享設(shè)備的id號碼與狀態(tài)標識相對應(yīng)。
本實施例中,查找到第一共享設(shè)備的方式具體為,在所述狀態(tài)列表中,將所述第一共享設(shè)備的標識信息,與所述狀態(tài)列表中的多個共享設(shè)備的標識信息進行一一比對,以查找到所述第一共享設(shè)備。即,遍歷所述狀態(tài)列表中的共享設(shè)備的id號碼,將第一共享設(shè)備的id號碼與狀態(tài)列表中的共享設(shè)備的id號碼依次進行比對,直至在狀態(tài)列表中查找出與第一共享設(shè)備的id號碼相同的id號碼,即在狀態(tài)列表中查找到了第一共享設(shè)備,停止id號碼的比對過程。
步驟s105、將所述狀態(tài)列表中的所述第一共享設(shè)備的狀態(tài)信息修改為正在拔出或已拔出;
需要說明的是,狀態(tài)列表并非是共享設(shè)備使用之初就固定的,而是隨著共享設(shè)備的插入和拔出狀態(tài)的變化而變化的。換句話說,每次共享設(shè)備的熱拔出動作發(fā)生時,都需要讀取并記錄用戶與共享設(shè)備的關(guān)聯(lián)關(guān)系,以及修改之前存儲的狀態(tài)列表中第一共享設(shè)備的狀態(tài)信息。即對于本次熱拔出動作來說,上一次某個共享設(shè)備熱拔出動作完成后,修改得到的共享設(shè)備的狀態(tài)列表,即為本次熱拔出動作發(fā)生時,所使用的所述預(yù)先存儲的狀態(tài)列表,即本次熱拔出動作發(fā)生時,需要修改的是上一次某個共享設(shè)備熱拔出動作完成后,所得到的狀態(tài)列表。
本實施例中狀態(tài)信息若以狀態(tài)標識的方式表示,該步驟中通過修改第一共享設(shè)備的狀態(tài)信息標識即可修改狀態(tài)信息。具體的,當?shù)谝还蚕碓O(shè)備處于正在熱拔出的狀態(tài)時,即將狀態(tài)列表中的狀態(tài)信息由之前的正常使用狀態(tài),修改為正在拔出。相應(yīng)的,當?shù)谝还蚕碓O(shè)備處于完全被拔出的狀態(tài)時,即將狀態(tài)列表中的狀態(tài)信息有正在拔出,修改為已拔出。
步驟s106、當接收到第一共享設(shè)備即將被熱拔出的指示信息后,接收到所述第二用戶發(fā)送的共享設(shè)備應(yīng)用請求;
需要說明的是,接收第二用戶發(fā)送的應(yīng)用請求的動作是一直在獨立進行的,與其他動作并無任何必然的關(guān)系。即,該步驟與以上步驟s102-步驟s105是同步并行進行的,即該步驟的執(zhí)行,與以上步驟s102-步驟s105之間,沒有任何時間上的先后順序和關(guān)聯(lián)關(guān)系。
步驟s107、根據(jù)所述映射列表和所述狀態(tài)列表,停止向所述第一共享設(shè)備發(fā)送所述第二用戶的應(yīng)用請求;
該過程相當于將第一共享設(shè)備設(shè)置為由第一用戶獨占,即禁止第二用戶再次向第一共享設(shè)備發(fā)送應(yīng)用請求。
當接收到第一共享設(shè)備即將被熱拔出的指示信息后,系統(tǒng)再次接收到第二用戶(即其他用戶)的共享設(shè)備應(yīng)用請求后,根據(jù)第二用戶與共享設(shè)備之間的映射關(guān)系,即根據(jù)所述映射列表,可以獲知第二用戶正在向哪個共享設(shè)備發(fā)送應(yīng)用請求,并根據(jù)狀態(tài)列表,從第二用戶發(fā)送的所有應(yīng)用請求中,篩選出正在向第一共享設(shè)備發(fā)送的應(yīng)用請求及對應(yīng)的用戶,之后在這些應(yīng)用請求發(fā)送到第一共享設(shè)備之前,攔截這些應(yīng)用請求,避免將這些應(yīng)用請求發(fā)送到第一共享設(shè)備,從而避免第一共享設(shè)備熱拔出后,導(dǎo)致第二用戶向第一共享設(shè)備發(fā)送的這些應(yīng)用請求數(shù)據(jù)丟失。
步驟s108、向第二共享設(shè)備發(fā)送所述第二用戶的應(yīng)用請求。
其中,所述第二共享設(shè)備為所述多個共享設(shè)備中除所述第一共享設(shè)備之外的其它未被熱拔出的共享設(shè)備。
本實施例中將第二用戶發(fā)送給第一共享設(shè)備的應(yīng)用請求攔截之后,再根據(jù)負載均衡機制,將攔截下來的第二用戶發(fā)送給第一共享設(shè)備的應(yīng)用請求分配給第二共享設(shè)備進行處理,從而在確保第一共享設(shè)備熱拔出期間,第二用戶的數(shù)據(jù)不丟失的情況下,還及時完成了對第二用戶數(shù)據(jù)的處理,完成了系統(tǒng)的正常功能,確保了共享設(shè)備的正常訪問。
需要說明的是,本實施例中在篩選出正在向第一共享設(shè)備發(fā)送的應(yīng)用請求及對應(yīng)的用戶之后,可以直接攔截這些應(yīng)用請求,并直接向第二共享設(shè)備發(fā)送這些攔截的應(yīng)用請求,也可以先將這些應(yīng)用請求暫時存儲在一共享文件中,待確認好處理方案后,再向相應(yīng)的第二共享設(shè)備發(fā)送。
本實施例的共享設(shè)備熱拔出方法,在第一用戶突然對第一共享設(shè)備進行熱拔出時,記錄當前所有用戶與共享設(shè)備之間的映射關(guān)系,并修改預(yù)先存儲的共享設(shè)備及其對應(yīng)的狀態(tài)信息的狀態(tài)列表中的第一共享設(shè)備的狀態(tài)信息,使得在第一共享設(shè)備處于正在拔出或已拔出的狀態(tài)下,再次接收到第二用戶發(fā)送的應(yīng)用請求時,根據(jù)第二用戶與共享設(shè)備之間的映射關(guān)系,可以獲知第二用戶正在向哪個共享設(shè)備發(fā)送應(yīng)用請求,之后通過查詢所有共享設(shè)備的狀態(tài)信息,可獲知第二用戶是否在向第一共享設(shè)備發(fā)送應(yīng)用請求,當確定第二用戶在向第一共享設(shè)備發(fā)送應(yīng)用請求后,停止將第二用戶發(fā)送的應(yīng)用請求發(fā)給第一共享設(shè)備,即將第一共享設(shè)備轉(zhuǎn)換成只允許第一用戶獨占,暫停第二用戶向第一共享設(shè)備發(fā)送的數(shù)據(jù)流,從而避免了第二用戶的應(yīng)用請求數(shù)據(jù)丟失,之后,將第二用戶的應(yīng)用請求發(fā)送給第二共享設(shè)備,從而也滿足了第二用戶在第一共享設(shè)備熱拔出期間的應(yīng)用需求。
本發(fā)明另一實施例公開的共享設(shè)備的熱拔出方法的流程圖如圖2所示,與上一實施例不同的是,本實施例中將各步驟的具體實現(xiàn)方式進行了細化說明,并且,本實施例中以共享設(shè)備為io卡為例,對io卡的熱拔出方法進行說明。具體的,本實施例中的共享設(shè)備的熱拔出方法包括以下步驟:
步驟s201、接收到第一io卡即將被熱拔出的指示信息;
步驟s202、讀取用戶與用戶正在使用的io卡之間的映射關(guān)系;
步驟s203、記錄用戶與用戶正在使用的io卡之間的映射關(guān)系,得到指示所述用戶與用戶正在使用的io卡之間的映射關(guān)系的映射列表;
所述用戶與用戶正在使用的io卡之間的映射關(guān)系為,所述用戶的id號碼與所述io卡的id號碼對應(yīng)關(guān)聯(lián),即所述映射列表中為用戶的id號碼與io卡的id號碼對應(yīng)。
步驟s204、根據(jù)所述第一io卡的標識信息,在預(yù)先存儲的指示所述多個io卡及其對應(yīng)的狀態(tài)信息的狀態(tài)列表中,查找到所述第一io卡;
相應(yīng)的,在所述狀態(tài)列表中,所述io卡的id號碼與該io卡的狀態(tài)信息一一對應(yīng)。第一io卡的標識信息即為第一io卡的id號碼。
與上一實施例類似,本實施例中的狀態(tài)信息為狀態(tài)標識,所述狀態(tài)標識包括指示io卡處于正常使用狀態(tài)的標識、指示io卡正在拔出的標識、以及指示io卡已拔出的標識。
步驟s205、查找到所述第一io卡之后,將所述狀態(tài)列表中的所述第一io卡的狀態(tài)信息由正常使用狀態(tài)修改為正在拔出;
即,修改狀態(tài)列表中第一io卡的id號碼對應(yīng)的狀態(tài)標識。
步驟s206、接收到所述第一io卡完成熱拔出的指示信息;
需要說明的是,本實施例中對第一io卡完成熱拔出的指示信息的發(fā)出方式不做限定,只要能夠接收到相應(yīng)的指示信息即可。
相應(yīng)的,當與第一io卡與對應(yīng)的插卡口處于閑置狀態(tài)時,即可通過設(shè)置于插卡口末端的檢測模塊,向系統(tǒng)發(fā)出第一io卡已拔出的指示信息。同樣的,本領(lǐng)域技術(shù)人員根據(jù)不同的共享設(shè)備進行相應(yīng)的設(shè)計即可,本發(fā)明對此不做限定。
本實施例中接收到第一io卡完成熱拔出的指示信息,必然在接收到第一io卡即將熱拔出的指示信息之后,即第一io卡已拔出的指示信息的發(fā)出時間晚于第一io卡即將熱拔出的指示信息發(fā)出的時間。參考上一實施例中的描述,對于和第一io卡與對應(yīng)的插卡口來說,需要在第一io卡與對應(yīng)的插卡口接觸位置出現(xiàn)松動等情況之后,再出現(xiàn)閑置的情況,才能發(fā)出第一io卡完成熱拔出的指示信息。
步驟s207、根據(jù)所述第一io卡的標識信息,在所述狀態(tài)列表中,查找到所述第一io卡;
該步驟中查找第一io卡的方式與上一實施例中相同,即通過遍歷狀態(tài)列表中的io卡id號碼,將狀態(tài)列表中的多個io卡的id號碼,依次與第一io卡的id號碼進行比對,直至在狀態(tài)列表中查找出與第一io卡的id號碼相同的id號碼,即在狀態(tài)列表中查找到了第一io卡,停止id號碼的比對過程。
步驟s208、將所述狀態(tài)列表中的所述第一io卡的狀態(tài)信息由正在拔出修改為已拔出。
即,修改狀態(tài)列表中第一io卡的id號碼對應(yīng)的狀態(tài)標識。
其中,步驟s205-步驟s208完成了上一實施例中的步驟s105的功能,即將所述狀態(tài)列表中的所述第一io卡的狀態(tài)信息修改為正在拔出或已拔出。
步驟s209、當接收到所述第一io卡完成熱拔出的指示信息后,清除所述映射列表中的所述第一用戶與所述第一io卡的映射關(guān)系;
相比于上一實施例,本實施例中增加了刪除映射列表第一用戶與所述第一io卡的映射關(guān)系的過程,以減少后續(xù)步驟中查找映射列表的工作量。
步驟s210、當接收到第一io卡即將被熱拔出的指示信息后,接收到所述第二用戶發(fā)送的io卡應(yīng)用請求;
參考以上實施例的描述,系統(tǒng)一直在持續(xù)接收第二用戶發(fā)送的應(yīng)用請求的動作,與其他動作無任何必然的關(guān)系。
步驟s211、讀取所述映射列表,根據(jù)所述第二用戶的標識信息(即第二用戶的id號碼),在映射列表中查找到與第二用戶的id號碼對應(yīng)的io卡;
該步驟也采用遍歷的方式進行,即將第二用戶的id號碼與映射列表中多個用戶的id號碼依次進行比對,直至查找出與第二用戶的id號碼相同的id號碼,該id號碼對應(yīng)的io卡,即為第二用戶的id號碼對應(yīng)的io卡。
步驟s212、根據(jù)查找到的與所述第二用戶對應(yīng)的io卡的標識信息(即第二用戶的id號碼),在所述狀態(tài)列表中查找到與所述第二用戶對應(yīng)的io卡的狀態(tài)信息;
該過程與上一實施例中的查找狀態(tài)信息的過程相同,這里不再贅述。
步驟s213、根據(jù)所述狀態(tài)列表,判斷與所述第二用戶對應(yīng)的io卡的狀態(tài)信息是否為正在拔出或已拔出,若是,進入步驟s214,若否,進入步驟s217;
步驟s214、判定該與所述第二用戶對應(yīng)的io卡為所述第一io卡;
步驟s215、停止向所述第一io卡發(fā)送所述第二用戶的io卡應(yīng)用請求;
即攔截第二用戶向第一io卡發(fā)送的應(yīng)用請求。
步驟s211-步驟s215完成了對向第一io卡發(fā)送應(yīng)用請求的第二用戶的篩選過程,并實現(xiàn)了對第二用戶向第一io卡發(fā)送的應(yīng)用請求的攔截。
步驟s216、根據(jù)負載均衡機制,為所述第二用戶的應(yīng)用請求分配相應(yīng)的第二io卡;
該步驟為第二用戶的應(yīng)用請求分配相應(yīng)的第二io卡的方式與現(xiàn)有技術(shù)中類似,這里不再贅述。
步驟s217、將所述第二用戶的應(yīng)用請求,發(fā)送給所述相應(yīng)的第二io卡。
其中,步驟s216和步驟s217完成了向第二io卡發(fā)送所述第二用戶的應(yīng)用請求的功能。
步驟s218、當所述第二用戶對應(yīng)的io卡的狀態(tài)信息為正常使用狀態(tài)時,判定該與所述第二用戶對應(yīng)的io卡為所述第二io卡,進入步驟s216和步驟s217,即向第二io卡發(fā)送第二用戶的應(yīng)用請求。
即,對于未向第一io卡發(fā)送應(yīng)用請求的第二用戶及其對應(yīng)的應(yīng)用請求,仍舊采用正常的處理流程進行請求的處理。
本實施例中僅以io卡為例,對本發(fā)明實施例公開的共享設(shè)備熱拔出方法的具體流程進行說明,以上描述中的io卡可更換為任意的共享設(shè)備。
與方法實施例相對應(yīng),本實施例公開了一種共享設(shè)備熱拔出裝置,應(yīng)用于多用戶管理系統(tǒng),該多用戶管理系統(tǒng)中包括多個用戶和多個共享設(shè)備,每個共享設(shè)備可由多個用戶同時共享。該共享設(shè)備熱拔出裝置的結(jié)構(gòu)圖如圖3所示,包括以下功能模塊:
第一接收單元11,用于接收第一共享設(shè)備即將被熱拔出的指示信息,以及接收所述第一共享設(shè)備完成熱拔出的指示信息。
第二接收單元12,用于接收用戶發(fā)送的應(yīng)用請求。
記錄單元13,用于讀取并記錄用戶與用戶正在使用的共享設(shè)備之間的映射關(guān)系,得到指示所述用戶與用戶正在使用的共享設(shè)備之間的映射關(guān)系的映射列表。
其中,所述映射列表中包括第一用戶與所述第一共享設(shè)備的映射關(guān)系,所述用戶包括所述第一用戶和第二用戶,所述第一用戶為將所述第一共享設(shè)備進行熱拔出的用戶,所述第二用戶為所述多個用戶中除所述第一用戶之外的其它用戶。
存儲單元14,用于存儲所述映射列表和指示所述多個共享設(shè)備及其對應(yīng)的狀態(tài)信息的狀態(tài)列表。
第一查找單元15,用于根據(jù)所述第一共享設(shè)備或所述第二共享設(shè)備的標識信息,在所述狀態(tài)列表中,查找到所述第一共享設(shè)備或所述第二共享設(shè)備。
其中,第二共享設(shè)備為所述多個共享設(shè)備中除所述第一共享設(shè)備之外的其它未被熱拔出的共享設(shè)備。
狀態(tài)設(shè)置單元16,用于設(shè)置所述狀態(tài)列表中的共享設(shè)備的狀態(tài)信息。
所述狀態(tài)信息包括正常使用狀態(tài)、正在拔出、以及已拔出。在修改狀態(tài)列表中的共享設(shè)備的狀態(tài)信息時,均需由狀態(tài)設(shè)置單元16來完成操作。
控制單元17,用于根據(jù)所述第一接收單元11和所述第二接收單元12接收到的信息,以及所述映射列表和所述狀態(tài)列表,控制向所述第一共享設(shè)備和所述第二共享設(shè)備發(fā)送所述第二用戶的應(yīng)用請求的方式。
具體的,當接收到第一共享設(shè)備即將被熱拔出的指示信息后,接收到所述第二用戶發(fā)送的共享設(shè)備應(yīng)用請求時,停止向所述第一共享設(shè)備發(fā)送所述第二用戶的應(yīng)用請求,并向所述第二共享設(shè)備發(fā)送所述第二用戶的應(yīng)用請求。
此外,還包括:更新單元18,用于當接收到所述第一共享設(shè)備完成熱拔出的指示信息后,清除所述映射列表中的所述第一用戶與所述第一共享設(shè)備的映射關(guān)系。
其中,所述控制單元17包括:
第二查找單元171,用于讀取所述映射列表,根據(jù)所述第二用戶的標識信息,在所述映射列表中查找到與所述第二用戶對應(yīng)的共享設(shè)備;
判斷單元172,用于根據(jù)所述狀態(tài)列表,判斷與所述第二用戶對應(yīng)的共享設(shè)備的狀態(tài)信息是否為正在拔出或已拔出;
攔截單元173,用于判定與所述第二用戶對應(yīng)的共享設(shè)備為所述第一共享設(shè)備時,停止向所述第一共享設(shè)備發(fā)送所述第二用戶的應(yīng)用請求;
分配單元174,用于判定與所述第二用戶對應(yīng)的共享設(shè)備為所述第一共享設(shè)備或所述第二共享設(shè)備后,為所述第二用戶的應(yīng)用請求分配相應(yīng)的第二共享設(shè)備;
發(fā)送單元175,用于將所述第二用戶的應(yīng)用請求,發(fā)送給所述相應(yīng)的第二共享設(shè)備。
與方法實施例相對應(yīng),本實施例公開了一種多用戶管理系統(tǒng),該系統(tǒng)可以為任意支持多用戶管理的通信系統(tǒng)。該系統(tǒng)中包括多個用戶、多個相同的共享設(shè)備及處理器,每個共享設(shè)備可由多個用戶同時共享。
所述處理器接收到第一共享設(shè)備即將被熱拔出的指示信息后,讀取并記錄用戶與用戶正在使用的共享設(shè)備之間的映射關(guān)系,得到指示所述用戶與用戶正在使用的共享設(shè)備之間的映射關(guān)系的映射列表,并根據(jù)所述第一共享設(shè)備的標識信息,在預(yù)先存儲的指示所述多個共享設(shè)備及其對應(yīng)的狀態(tài)信息的狀態(tài)列表中,查找到所述第一共享設(shè)備,并將所述狀態(tài)列表中的所述第一共享設(shè)備的狀態(tài)信息修改為正在拔出或已拔出;并在接收到第一共享設(shè)備即將被熱拔出的指示信息后,接收到所述第二用戶發(fā)送的共享設(shè)備應(yīng)用請求時,根據(jù)所述映射列表和所述狀態(tài)列表,停止向所述第一共享設(shè)備發(fā)送所述第二用戶的應(yīng)用請求,并通過第二共享設(shè)備發(fā)送所述第二用戶的應(yīng)用請求,所述第二共享設(shè)備為所述多個共享設(shè)備中除所述第一共享設(shè)備之外的其它未被熱拔出的共享設(shè)備。
其中,所述映射列表中包括第一用戶與所述第一共享設(shè)備的映射關(guān)系,所述用戶包括所述第一用戶和第二用戶,所述第一用戶為將所述第一共享設(shè)備進行熱拔出的用戶,所述第二用戶為所述多個用戶中除所述第一用戶之外的其它用戶,所述狀態(tài)信息包括正常使用狀態(tài)、正在拔出、以及已拔出。
本領(lǐng)域技術(shù)人員可以理解,可以使用許多不同的工藝和技術(shù)中的任意一種來表示信息、消息和信號。例如,上述說明中提到過的消息、信息都可以表示為電壓、電流、電磁波、磁場或磁性粒子、光場或以上任意組合。
專業(yè)人員還可以進一步意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機軟件或者二者的結(jié)合來實現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認為超出本發(fā)明的范圍。
結(jié)合本文中所公開的實施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實施。軟件模塊可以置于隨機存儲器(ram)、內(nèi)存、只讀存儲器(rom)、電可編程rom、電可擦除可編程rom、寄存器、硬盤、可移動磁盤、cd-rom、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲介質(zhì)中。
對所公開的實施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。