Linux磁碟裝置檔案(sda,sdb,sdc…)變化問題

來源:互聯網
上載者:User

標籤:

 

在Linux下往往會碰到這樣的問題,磁碟的裝置檔案,比如/dev/sda, sdb, sdc等等在某些情況下會混亂掉,比如sda變成了sdb或者sdc變成了sdb等等,這樣無形中會導致磁碟裝置管理的混亂,最常見的比如Linux檔案系統的啟動問題。很多人在遇到這種問題的時候都去找磁碟、陣列廠家,懷疑是他們的問題,其實這種底層的磁碟(單個磁碟或者RAID陣列)和Linux下磁碟裝置檔案的映射並不是磁碟、陣列廠家來決定的,而是Linux核心自身的原因。

目前Linux核心對於這種磁碟裝置的映射基本上取決於三個順序,一是磁碟驅動程式的載入;二是主機PCI插槽的監測;三是磁碟本身的監測,先來的當然是a,以此類推。所以,在出現熱插拔了某些裝置、重啟等特殊情況下,實際磁碟在Linux下映射的裝置檔案可能由於這種“排隊”的原因而發生改變,而這種底層“偷偷的”變化有時候會讓管理員犯一些低級錯誤。

這是Linux Kernel的限制,所以目前還沒辦法來正面的克服應對,但有兩個“迂迴戰術”的辦法來減少可能出現的問題,一個是採用UUID裝置唯一識別的方法,另一個是採用對裝置卷做Label標識的辦法。

一、 UUID (globally unique identifier),唯一的身份識別,是採用SCSI Inquiry命令的Page 83資訊來映射磁碟裝置的。例如我們可以在Linux下查詢一些磁碟裝置的UUID標識代碼。

<ccid_nobr>

<ccid_code>bash# ls -la /dev/disk/by-idtotal 0drwxr-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 -> ../../sdalrwxrwxrwx 1 root root  10 Mar 11 12:29 edd-int13_dev80-part1 -> ../../sda1lrwxrwxrwx 1 root root  10 Mar 11 12:29 edd-int13_dev80-part3 -> ../../sda3lrwxrwxrwx 1 root root  10 Mar 11 12:29 edd-int13_dev80-part4 -> ../../sda4lrwxrwxrwx 1 root root  10 Mar 11 12:29 edd-int13_dev80-part5 -> ../../sda5lrwxrwxrwx 1 root root  10 Mar 11 12:29 edd-int13_dev80-part6 -> ../../sda6lrwxrwxrwx 1 root root   9 Mar 11 12:28 scsi-3600050e03d7c67007bf400009f890000 -> ../../sdalrwxrwxrwx 1 root root  10 Mar 11 12:28 scsi-3600050e03d7c67007bf400009f890000-part1 -> ../../sda1lrwxrwxrwx 1 root root  10 Mar 11 12:28 scsi-3600050e03d7c67007bf400009f890000-part3 -> ../../sda3lrwxrwxrwx 1 root root  10 Mar 11 12:28 scsi-3600050e03d7c67007bf400009f890000-part4 -> ../../sda4lrwxrwxrwx 1 root root  10 Mar 11 12:28 scsi-3600050e03d7c67007bf400009f890000-part5 -> ../../sda5lrwxrwxrwx 1 root root  10 Mar 11 12:28 scsi-3600050e03d7c67007bf400009f890000-part6 -> ../../sda6

找到了磁碟裝置唯一的UUID代碼後,就可以加到/etc/grub.conf和/etc/fstab中,這樣即使初始的系統硬碟sda變成了sdb,但Linux和檔案系統的啟動載入都是按照UUID來的,所以上層也不會受到影響,例如,

在 /etc/grub.conf系統啟動入口中做以下更改:

<ccid_nobr>

<ccid_code>kernel /boot/vmlinuz-2.6.27.7 root=/dev/disk/by-id/scsi-3600050e03d7c67007bf400009f890000-part1

在 /etc/fstab檔案系統啟動入口中做以下更改:

<ccid_nobr>

<ccid_code>/dev/disk/by-id/scsi-3600050e03d7c67007bf400009f890000-part1 /          ext3   1  1/dev/disk/by-id/scsi-234892819987c8f828473829becf38289-part2 /home      ext3   1  1

二、 第二種算是比較老式的解決方案,即對磁碟卷設定Label標籤,同樣的道理,系統啟動的時候只看標籤,不看底層的sda/sdb等裝置號,所以也不會影響到系統、檔案系統的啟動。例如,

使用e2label命令對sda1和sdb1設定標籤:

<ccid_nobr>

<ccid_code>/sbin/e2label /dev/sda1 myroot/sbin/e2label /dev/sdb1 myhome

之後在 /etc/grub.conf 系統啟動入口中做以下更改:

<ccid_nobr>

<ccid_code>kernel /boot/vmlinuz-2.6.29 ro root=LABEL=myroot

在 /etc/fstab檔案系統啟動入口中做以下更改:

<ccid_nobr>

<ccid_code>LABEL=myroot      /      ext3  defaults  1 1LABEL=myhome  /home  ext3  defaults  1 1

當然,以上兩種都是為了不影響系統和檔案系統的啟動採用的變通方法,在實際的系統管理時還是要密切注意底層裝置的變化,否則如果出現了磁碟分割誤刪除的事情罪過可就大了。

Linux磁碟裝置檔案(sda,sdb,sdc…)變化問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.