如何解决Linux磁盘乱序的问题

背景

最近看腾讯云云硬盘一篇文档(https://cloud.tencent.com/document/product/362/32403) 以下这段通过软链接挂载磁盘方式,开始没太明白为什么要做这样复杂 ??

此云硬盘文档分为两段来介绍挂载磁盘:

1) 购买云硬盘后,直接格式化,通过设备方式挂载,如以下红色部分。

2)然后是将磁盘放到fstab中,就出现第一个截图的挂载方式。

Linux工作原理

将软链接的方式写入fstab中其实是为解决Linux磁盘挂载乱序的问题 。 当Linux磁盘较多的情况,如/vda、/vdb、/vdc等,假如某块盘坏掉换盘后,前面盘符就会出现顺序错乱的情况,这是Linux工作机制导致的问题,当前Linux磁盘映射会通过以下依次三种顺序:

  • 磁盘驱动程序加载;
  • 主机PCI插槽检测;
  • 磁盘本身监测。

所以这里出现热插拔、异常重启、磁盘异常换盘就会导致磁盘乱序,所以我们可以采用软连接的方式来解决此问题。

如何解决乱序问题

解决方法还是通过软链接的方式来挂载,接下来说一下操作步骤,首先查找磁盘映射关系。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# tree /dev/disk/*
/dev/disk/by-id
|-- ata-QEMU_DVD-ROM_QM00002 -> ../../sr0
`-- virtio-disk-91mkfy6l -> ../../vdb
/dev/disk/by-label
`-- config-2 -> ../../sr0
/dev/disk/by-partuuid
`-- 4c5be527-01 -> ../../vda1
/dev/disk/by-path
|-- pci-0000:00:01.1-ata-1 -> ../../sr0
|-- pci-0000:00:06.0 -> ../../vda
|-- pci-0000:00:06.0-part1 -> ../../vda1
|-- pci-0000:00:07.0 -> ../../vdb
|-- virtio-pci-0000:00:06.0 -> ../../vda
|-- virtio-pci-0000:00:06.0-part1 -> ../../vda1
`-- virtio-pci-0000:00:07.0 -> ../../vdb
/dev/disk/by-uuid
|-- 2023-02-28-09-55-50-00 -> ../../sr0
|-- 7ce2278a-742e-4a79-8385-116636fe842c -> ../../vdb
`-- c21f153f-c0a8-42db-9ba5-8299e3c3d5b9 -> ../../vda1

通过软链接的方式来挂载磁盘(还可以用标签,操作方式见参考)。

1
# mount -t ext4 /dev/disk/by-uuid/7ce2278a-742e-4a79-8385-116636fe842c /mnt

成功挂载后,再将挂载盘动作写入/etc/fstab,修改此文件时建议先备份。写入fstab主要还是重启服务器时init会加载此文件,并将此文件中的设备进行挂载。

1
/dev/disk/by-uuid/7ce2278a-742e-4a79-8385-116636fe842c      /data1  ext4 defaults 0 0

执行以下命令,无报错为加载成功。

1
# mount -a