背景
某台服务器有如下文件系统,fwork1 挂载在/dev/sda1,fwork2挂载在 /dev/sdb1
某次添加新硬盘重启后,变成了fowrk1挂载在/dev/sdb1,fwork2挂载到/dev/sda1。
原因
Linux 中的设备路径不能保证在重启后保持一致。设备名称由主要数字(字母)和次要数字组成。当 Linux 存储设备驱动程序检测到新设备时,驱动程序会将可用范围内的主要和次要数字分配给设备。删除设备后,将释放设备编号以供重复使用。
出现此问题的原因是 SCSI 子系统将 Linux 中的设备扫描计划为异步进行。因此,设备路径名在重新启动时可能会有所不同。
解决方法
若要解决此问题,请使用持久命名。有四种方法可以使用持久命名:
- 按文件系统标签
- 按 UUID
- 按 ID
- 按路径
我们建议对 Linux VM 使用文件系统标签或 UUID。
查看UUID
要查找新驱动器的 UUID,请使用以下实用程序:blkid
sudo blkid -s UUID
修改fstab文件,分区名改成 UUID
sudo vim /etc/fstab
UUID=71c7a4ab-4388-4d89-81bc-b56ee69f4d70 /fwork2 ext4 defaults 0 0
重新挂载磁盘
sudo mount -a
参考:
排查 Azure 中的 Linux VM 设备名称更改 - 虚拟机|微软文档 (microsoft.com)
使用 Azure CLI 将数据磁盘添加到 Linux VM - Azure 虚拟机|微软文档 (microsoft.com)