Ubuntu

sda 和 sdb 不斷交換

  • September 2, 2021

這個盒子是一個執行 Ubuntu 16.04 的 HP 微伺服器。我最近將引導設備“升級”到了 64GB SSD。此外還有一個 1TB SATA 驅動器。

通常它/dev/sda1作為主分區(在 SSD 上)和/dev/sda5作為交換啟動,並/dev/sdb1指向 1Tb 硬碟上的分區,該分區掛載到/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
  • 和/或有沒有其他方法可以可靠地安裝我的交換和媒體分區?

您可以在 中使用“磁碟/按 ID”名稱/etc/fstab,請參閱

ls -l /dev/disk/by-id

請注意,這些設備名稱也可能用於其他文件(initrd、grub 配置)。所以你也可以更新你的 grub 配置並重新創建 initrd。

它不斷交換硬碟驅動器,因為不同的核心有 udev 支持而其他核心沒有 udev (eudev) 支持!

是的,當我開始嘗試使用 sysv、openrc 和 s6 init 替換(systemd 替換)時,我也被這個問題困擾了。

問題在於 grub 實用程序及其在同一磁碟中建構不同的 Linux vmlinuz 映像時的配置文件,特別是在為一個核心建構而不是其他核心建構啟用GRUB_DISABLE_LINUX_UUID/etc/default/grub等)時。

== 原因 #1 ==

那麼……誰是罪魁禍首?較舊的非系統化。無論使用哪個 SATA/IDE 連接器,非 systemd 都會進行交換以使 sda 驅動器始終作為起始磁碟標籤。

驅動器排序由 ATA(SATA 或 libata 庫)設備完成,重新排序由drivers/scsi/ida_probe(). GRUB_DEVICE_BOOT從您的/etc/default/grub文件中刪除它。

== 原因 #2 ==

指定CONFIG_SCSI_DEBUG為“yes”(如果scsi_debug=add_host:1在您的 vmlinuz 引導參數中使用帶有“”的 initramfs,則指定為“m”)肯定會將現有硬碟驅動器的“sd”標籤索引的索引號推一:即,您的sda1變為sdb1.

引用自:https://unix.stackexchange.com/questions/362230