Debian

複製機器時如何防止磁碟 UUID 不匹配?

  • April 13, 2021

我已經建構了一台 Debian linux 機器。我以壓縮 tar 文件的形式擷取了整個硬碟驅動器的“圖像”。然後我將它解壓到另一台機器上,設置 grub 以便它可以啟動。

我遇到的問題是磁碟 UUID 與原始 UUID 不同,因此磁碟被安裝為只讀。之後我可以通過在 /etc/fstab 中配置正確的 UUID 來解決這個問題。但是,我想避免這種情況。

在擷取原始機器的“圖像”之前,我可以在原始機器上做什麼,以便在解壓到另一台機器時避免這個問題?

更新:根據對其中一個答案的有用評論,我應該澄清初始機器和後續複製/s 將只有一個磁碟。

在擷取原始機器的“圖像”之前,我可以在原始機器上做什麼,以便在解壓到另一台機器時避免這個問題?

而不是按名稱掛載磁碟引用,而是通過

  • 按標籤安裝
  • 按名稱安裝

# for example when mounted by-name it would look like this in /etc/fstab

/dev/sda3   /

# and When mounted by-label it would like this in /etc/fstab

LABEL=some_name   /

標籤進行操作將在新系統中工作,無需額外工作。

要知道,僅當它是系統中唯一的磁碟以保證其引用為 時,按名稱執行此操作才會在新系統中起作用sda。當系統中有其他磁碟時,或者當其他硬體被視為 時/dev/sd?,您不能始終依賴複製的磁碟sda,這就是 by-name 的問題所在。如果你所有的/etc/fstabgrub引用都有/dev/sda,但你的磁碟也進來了,/dev/sdb那麼boot device not found

您必須稍微了解一下您的 Linux 系統、RHEL/CentOS、SLES/SUSE、Ubuntu 或其他任何東西,並找到所有磁碟引用的位置。這不僅僅是/etc/fstabGrub引導載入程序最有可能出現在其他地方,因為它在 Linux 中最受歡迎。故事:我曾經使用 SLES 11,它使用了 ELILO ……這是 grub 的替代品,我認為它很棒……帶回 ELILO !…但是為此,我只需要擔心另一個文件/etc/fstab,除了elilo.conf.

新複製的磁碟啟動並執行後,在設置新系統(主機名、IP 地址等)的各種任務中,只需更新/etc/fstabgrub 文件即可返回通過-uuid 掛載

還要知道,對於按標籤掛載,您需要保證沒有其他磁碟使用相同的標籤。看似簡單,但很容易忘記;例如,我總是簡單地標記/boot分區和簡單地標記boot我的/分區root。如果我去複製磁碟然後嘗試連接其中兩個磁碟並嘗試啟動,當多個分區具有相同標籤時系統會選擇哪個?因此,如果您健忘,標籤可能會咬您一口……系統可以輕鬆啟動和工作,但您不會在您認為的磁碟上執行。

往下看/dev/disk/,你會看到

  • 按 ID/
  • 按標籤/
  • 按部分標籤/
  • 通過partuuid /
  • 旁路/
  • 通過-uuid/

拿來做參考,應該很清楚明白。

ls -l /dev/disk/by-label

lrwxrwxrwx. 1 root root 10 Mar  2 15:46 boot -> ../../sdc2
lrwxrwxrwx. 1 root root 10 Mar  2 15:46 data -> ../../sda1
lrwxrwxrwx. 1 root root 10 Mar  2 15:46 root -> ../../sdc3
lrwxrwxrwx. 1 root root 10 Mar  2 15:46 scratch -> ../../sdb1

# Explanation of these 4 listings: when installing Linux I always do
   /boot    ==> /dev/sda2  labeled as 'boot'
   /        ==> /dev/sdc3  labeled as 'root'
  
 my other disks here on this specific system I labeled as data and scratch.

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