RHEL6系统重启后SCSI盘符变化问题,主要因设备扫描顺序不一致导致,影响依赖固定盘符的服务稳定性,原因包括内核识别机制、udev规则未配置唯一标识等,解决方法:通过udev规则绑定磁盘唯一标识(如WWN或UUID),确保设备重启后按固定规则分配盘符;或修改内核参数(如max_scsi_luns)控制扫描顺序,具体操作需查看磁盘信息(如/dev/disk/by-id/),编写udev规则文件,重启验证,该方法可避免盘符漂移,保障系统可靠性。问题现象
在RHEL6系统中,若服务器配置了多块SCSI磁盘(包括SATA、SAS等SCSI协议设备),重启后常出现磁盘盘符(如/dev/sdb、/dev/sdc)与之前不一致的情况,原本通过/dev/sdb挂载的数据目录,重启后变成了/dev/sdc,导致依赖固定盘符的服务(如数据库、文件服务)无法启动,甚至可能因误操作磁盘引发数据丢失风险。
原因分析
SCSI盘符变化的核心原因是Linux内核对磁盘设备的命名依赖扫描顺序,而重启时的扫描顺序可能受多种因素影响,导致设备名与之前不一致,具体原因包括:
硬件扫描顺序不稳定
SCSI设备的扫描顺序由内核根据硬件拓扑结构决定,若存在以下情况,扫描顺序可能变化:

- 磁盘插槽位置调整(如热插拔更换磁盘后,插槽接触电阻差异导致扫描顺序变化);
- SATA端口顺序(服务器主板SATA端口默认扫描顺序可能与物理排列不一致,尤其多磁盘时);
- 多路径环境(若配置多路径存储,不同路径的扫描顺序可能因路径状态变化而改变)。
udev规则未固定设备名
RHEL6默认通过udev动态管理设备名,但其默认规则仅依赖设备类型(如SCSI磁盘为sdx)和扫描顺序,未结合磁盘的唯一标识(如WWN、序列号)来固定设备名,当扫描顺序变化时,设备名自然随之改变。
内核模块加载顺序差异
不同SCSI控制器(如mpt2sas、megaraid)的内核模块加载顺序可能受系统启动时的随机因素影响(如模块加载耗时、依赖关系),进而改变磁盘扫描顺序,导致盘符变化。
解决方案
解决SCSI盘符变化的核心思路是基于磁盘的唯一标识(如WWN)创建持久化的设备符号链接,使系统无论扫描顺序如何变化,均通过固定链接访问磁盘,以下是具体步骤:
步骤1:确认磁盘的唯一标识
首先需获取目标磁盘的唯一标识,推荐使用WWN(World Wide Name),它是磁盘的全局唯一标识符,不受硬件位置影响,通过以下命令查看磁盘WWN:
# 查看所有SCSI磁盘的WWN(需安装lsscsi工具:yum install lsscsi) lsscsi -g # 或通过sysfs查看(以/dev/sdb为例) cat /sys/block/sdb/device/wwid
输出示例类似0x5000c50015aded67,记录目标磁盘的WWN值。
步骤2:编写udev规则固定设备名
创建udev规则文件,当检测到指定WWN的磁盘时,自动生成固定符号链接(如/dev/mydata_disk)。
-
创建规则文件(文件名需以
.rules数字越小优先级越高):vim /etc/udev/rules.d/99-scsi-persistent.rules
-
添加以下内容(替换
WWN为实际磁盘的WWN):# SCSI磁盘通过WWN固定设备名 ACTION=="add", KERNEL=="sd*", SUBSYSTEM=="block", ATTRS{wwid}=="WWN", SYMLINK+="mydata_disk"ACTION=="add":在设备添加时触发规则;KERNEL=="sd*":匹配所有SCSI磁盘设备;ATTRS{wwid}=="WWN":根据WWN精确匹配磁盘;SYMLINK+="mydata_disk":创建固定符号链接(可自定义名称)。
-
保存并退出(
wq)。
步骤3:重新加载udev规则并触发事件
使新规则立即生效,无需重启系统:
# 重新加载udev规则 udevadm control --reload-rules # 触发设备事件(强制重新扫描磁盘) udevadm trigger --type=devices --action=add
执行后,可通过ls -l /dev/mydata_disk查看符号链接是否生成,确认链接指向的磁盘是否为目标磁盘(如/dev/sdb)。
步骤4:修改/etc/fstab使用固定设备名
为避免重启后挂载点失效,需将/etc/fstab中的原始盘符(如/dev/sdb1)替换为固定符号链接(如/dev/mydata_disk1)或磁盘分区UUID(推荐UUID,更稳定)。
-
查看目标分区的UUID:
blkid /dev/sdb1
输出示例:
/dev/sdb1: UUID="a1b2c3d4-e5f6-7890-1234-567890abcdef" TYPE="ext4"。 -
编辑
/etc/fstab,将原始盘符替换为UUID或符号链接:# 使用UUID(推荐) UUID=a1b2c3d4-e5f6-7890-1234-567890abcdef /data ext4 defaults 0 0 # 或使用符号链接 /dev/mydata_disk1 /data ext4 defaults 0 0
-
保存后执行`mount -a

