一種基于linux系統(tǒng)區(qū)分本地磁盤與usb移動磁盤的方法
【技術領域】
[0001 ] 本發(fā)明涉及計算機領域,具體地說是一種基于LINUX系統(tǒng)區(qū)分本地磁盤與USB移動磁盤的方法。
【背景技術】
[0002]一般在集群監(jiān)控軟件中都會監(jiān)控本地磁盤的實時讀寫速率,在實際監(jiān)控中發(fā)現(xiàn),集群中的計算節(jié)點本地磁盤的名字可能不一樣,有的計算節(jié)點本地磁盤名字是sda,有的計算節(jié)點本地磁盤名字是sdb,造成計算節(jié)點名字不同的原因與Iinux系統(tǒng)掃描磁盤的順序有關系,例如,在USB接口上插有一個u盤,Iinux重啟后,系統(tǒng)先掃描到USB上的移動磁盤命名為sda,依次掃描到本地磁盤命名為sdb。所以,監(jiān)控本地磁盤實時讀寫速率前,需要先確定哪些sd*是本地磁盤。如果,監(jiān)控軟件不能區(qū)分本地磁盤還是usb移動磁盤,就需要人為的去改代碼,哪些計算節(jié)點的本地磁盤是sda、哪些是sdb等,這樣的軟件不夠通用。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的目的是克服現(xiàn)有技術中存在的不足,提供一種基于LINUX系統(tǒng)區(qū)分本地磁盤與USB移動磁盤的方法。
[0004]本發(fā)明的技術方案是按以下方式實現(xiàn)的,其操作方法如下:
先通過Iinux的sys虛擬文件系統(tǒng)找到block設備;再找出以sd開頭命名的磁盤;然后根據(jù)磁盤在Pci總線的掛接層次來區(qū)分是本地磁盤還是usb移動磁盤。
[0005]上述方法的具體方式如下:
(1)、打開/sys/block/ 目錄;
(2)、讀取目錄,如果為空,程序結(jié)束,否則判斷是否以sd開頭;
(3)、如果不是sd開頭,跳到弟2步;
(4)、打開該文件,獲取該文件描述符;
(5)、通過/proc/self/fd/該文件描述符,獲取該文件的實際路徑;
(6)、解析實際路徑中sd*的祖父目錄是否為usb,例如: usb的移動硬盤的實際路徑:
/sys/devices/pci0000:00/0000:00:11.0/0000:02:03.0/usbl/l-l/l-l:1.0/host6/target6:0:0/6:0:0:0/block/sdb ;
本地磁盤的實際路徑:
/sys/devices/pc1000:00/0000:00:10.0/host2/target2:0:0/2:0:0:0/block/sda
(7)、是usb,舍棄該sd*;不是usb,則該sd*為本地磁盤
(8)、跳到第(2)步。
[0006]本發(fā)明提出的通過Iinux的sys虛擬文件系統(tǒng),區(qū)分本地磁盤與usb移動磁盤,關鍵是先通過/sys/block獲取以sd開頭的磁盤文件,然后獲取該文件的軟鏈接,即該sd*的實際路徑,該sd*實際路徑包含了 sd*設備驅(qū)動層次,如果是usb移動硬盤,它的祖父目錄包含usb驅(qū)動,否則不包含。
[0007]本發(fā)明的優(yōu)點是:
本發(fā)明的一種基于LINUX系統(tǒng)區(qū)分本地磁盤與USB移動磁盤的方法和現(xiàn)有技術相比,能夠區(qū)分本地磁盤與usb移動磁盤,具有通用和高效率的特點,因而,具有很好的使用價值。
【附圖說明】
[0008]圖1為一種基于LINUX系統(tǒng)區(qū)分本地磁盤與USB移動磁盤的方法的結(jié)構示意圖。
[0009]實施方式
下面結(jié)合附圖對本發(fā)明的一種基于LINUX系統(tǒng)區(qū)分本地磁盤與USB移動磁盤的方法作以下詳細說明。
[0010]如圖1所示,本發(fā)明的一種基于LINUX系統(tǒng)區(qū)分本地磁盤與USB移動磁盤的方法,操作方法如下:
先通過Iinux的sys虛擬文件系統(tǒng)找到block設備;再找出以sd開頭命名的磁盤;然后根據(jù)磁盤在Pci總線的掛接層次來區(qū)分是本地磁盤還是usb移動磁盤。
[0011]具體方式如下:
(1)、打開/sys/block/ 目錄;
(2)、讀取目錄,如果為空,程序結(jié)束,否則判斷是否以sd開頭;
(3)、如果不是sd開頭,跳到弟2步;
(4)、打開該文件,獲取該文件描述符;
(5)、通過/proc/self/fd/該文件描述符,獲取該文件的實際路徑;
(6)、解析實際路徑中sd*的祖父目錄是否為usb,例如: usb的移動硬盤的實際路徑:
/sys/devices/pci0000:00/0000:00:11.0/0000:02:03.0/usbl/l-l/l-l:1.0/host6/target6:0:0/6:0:0:0/block/sdb ;
本地磁盤的實際路徑:
/sys/devices/pc1000:00/0000:00:10.0/host2/target2:0:0/2:0:0:0/block/sda
(7)、是usb,舍棄該sd*;不是usb,則該sd*為本地磁盤
(8)、跳到第(2)步。
[0012]本發(fā)明的一種基于LINUX系統(tǒng)區(qū)分本地磁盤與USB移動磁盤的方法其加工制作非常簡單方便,按照說明書附圖所示即可加工。
[0013]除說明書所述的技術特征外,均為本專業(yè)技術人員的已知技術。
【主權項】
1.一種基于LINUX系統(tǒng)區(qū)分本地磁盤與USB移動磁盤的方法,其特征在于操作方法如下: 先通過Iinux的sys虛擬文件系統(tǒng)找到block設備;再找出以sd開頭命名的磁盤;然后根據(jù)磁盤在Pci總線的掛接層次來區(qū)分是本地磁盤還是usb移動磁盤。2.根據(jù)權利要求1所述的一種基于LINUX系統(tǒng)區(qū)分本地磁盤與USB移動磁盤的方法,其特征在于具體方式如下: (1)、打開/sys/block/ 目錄; (2)、讀取目錄,如果為空,程序結(jié)束,否則判斷是否以sd開頭; (3)、如果不是sd開頭,跳到弟2步; (4)、打開該文件,獲取該文件描述符; (5)、通過/proc/self/fd/該文件描述符,獲取該文件的實際路徑; (6)、解析實際路徑中sd*的祖父目錄是否為usb,例如: usb的移動硬盤的實際路徑:/sys/devices/pc1000:00/0000:00:11.0/0000:02:03.0/usbl/l-l/l-l:1.0/host6/target6:0:0/6:0:0:0/block/sdb ; 本地磁盤的實際路徑:/sys/devices/pc1000:00/0000:00:10.0/host2/target2:0:0/2:0:0:0/block/sda (7)、是usb,舍棄該sd*;不是usb,則該sd*為本地磁盤 (8)、跳到第(2)步。
【專利摘要】本發(fā)明提供一種基于LINUX系統(tǒng)區(qū)分本地磁盤與USB移動磁盤的方法,操作方法如下:先通過linux的sys虛擬文件系統(tǒng)找到block設備;再找出以sd開頭命名的磁盤;然后根據(jù)磁盤在pci總線的掛接層次來區(qū)分是本地磁盤還是usb移動磁盤。本發(fā)明的一種基于LINUX系統(tǒng)區(qū)分本地磁盤與USB移動磁盤的方法和現(xiàn)有技術相比,能夠區(qū)分本地磁盤與usb移動磁盤,具有通用和高效率的特點,因而,具有很好的使用價值。
【IPC分類】G06F9/44
【公開號】CN105138331
【申請?zhí)枴緾N201510529432
【發(fā)明人】焦芬芳
【申請人】浪潮電子信息產(chǎn)業(yè)股份有限公司
【公開日】2015年12月9日
【申請日】2015年8月26日