sda 和 sdb 继续交换

sda 和 sdb 继续交换

该盒子是一台 HP 微型服务器,运行 Ubuntu 16.04。我最近将启动设备“升级”为 64GB SSD。此外还有一个 1TB SATA 驱动器。

/dev/sda1通常它会作为主分区(在 SSD 上)和/dev/sda5交换分区启动,并/dev/sdb1指向 1Tb HDD 上的分区,该分区安装到/mnt/media0.

问题是,它有时会改变这一切,SSD现在是/dev/sdb1/dev/sdb5媒体分区现在是/dev/sda1

/etc/fstab当然,这会导致交换和介质安装失败,因为它们使用以前的名称列出/dev/sd*

所以我有:

  1. 检查了 BIOS,它始终将 64GB SSD 列为第一个驱动器,将 1TB IDE 列为第二个驱动器。

  2. 我尝试更改/etc/fstab为按卷标引用媒体驱动器,但这会导致 Ubuntu 启动失败并使我进入恢复模式。

  3. 我尝试更改/etc/fstab为使用 UUID 引用交换和 (ext4) 媒体分区(事实上,它列出了主分区)然后我遇到了第二个问题。

当我执行以下命令查找各个分区的 UUID 时...

ls /dev/disk/by-uuid
blkid

两者都只列出第 1 个条目——主分区的 UUID。我只能看到媒体分区的 UUID 使用(在启动时,事实上,sdb1明显被分配)

tune2fs -l /dev/sdb1

但同样,如果我使用该 UUID,/etc/fstab那么 Ubuntu 将无法启动并进入恢复模式。

所以,我的问题是:

  • 有什么方法可以获取/dev/sda/dev/sdb停止驱动器之间的交换吗?

  • 如何让系统查看其他分区的 UUID,以便我可以在其中使用它们fstab

  • 和/或有没有其他方法可以可靠地安装我的交换和媒体分区?

答案1

您可以在 中使用“disk/by-id”名称/etc/fstab,请参阅

ls -l /dev/disk/by-id

请注意,这些设备名称也可能在其他文件(initrd、grub 配置)中使用。因此,您也可以更新 grub 配置并重新创建 initrd。

答案2

它不断交换硬盘驱动器,因为不同的内核有 udev 支持,而其他内核没有 udev (eudev) 支持!

是的,当我开始尝试 sysv、openrc 和 s6 init 替换(systemd 替换)时,我也被这个问题困扰了。

问题在于 grub 实用程序及其在同一磁盘中构建不同 Linux vmlinuz 映像时的配置文件,特别是在为一个内核构建而不是其他内核构建启用GRUB_DISABLE_LINUX_UUID/etc/default/grub等)时。

==原因#1==

那么……罪魁祸首是谁?较旧的非 systemd。非 systemd 会进行交换,使 sda 驱动器始终成为起始磁盘标签,无论使用哪个 SATA/IDE 连接器。

驱动器排序由 ATA(SATA 或 libata 库)设备完成,重新排序由drivers/scsi/ida_probe().GRUB_DEVICE_BOOT从您的文件中删除它/etc/default/grub

==原因#2==

指定CONFIG_SCSI_DEBUG为“yes”(如果在 vmlinuz 引导参数中使用带“的 initramfs”,则指定为“m” scsi_debug=add_host:1)绝对会将现有硬盘驱动器的“sd”标签索引的索引号推高一:即,您的sda1变为sdb1.

相关内容