磁盘盘符发生漂移处理方法

问题现象

部分客户使用的BCLinux-Euler系统中/etc/fstab部分是以盘符(以sda1、sda2为例)方式进行目录挂载,在重启过程中,会偶发出现盘符出现切换场景(即原sda1的UUID对应sda2,原sda2的UUID对应sda1),导致无法按照预期工作。

产生原因

磁盘盘符发生漂移通常指的是在操作系统识别的磁盘设备列表中,磁盘设备顺序发生变化,导致原有盘符分配给不同物理磁盘。这是由于Linux Kernel目前默认scsi扫盘使用异步扫描,解耦io等待,特别是盘多场景可以大幅提升启动效率。改成同步扫盘后可以一定程度规避盘符变化问题,但无法保证设备名一致性。

可能因素

磁盘盘符漂移可能原因:

  • 硬件变动:添加或移除物理磁盘后,可能会导致磁盘识别顺序发生变化。
  • 操作系统更新:在某些情况下,操作系统的更新可能会影响磁盘设备的识别顺序。
  • 驱动程序更新:SCSI或SATA控制器的驱动程序更新可能会改变磁盘的识别方式。
  • 磁盘故障或更换:磁盘故障或更换后,新磁盘可能会被识别为新的名称。

规避方案

为了避免磁盘盘符漂移带来的问题,可以采取以下措施:

方案一:

使用持久化命名:在Linux系统中,可以使用UUID或磁盘标签(如/dev/disk/by-uuid/或/dev/disk/by-label/)来挂载文件系统,而不是使用盘符。这样,即使盘符发生变化,系统也能正确地识别和挂载文件系统。

方案二:

打开同步扫描开关,步骤如下,以BigCloud Enterprise Linux For Euler 22.10 系统为例:

注意
在5.10.0-136.57.0.136.17.oe2203sp1.bclinux.x86_64后续版本内核中添加该开关选项,在此版本之前该方案不适用。

 步骤一:运行以下命令,打开grub文件。

vim /etc/default/grub 

找到GRUB_CMDLINE_LINUX这一行,在行末尾后面添加scsi_mod.scan=sync ,之后保存退出。

 步骤二:运行以下命令。

grub2-mkconfig -o /boot/grub2/grub.cfg

然后重启机器。

 步骤三:重启后进入系统运行以下命令查看scsi_mod.scan=sync查看是否生效。

cat  /proc/cmdline

本文档内容整理自移动云官方帮助中心(查看原文),仅供参考。