Linux盘符绑定槽位
发布日期:2022-03-11 15:03:31 浏览次数:9 分类:技术文章

本文共 1049 字,大约阅读时间需要 3 分钟。

     服务器下的硬盘主有机械硬盘、固态硬盘以及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
 

转载于:https://www.cnblogs.com/lianggn/p/6913925.html

转载地址:https://blog.csdn.net/weixin_30267785/article/details/99133113 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:js14--原型2
下一篇:AutoPostBack

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月18日 23时49分26秒