Linux盘符漂移问题

文章讨论了在Linux环境中,SYS_LUN3磁盘在系统重启后出现盘符漂移现象,导致业务逻辑出错。分析指出依赖固定盘符sda的逻辑设计是问题根源,并提出了两种解决方案:动态适配挂载盘符和使用UUID进行绑定。建议通过使用设备的唯一标识如UUID来避免盘符变化的影响,以实现更稳定的系统运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题现象

应用系统中存在着三个系统LUN,分别是SYS_LUN1、SYS_LUN2、SYS_LUN3,通常情况下,SYS_LUN3能正常挂载到sda盘符下,如下所示:

[root@hym ~]# cd /dev/disk/by-id/
[root@hym by-id]# ll
total 0
lrwxrwxrwx 1 root root  9 Apr 29 15:36 scsi-0QEMU_QEMU_HARDDISK_SYS_LUN1 -> ../../sdb
lrwxrwxrwx 1 root root  9 Apr 29 15:36 scsi-0QEMU_QEMU_HARDDISK_SYS_LUN2 -> ../../sdc
lrwxrwxrwx 1 root root  9 Apr 29 15::36 scsi-0QEMU_QEMU_HARDDISK_SYS_LUN3 -> ../../sda
lrwxrwxrwx 1 root root 10 Apr 29 15:36 scsi-0QEMU_QEMU_HARDDISK_SYS_LUN3 --part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 Apr 29 15:36 scsi-0QEMU_QEMU_HARDDISK_SYS_LUN3-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10 Apr 29 15:36 scsi-0QEMU_QEMU_HARDDISK_SYS_LUN3-part3 -> ../../sda3
lrwxrwxrwx 1 root root 10 Apr 29 15:36 scsi-0QEMU_QEMU_HARDDISK_SYS_LUN3-part4 -> ../../sda4

但在实际应用中,当系统中该节点发生重启后,SYS_LUN3会概率性挂载到sdc或者其他盘符下,也就是节点重启后linux挂载盘符发生了盘符漂移现象,如下所示:

[root@hym ~]# cd /dev/disk/by-id/
[root@hym by-id]# ll
total 0
lrwxrwxrwx 1 root root  9 Apr 29 14:09 scsi-0QEMU_QEMU_HARDDISK_SYS_LUN1 -> ../../sda
lrwxrwxrwx 1 root root  9 Apr 29 14:09 scsi-0QEMU_QEMU_HARDDISK_SYS_LUN2 -> ../../sdb
lrwxrwxrwx 1 root root  9 Apr 29 14:09 scsi-0QEMU_QEMU_HARDDISK_SYS_LUN3 -> ../../sdc
lrwxrwxrwx 1 root root 10 Apr 29 14:09 scsi-0QEMU_QEMU_HARDDISK_SYS_LUN3 --part1 -> ../../sdc1
lrwxrwxrwx 1 root root 10 Apr 29 14:09 scsi-0QEMU_QEMU_HARDDISK_SYS_LUN3  --part2-> ../../sdc2
lrwxrwxrwx 1 root root 10 Apr 29 14:09 scsi-0QEMU_QEMU_HARDDISK_SYS_LUN3 --part3 -> ../../sdc3
lrwxrwxrwx 1 root root 10 Apr 29 14:09 scsi-0QEMU_QEMU_HARDDISK_SYS_LUN3 --part4 -> ../../sdc4

由于系统中业务逻辑部分存在大量将SYS_LUN3与sda盘符进行绑定的操作,一旦发生盘符漂移现象,则导致SYS_LUN3挂载盘符与预期不一致,进而造成系统应用无法正常使用。

问题分析

有没有一种方法可以实现这种SYS_LUN3与sda盘符进行永久绑定,也就是指定盘符挂载方式,即使是系统节点发生重启也不受影响呢?
尝试利用Udev策略创建58-storage.rule规则来解决这个问题,但当系统重新启动时,却提示如下信息,即udev版本不支持重命名内核设备节点。

NAME=/sda%n ignored, kernel device nodes can not be renamed; please fix it in /etc/udev/rules.d/10-test.rules:2

其实,指定挂载盘符的方式并不合理。上述问题现象实际上是系统业务逻辑设计存在缺陷导致的,即逻辑设计中将SYS_LUN3与sda盘符进行绑定,未考虑到这种可能发生的盘符漂移问题。应用程序和用户不应该关心特定存储设备的系统LUN会挂载到那个分区上,因为系统重启后这些sdX盘符可能会发生更改,并且这种更改是符合预期的。

解决方案

1、动态适配SYS_LUN3挂载盘符。例如,当系统盘符挂载到sdc盘符时,业务逻辑需要跟着适配和绑定到sdc盘符,替代之前预期需要绑定到sda盘符的相关操作。
2、SYS_LUN3使用一些唯一或永久的属性进行绑定(例如LUN WWID或文件系统UUID),而不是sdX这种可能发生变化的盘符。
下面是在/etc/fstab中使用的一个样例:

[root@hym ~]# blkid | grep sda2
/dev/sda2: UUID="8418e5ee-4c32-4bd2-8e60-f8c16fcf1375" TYPE="ext3"
[root@hym ~]#
[root@hym ~]# grep "8418e5ee-4c32-4bd2-8e60-f8c16fcf1375" /etc/fstab
UUID=8418e5ee-4c32-4bd2-8e60-f8c16fcf1375 /                       ext3    rw,suid,dev,exec,auto,nouser,sync        1 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值