该盒子是一台运行 Ubuntu 16.04 的 HP 微服务器。我最近将启动设备“升级”到了 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*名称列出。
所以我有:
检查 BIOS,它始终将 64GB SSD 列为第一个驱动器,将 1TB IDE 列为第二个驱动器。
我尝试更改/etc/fstab为通过卷标引用媒体驱动器,但这会导致 Ubuntu 在启动时失败并使我进入恢复模式。
我尝试更改/etc/fstab为使用 UUID 引用交换和 (ext4) 媒体分区(实际上,它列出了主分区),但随后我遇到了第二个问题。
当我执行以下操作以查找各个分区的 UUID 时...
ls /dev/disk/by-uuid
blkid
Run Code Online (Sandbox Code Playgroud)
两者都只列出 1 个条目——主分区的 UUID。我只能看到媒体分区的 UUID 使用(在启动时,实际上,sdb1显然已分配)
tune2fs -l /dev/sdb1
Run Code Online (Sandbox Code Playgroud)
但同样,如果我在其中使用该 UUID,/etc/fstabUbuntu 将无法启动并进入恢复模式。
所以,我的问题是:
有什么方法可以获取/dev/sda和/dev/sdb停止驱动器之间的交换?
如何让系统看到其他分区的 UUID,以便我可以在其中使用它们fstab?
和/或有没有其他方法可以可靠地安装我的交换和媒体分区?
您可以在 中使用“磁盘/按 ID”名称/etc/fstab,请参阅
ls -l /dev/disk/by-id
Run Code Online (Sandbox Code Playgroud)
请注意,这些设备名称也可能用于其他文件(initrd、grub 配置)。因此,您也可以更新您的 grub 配置并重新创建 initrd。