Linux盤符綁定槽位


     服務器下的硬盤主有機械硬盤、固態硬盤以及raid陣列,通常內核分配盤符的順序是/dev/sda、/dev/sdb… …。在系統啟動過程中,內核會按照掃描到硬盤的順序分配盤符(先分配直通的,再分配陣列)。在同一個硬盤槽位,熱插拔硬盤,系統會順着已存在的盤符分配下去,如之前分配的是/dev/sdb,系統最后一塊硬盤是/dev/sdf,那么/dev/sdb/熱拔插后,系統會重新分配這塊硬盤的盤符為/dev/sdg,出現盤符錯亂的情況。

假設機器上有14個硬盤槽位,槽位號分別為0~13,在Centos7.3環境下,R730XD服務器分配槽位如下:

0 3 6
1 4 7
2 5 8
 
 
 
 

/dev/sda /dev/sdd /dev/sdg
/dev/sdb /dev/sde /dev/sdh
/dev/sdc /dev/sdf /dev/sdi

 

 

 

在此種情況下,我們應該可以用以下方法解決盤符錯位的問題:

[root@localhost ~]# udevadm info -q path -n /dev/sda

/devices/pci0000:00/0000:00:10.0/host0/target0:0:0/0:0:0:0/block/sda

拿到編號,在 /etc/udev/rules.d/80-mydisk.rules,增加

DEVPATH=="/devices/pci0000:00/0000:00:10.0/host0/target0:0:0/0:0:0:0/block/sda", NAME="sda", MODE="0660"

這樣對應的插槽的第二個就會一直對應盤符sdc 而不會出現跳盤符的問題了,我們可以用個小腳本實現綁定所有的盤符和槽位:

#!/bin/bash
disk="a b c d e f g h i j k l i j k m n"
for i in ${disk};
   do
       a=`/usr/sbin/udevadm info -q path -n /dev/sd${i}`;
       if [ ! -n "$a" ]; then
          break 1 ;
      else
      echo DEVPATH=="\"${a}"\", NAME="\"sd${i}"\", MODE="\"0660"\">>/etc/udev/rules.d/80-mydisk.rules;
      fi
done
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM