時間:2015/6/28來源:IT貓撲網(wǎng)作者:網(wǎng)管聯(lián)盟我要評論(0)
在Linux下往往會碰到這樣的問題,磁盤的設(shè)備文件,比如/dev/sda, sdb, sdc等等在某些情況下會混亂掉,比如sda變成了sdb或者sdc變成了sdb等等,這樣無形中會導(dǎo)致磁盤設(shè)備管理的混亂,最常見的比如Linux文件系統(tǒng)的啟動問題。很多人在遇到這種問題的時候都去找磁盤、陣列廠家,懷疑是他們的問題,其實(shí)這種底層的磁盤(單個磁盤或者RAID陣列)和Linux下磁盤設(shè)備文件的映射并不是磁盤、陣列廠家來決定的,而是Linux內(nèi)核自身的原因。
目前Linux內(nèi)核對于這種磁盤設(shè)備的映射基本上取決于三個順序,一是磁盤驅(qū)動程序的加載;二是主機(jī)PCI插槽的監(jiān)測;三是磁盤本身的監(jiān)測,先來的當(dāng)然是a,以此類推。所以,在出現(xiàn)熱插拔了某些設(shè)備、重啟等特殊情況下,實(shí)際磁盤在Linux下映射的設(shè)備文件可能由于這種"排隊(duì)"的原因而發(fā)生改變,而這種底層"偷偷的"變化有時候會讓管理員犯一些低級錯誤。
這是Linux Kernel的限制,所以目前還沒辦法來正面的克服應(yīng)對,但有兩個"迂回戰(zhàn)術(shù)"的辦法來減少可能出現(xiàn)的問題,一個是采用UUID設(shè)備唯一識別的方法,另一個是采用對設(shè)備卷做Label標(biāo)識的辦法。
一、 UUID (globally unique identifier),唯一的身份識別,是采用SCSI Inquiry命令的Page 83信息來映射磁盤設(shè)備的。例如我們可以在Linux下查詢一些磁盤設(shè)備的UUID標(biāo)識代碼。
bash# ls -la /dev/disk/by-id
total 0
drwxr-xr-x 2 root root 280 Mar 11 12:29 .
drwxr-xr-x 5 root root 100 Mar 11 12:28 ..
lrwxrwxrwx 1 root root 9 Mar 11 12:29 edd-int13_dev80 -> ../../sda
lrwxrwxrwx 1 root root 10 Mar 11 12:29 edd-int13_dev80-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 Mar 11 12:29 edd-int13_dev80-part3 -> ../../sda3
lrwxrwxrwx 1 root root 10 Mar 11 12:29 edd-int13_dev80-part4 -> ../../sda4
lrwxrwxrwx 1 root root 10 Mar 11 12:29 edd-int13_dev80-part5 -> ../../sda5
lrwxrwxrwx 1 root root 10 Mar 11 12:29 edd-int13_dev80-part6 -> ../../sda6
lrwxrwxrwx 1 root root 9 Mar 11 12:28 scsi-3600050e03d7c67007bf400009f890000 -
> ../../sda
lrwxrwxrwx 1 root root 10 Mar 11 12:28 scsi-3600050e03d7c67007bf400009f890000-p
art1 -> ../../sda1
lrwxrwxrwx 1 root root 10 Mar 11 12:28 scsi-3600050e03d7c67007bf400009f890000-p
art3 -> ../../sda3
lrwxrwxrwx 1 root root 10 Mar 11 12:28 scsi-3600050e03d7c67007bf400009f890000-p
art4 -> ../../sda4
lrwxrwxrwx 1 root root 10 Mar 11 12:28 scsi-3600050e03d7c67007bf400009f890000-p
art5 -> ../../sda5
lrwxrwxrwx 1 root root 10 Mar 11 12:28 scsi-3600050e03d7c67007bf400009f890000-p
art6 -> ../../sda6
找到了磁盤設(shè)備唯一的UUID代碼后,就可以加到/etc/grub.conf和/etc/fstab中,這樣即使初始的系統(tǒng)盤sda變成了sdb,但Linux和文件系統(tǒng)的啟動加載都是按照UUID來的,所以上層也不會受到影響,例如,
在 /etc/grub.conf系統(tǒng)啟動入口中做以下更改:
kernel /boot/vmlinuz-2.6.27.7 root=/dev/disk/by-id/scsi-
3600050e03d7c67007bf400009f890000-part1
在 /etc/fstab文件系統(tǒng)啟動入口中做以下更改:
/dev/disk/by-id/scsi-3600050e03d7c67007bf400009f890000-part1 / ext3 1 1
/dev/disk/by-id/scsi-234892819987c8f828473829becf38289-part2 /home ext3 1 1
二、 第二種算是比較老式的解決方法,即對磁盤卷設(shè)置Label標(biāo)簽,同樣的道理,系統(tǒng)啟動的時候只看標(biāo)簽,不看底層的sda/sdb等設(shè)備號,所以也不會影響到系統(tǒng)、文件系統(tǒng)的啟動。例如,
使用e2label命令對sda1和sdb1設(shè)置標(biāo)簽:
/sbin/e2label /dev/sda1 myroot
/sbin/e2label /dev/sdb1 myhome
之后在 /etc/grub.conf 系統(tǒng)啟動入口中做以下更改:
kernel /boot/vmlinuz-2.6.29 ro root=LABEL=myroot
在 /etc/fstab文件系統(tǒng)啟動入口中做以下更改:
LABEL=myroot / ext3 defaults 1 1
LABEL=myhome /home ext3 defaults 1 1
當(dāng)然,以上兩種都是為了不影響系統(tǒng)和文件系統(tǒng)的啟動采用的變通方法,在實(shí)際的系統(tǒng)管理時還是要密切注意底層設(shè)備的變化,否則如果出現(xiàn)了磁盤分區(qū)誤刪除的事情罪過可就大了
關(guān)鍵詞標(biāo)簽:Linux
相關(guān)閱讀
熱門文章 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程使用screen管理你的遠(yuǎn)程會話GNU/Linux安裝vmware如何登錄linux vps圖形界面 Linux遠(yuǎn)程桌面連
人氣排行 Linux下獲取CPUID、硬盤序列號與MAC地址linux tc實(shí)現(xiàn)ip流量限制dmidecode命令查看內(nèi)存型號linux下解壓rar文件安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程Ubuntu linux 關(guān)機(jī)、重啟、注銷 命令lcx.exe、nc.exe、sc.exe入侵中的使用方法查看linux服務(wù)器硬盤IO讀寫負(fù)載