linux磁盘混乱,Linux磁盘设备文件混乱源于Linux内核自身
在Linux下往往會(huì)碰到這樣的問(wèn)題,磁盤(pán)的設(shè)備文件,比如/dev/sda, sdb, sdc等等在某些情況下會(huì)混亂掉,比如sda變成了sdb或者sdc變成了sdb等等,這樣無(wú)形中會(huì)導(dǎo)致磁盤(pán)設(shè)備管理的混亂,最常見(jiàn)的比如Linux文件系統(tǒng)的啟動(dòng)問(wèn)題。很多人在遇到這種問(wèn)題的時(shí)候都去找磁盤(pán)、陣列廠(chǎng)家,懷疑是他們的問(wèn)題,其實(shí)這種底層的磁盤(pán)(單個(gè)磁盤(pán)或者RAID陣列)和Linux下磁盤(pán)設(shè)備文件的映射并不是磁盤(pán)、陣列廠(chǎng)家來(lái)決定的,而是Linux內(nèi)核自身的原因。
目前Linux內(nèi)核對(duì)于這種磁盤(pán)設(shè)備的映射基本上取決于三個(gè)順序,一是磁盤(pán)驅(qū)動(dòng)程序的加載;二是主機(jī)PCI插槽的監(jiān)測(cè);三是磁盤(pán)本身的監(jiān)測(cè),先來(lái)的當(dāng)然是a,以此類(lèi)推。所以,在出現(xiàn)熱插拔了某些設(shè)備、重啟等特殊情況下,實(shí)際磁盤(pán)在Linux下映射的設(shè)備文件可能由于這種"排隊(duì)"的原因而發(fā)生改變,而這種底層"偷偷的"變化有時(shí)候會(huì)讓管理員犯一些低級(jí)錯(cuò)誤。
這是Linux Kernel的限制,所以目前還沒(méi)辦法來(lái)正面的克服應(yīng)對(duì),但有兩個(gè)"迂回戰(zhàn)術(shù)"的辦法來(lái)減少可能出現(xiàn)的問(wèn)題,一個(gè)是采用UUID設(shè)備唯一識(shí)別的方法,另一個(gè)是采用對(duì)設(shè)備卷做Label標(biāo)識(shí)的辦法。
一、 UUID (globally unique identifier),唯一的身份識(shí)別,是采用SCSI Inquiry命令的Page 83信息來(lái)映射磁盤(pán)設(shè)備的。例如我們可以在Linux下查詢(xún)一些磁盤(pán)設(shè)備的UUID標(biāo)識(shí)代碼。
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
找到了磁盤(pán)設(shè)備唯一的UUID代碼后,就可以加到/etc/grub.conf和/etc/fstab中,這樣即使初始的系統(tǒng)盤(pán)sda變成了sdb,但Linux和文件系統(tǒng)的啟動(dòng)加載都是按照UUID來(lái)的,所以上層也不會(huì)受到影響,例如,
在 /etc/grub.conf系統(tǒng)啟動(dòng)入口中做以下更改:
kernel /boot/vmlinuz-2.6.27.7 root=/dev/disk/by-id/scsi-
3600050e03d7c67007bf400009f890000-part1
在 /etc/fstab文件系統(tǒng)啟動(dòng)入口中做以下更改:
/dev/disk/by-id/scsi-3600050e03d7c67007bf400009f890000-part1 / ext3 1 1
/dev/disk/by-id/scsi-234892819987c8f828473829becf38289-part2 /home ext3 1 1
二、 第二種算是比較老式的解決方法,即對(duì)磁盤(pán)卷設(shè)置Label標(biāo)簽,同樣的道理,系統(tǒng)啟動(dòng)的時(shí)候只看標(biāo)簽,不看底層的sda/sdb等設(shè)備號(hào),所以也不會(huì)影響到系統(tǒng)、文件系統(tǒng)的啟動(dòng)。例如,
使用e2label命令對(duì)sda1和sdb1設(shè)置標(biāo)簽:
/sbin/e2label /dev/sda1 myroot
/sbin/e2label /dev/sdb1 myhome
之后在 /etc/grub.conf 系統(tǒng)啟動(dòng)入口中做以下更改:
kernel /boot/vmlinuz-2.6.29 ro root=LABEL=myroot
在 /etc/fstab文件系統(tǒng)啟動(dòng)入口中做以下更改:
LABEL=myroot / ext3 defaults 1 1
LABEL=myhome /home ext3 defaults 1 1
當(dāng)然,以上兩種都是為了不影響系統(tǒng)和文件系統(tǒng)的啟動(dòng)采用的變通方法,在實(shí)際的系統(tǒng)管理時(shí)還是要密切注意底層設(shè)備的變化,否則如果出現(xiàn)了磁盤(pán)分區(qū)誤刪除的事情罪過(guò)可就大了 關(guān)鍵詞標(biāo)簽:Linux
總結(jié)
以上是生活随笔為你收集整理的linux磁盘混乱,Linux磁盘设备文件混乱源于Linux内核自身的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux ntp同步日志,Linux使
- 下一篇: 支持驱动最好的linux软件,Linux