RHEL7系统指定某块硬盘为sda的实践方法

admin
在RHEL7系统中,若需指定某块硬盘为sda,可通过udev规则实现,使用lsblk -flsscsi命令目标硬盘的WWN或SCSI ID等唯一标识;在/etc/udev/rules.d/目录下创建规则文件(如99-local-disk.rules),添加规则内容(KERNEL=="sd*", SUBSYSTEM=="block", ATTRS{wwn}=="0x5000c50015a8b0a0", SYMLINK+="sda",wwn替换为目标硬盘标识);执行udevadm control --reload-rules重载规则,udevadm trigger`触发生效,重启系统后目标硬盘即固定为sda,需注意备份原有规则,避免设备名冲突。

在RHEL7系统中,硬盘设备名的识别顺序通常由系统启动时的硬件探测顺序决定,默认情况下,第一块被识别的SATA/SAS硬盘会被命名为sda,第二块sda1(分区)或sdb(整盘),以此类推,但在实际运维中,我们可能需要固定某块特定的物理硬盘(如高优先级硬盘、替换故障盘或满足业务需求)始终被识别为sda,避免因硬件插入顺序变化导致设备名漂移,进而影响系统启动、数据挂载或自动化脚本执行,本文将详细介绍在RHEL7中通过udev规则和内核参数两种核心方法,实现指定硬盘固定为sda的操作步骤及注意事项。

背景:为什么需要固定硬盘设备名?

在默认情况下,RHEL7的硬盘设备名识别顺序可能受以下因素影响:

  • 主板SATA端口顺序(如端口1的硬盘先被识别为sda,端口2的为sdb);
  • 扩展卡或RAID卡驱动的加载顺序;
  • 热插拔硬盘的插入时机。

若设备名漂移(如原sda变为sdb),可能导致:

RHEL7系统指定某块硬盘为sda的实践方法

  • 系统启动失败(/etc/fstab中通过设备名挂载的分区无法找到);
  • 数据库等应用因数据路径变化无法访问;
  • 自动化运维脚本(如备份、监控)因设备名错误执行失败。

固定硬盘设备名是提升系统稳定性的重要手段。

准备工作:确认目标硬盘的唯一标识

在指定硬盘为sda前,需先获取目标硬盘的唯一标识(避免依赖易变的设备名,如sdb),常用的唯一标识包括:

  • WWN(World Wide Name):硬盘的全球唯一名称,适用于SAS/SATA硬盘;
  • 序列号(Serial Number):硬盘厂商提供的序列号;
  • 接口路径(如PCIe地址):适用于基于NVMe/SAS的硬盘。

操作步骤:

  1. 查看当前硬盘列表

    lsblk
    # 或
    fdisk -l

    当前系统识别到sda(500GB)、sdb(1TB),需将sdb固定为sda

  2. 获取目标硬盘的唯一标识(以sdb为例):

    • 方法1:通过udevadm获取WWN/序列号
      udevadm info -a -n /dev/sdb | grep -E "wwn|serial" | head -5

      输出示例:

      ATTRS{wwn}=="0x5000c50015a4d123"
      ATTRS{serial}=="WD-WCC4N0KKA2J6"
    • 方法2:通过hdparm获取WWN(需安装hdparm)
      hdparm -I /dev/sdb | grep "WWN"
    • 方法3:通过smartctl获取信息(需安装smartmontools)
      smartctl -i /dev/sdb | grep -E "Serial|WWN"

    选择一个稳定且唯一的标识(推荐WWN,因序列号可能重复),假设目标硬盘sdb的WWN为0x5000c50015a4d123

方法一:通过udev规则固定设备名(推荐)

udev是Linux设备管理器,通过编写规则可基于硬件属性(如WWN、序列号)固定设备名,重启后永久生效,且不受硬件插入顺序影响。

操作步骤:

创建udev规则文件

/etc/udev/rules.d/目录下创建自定义规则文件(文件名以.rules数字越小优先级越高,建议用99-前缀避免覆盖默认规则):

vim /etc/udev/rules.d/99-local-disk.rules

编写规则内容

根据目标硬盘的唯一标识,编写规则语法,核心逻辑是:匹配硬盘的WWN(或序列号),强制将其符号链接为sda

  • 基于WWN的规则(推荐)
    # 固定WWN为0x5000c50015a4d123的硬盘为sda
    KERNEL=="sd*", SUBSYSTEM=="block", ATTRS{wwn}=="0x5000c50015a4d123", SYMLINK+="sda", OPTIONS+="db_persist"
    • KERNEL=="sd*":匹配所有SCSI/SATA设备(如sdasdb);
    • SUBSYSTEM=="block":限制块设备;
    • ATTRS{wwn}=="0x5000c50015a4d123":匹配目标硬盘的WWN(需替换为实际值);
    • SYMLINK+="sda":创建符号链接sda
文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码