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.

相關內容