Warum verwendet fstab die UUID anstelle des tatsächlichen Dateisystemnamens?

21

Dies ist zum Beispiel die erste Zeile meines /etc/fstab:

UUID=050e1e34-39e6-4072-a03e-ae0bf90ba13a    /    ext4    errors=remount-ro    0    1

Und hier ist die Ausgabe des df -hBefehls (Meldung von freiem Speicherplatz):

honey@bunny:~$ df -T

Filesystem     Type     1K-blocks    Used Available Use% Mounted on
/dev/vda       ext4      30832636 4884200  24359188  17% /
none           tmpfs            4       0         4   0% /sys/fs/cgroup
udev           devtmpfs    498172      12    498160   1% /dev
tmpfs          tmpfs       101796     320    101476   1% /run
none           tmpfs         5120       0      5120   0% /run/lock
none           tmpfs       508972       0    508972   0% /run/shm
none           tmpfs       102400       0    102400   0% /run/user
  1. Von den beiden ist es in Ordnung , dass abzuleiten UUID=050e1e34-39e6-4072-a03e-ae0bf90ba13adarstellt /dev/vdagegeben , dass die erste Spalte in fstabist <file system>?

  2. Wäre es in Ordnung, wenn ich daran etwas ändern würde /etc/fstab?

    /dev/vda    /    ext4    errors=remount-ro    0    1
    
  3. EDIT: Wenn ja (zu obiger Frage), warum zeigt der sudo blkidBefehl eine andere UUID für /dev/vda?

    $ sudo blkid
    
    /dev/vda: LABEL="DOROOT" UUID="6f469437-4935-44c5-8ac6-53eb54a9af26" TYPE="ext4"
    

    Was vermisse ich hier?

    Antwort: Ich würde (3) zu dem Schluss kommen, dass es sich um einen Fehler in der Cloud meines Hosts handelt. Also ja, die von blkid(oder ls -l /dev/disk/by-uuid) gemeldete UUID sollte mit der in übereinstimmen /etc/fstab.

da ich bin
quelle
Überprüfen Sie die UUID mit dem sudo blkidBefehl.
Avinash Raj
@AvinashRaj Hmm, seltsamerweise gibt der sudo blkidBefehl eine andere UUID für aus /dev/vda. Dies trägt zu meiner Verwirrung bei. :) (Aktualisierte Frage.)
its_me
Es ist kein gutes Zeichen, dass der Befehl "blkid" eine andere UUID anzeigt. Überprüfen Sie die aktuelle UUID mit "ls -l / dev / disk / by-uuid". Könnte es sein, dass die zugrunde liegende VM-Infrastruktur seit dem vda etwas geändert hat?
Liquidation am
@liquidat Dies ist die Ausgabe Ich habe: lrwxrwxrwx 1 root root 9 Jun 18 11:04 6f469437-4935-44c5-8ac6-53eb54a9af26 -> ../../vda. Was Ihre andere Frage betrifft, werde ich den Web-Host darüber kontaktieren.
its_me
Ich würde sagen, dass der Computer möglicherweise nicht neu gestartet wird, da der Eintrag fstab einfach falsch ist. Könnte eine geklonte Festplatte sein oder so. Ich gehe davon aus, dass es kein anderes Gerät gibt, dessen UUID in fstab angegeben ist.
Liquidation am

Antworten:

22

Die Verwendung der UUID hat den Vorteil, dass sie unabhängig von der tatsächlichen Gerätenummer ist, die das Betriebssystem Ihrer Festplatte gibt.

Stellen Sie sich vor, Sie fügen dem System eine weitere Festplatte hinzu, und aus irgendeinem Grund entscheidet das Betriebssystem, dass Ihre alte Festplatte jetzt sdbnicht mehr vorhanden ist sda.

Ihr Boot-Vorgang wäre durcheinander, wenn fstabauf den Gerätenamen verwiesen würde. Aber im Falle der UUIDs ist es in Ordnung.

Weitere Informationen zu UUIDs finden Sie auch im Blog-Beitrag "UUIDs und Linux: Alles, was Sie jemals wissen müssen".

liquidat
quelle
ja. Auch ohne eine neue Festplatte hinzuzufügen, kann Ihr Kernel beschließen, eines Tages nur zwei der Dev-Mounts Ihrer Laufwerke auszutauschen. Siehe wiki.archlinux.org/index.php/Persistent_block_device_naming
Tommy
Was passiert, wenn ich das Image auf eine andere Festplatte mit einer anderen UUID klonen möchte?
Aloplop85
Es gibt mindestens eine Situation, in der UUIDs weniger nützlich sind: Wenn Sie eine gesamte Festplatte klonen und dann neu starten, werden möglicherweise Partitionen von der Festplatte oder von der falschen Festplatte geladen.
Boot13
Das stimmt - sieh im verlinkten Blog-Beitrag nach, es gibt sogar einen Abschnitt, in dem du sie nicht verwenden kannst.
Liquidation
3

Kann ich in diesem Fall / etc / fstab ändern?

Sie können und es wird wahrscheinlich in Ordnung sein, aber höchstwahrscheinlich ist es besser, die UUID zu verlassen.

UUIDs sind beliebige Zeichenfolgen, mit denen in diesem Fall eine Partition auf einem Blockgerät identifiziert wird. Es wird in der Partition selbst gespeichert und kann bei Bedarf einer anderen zugewiesen werden (ähnliche MAC-Adressen).

Der Vorteil der Verwendung der UUID besteht darin, dass sie unverwechselbar ist, während dies /dev/vdanicht der Fall ist . Es kann vorkommen , dass es sich beim Booten um ein anderes Laufwerk handelt, obwohl dies im Kontext durchaus theoretisch ist (z. B. weil Sie nur ein Laufwerk eines bestimmten Typs haben).

Ein weiteres subtileres Beispiel dafür, wo die Verwendung des Gerätenamens zu Problemen führen kann, ist die kürzlich erfolgte Umstellung einiger Systeme auf die Verwendung konsistenter Netzwerkgerätenamen . Wenn dies als Upgrade auftritt und Sie irgendwo einen fest codierten Gerätenamen in einem Netzwerkskript verwenden, wird dies nicht funktionieren. Ein paralleles Beispiel für WRT-Block-Geräte kann ein Kernel- oder udev-Upgrade sein, das das Benennungsschema ändert.

Ein Punkt von UUIDs ist es, solche Dinge möglich und schmerzlos zu machen. So , während Sie können die Gerätenamen verwenden, gibt es keinen Vorteil zu tun , so es sei denn , (zB) Sie ein System haben , in dem Sie in verschiedene Laufwerke tauschen. Mit anderen Worten, wenn Sie nicht einen guten Grund haben , dass zu tun , Stick mit die UUID .

Goldlöckchen
quelle
Okay. Also, was erklärt die verschiedenen UUIDs für /dev/vdain /etc/fstabund berichtet von blkid? (Bitte sehen Sie die aktualisierte Frage, wenn Sie nicht haben.)
its_me
5
Anstatt nach einem Update zu fragen, sollten Sie dies als separate Frage stellen ("Warum unterscheidet sich meine gemountete Partitions-UUID von der in fstab?").
Goldlöckchen
2

Sie können man fstabden Inhalt und die Semantik der /etc/fstabDatei recht präzise lesen . Auf meinem x86, einem ziemlich aktuellen Arch-Linux-Server, man fstabsehe ich Folgendes:

The second field ... describes  the mount point for the filesystem.

Also, ja, /dev/vdaanscheinend ist es einer von vielen Namen für ein Gerät UUID=050e1e34-39e6-4072-a03e-ae0bf90ba13a, vorausgesetzt, beide Namen scheinen auf "/" zu stehen.

Wenn Sie in dem Verzeichnis suchen /dev/disk/by-uuid/können Sie symbolische Links sehen , dass Punkt , um Dinge wie /dev/sda1, /dev/sdb1auf meinem Server. Dies könnte eine andere Möglichkeit sein, Ihre Hypothese zu überprüfen. /dev/diskhat Verzeichnisse by-id, by-path, by-uuiddie alle alternativen Namen für das gleiche Gerät zu sein scheinen.

Bruce Ediger
quelle
In diesem Fall ist das Problem (wie in meiner Frage aktualisiert), dass ich zwei verschiedene UUIDs für bekomme /dev/vda! Bitte sehen Sie die Frage noch einmal.
its_me
1
Wenn ich die ursprüngliche Frage beantwortet habe, ist es möglicherweise eine gute Idee, sie als "beantwortet" zu markieren und eine neue Frage zu schreiben, damit Sie keine irrelevanten Antworten sammeln, sondern Antworten, die mit dem Original und nicht mit der geänderten Frage funktionieren.
Bruce Ediger