Woher weiß Linux, welche USB-Festplatte welche ist?

24

Derzeit habe ich Linux Mint auf meinem PC mit einer als gemounteten USB-Festplattenpartition installiert /home. Das funktioniert gut.

Wenn ich eine zweite USB-Festplatte installiere, besteht die Möglichkeit, dass Linux zwischen den beiden verwechselt wird, und versuche, die Partition der zweiten Festplatte wie /homebeim Booten bereitzustellen? Das wäre schlimm.

Unter Windows ist es häufig vorgekommen, dass Laufwerksbuchstaben nicht korrekt "gespeichert" werden, was zu Problemen aller Art führt.

Ich denke, die Hauptfrage ist: Woher weiß Linux eigentlich, welche USB-Festplatte /dev/sdbwelche ist /media/misha/my_2nd_drive?

misha256
quelle
mit einer USB - Partition der Festplatte als angebracht/home Können Sie sich bitte erklären , wie Sie das getan?
AL
Ich habe es während der Installation von Linux Mint gemacht. An diesem Punkt ist es ganz einfach. Meine SSD erschien als sda und die USB-Festplatte als sdb . Ich habe /und swapauf SDA und /homeauf SDB . Aber ich würde nicht wissen, wie ich die Halterung einer vorhandenen Installation ändern soll/home , zu neu dafür!
misha256
Die Antworten sagen, was Sie tun sollten , aber ich glaube nicht, dass sie direkt sagen, dass sie sd[a-z]einfach in der Erkennungsreihenfolge benannt sind. Es wird überhaupt nicht versucht, die Namen gleich zu halten. Es ist in der Regel deterministisch (derselbe Kernel auf derselben Hardware gibt den gleichen Namen), aber ein neuer Kernel mit einer Aktualisierung des SATA-Controller-Treibers kann dazu führen, dass die SATA-Laufwerke in umgekehrter Reihenfolge gescannt werden. Anstatt sogar zu versuchen, Block-Geräte umzubenennen (wie dies bei nameifEthernet-Gerätenamen (normalerweise mit udev-Regeln) der Fall ist), sind UUID-, Label- und ID-Namen (nach Laufwerk-Seriennummer) vorhanden.
Peter Cordes
Ich habe Server mit SAS-Datenträgern gesehen, bei denen ein Neustart normalerweise zu einer anderen Reihenfolge führt sd[a-z]: Das Prüfen von Datenträgern erfolgt gleichzeitig (parallel) und die zuerst erkannte Festplatte wird sdausw.
Wurtel

Antworten:

26

Normalerweise bestimmt die Position des USB-Anschlusses (Bus / Gerät) die Reihenfolge, in der er erkannt wird. Verlassen Sie sich jedoch nicht darauf.

Jedes Dateisystem verfügt über eine UUID, die für einen universell eindeutigen Bezeichner steht ( FAT und NTFS verwenden ein etwas anderes Schema, sie verfügen jedoch auch über einen Bezeichner, der als UUID verwendet werden kann). Sie können sich darauf verlassen, dass die (Linux-) UUID eindeutig ist. Weitere Informationen zu UUIDs finden Sie in diesem Wikipedia-Artikel .

Verwenden Sie die Festplatten-UUID als Mount-Argument. Führen Sie Folgendes aus, um herauszufinden, wie die UUID lautet:

$ sudo blkid /dev/sdb1

( blkidmuss das Gerät lesen, daher benötigt es Root-Fähigkeiten, daher die sudo. Wenn Sie bereits Root geworden sind, sudowird die nicht benötigt.)

Sie können diese UUID dann folgendermaßen verwenden /etc/fstab:

UUID=7e839ad8-78c5-471f-9bba-802eb0edfea5 /home ext4 defaults 0 2

Es kann dann keine Verwirrung darüber geben, auf welcher Festplatte / zu Hause gemountet werden soll.

Für die manuelle Montage können Sie verwenden /dev/disk/by-uuid/.....

wurtel
quelle
1
Super, das wusste ich fstabbis jetzt noch nicht einmal (so neu bin ich bei Linux). Ich habe meine fstabDatei angesehen und alles ist bereits durch UUID identifiziert. Das Linux Mint-Installationsprogramm hat gute Arbeit geleistet.
Mischa256
Sie können diese Antwort verbessern, indem Sie kurz erläutern, was die UUID ist und warum sie eindeutig ist, was sie zu einer zuverlässigen Kennung macht.
AL
11

Wenn Sie fstabPartitionen als referenzieren /dev/sdx, kann das Hinzufügen eines neuen Laufwerks das System sicherlich verwirren. Die neuere Praxis besteht jedoch darin, Partitions-UUIDs zum Identifizieren der Partitionen zu verwenden.

Wenn Ihr System udevinstalliert ist (dies muss bei Linux-Kerneln ab 2.6 der Fall sein), können Sie die dauerhafte Benennung in verwenden fstab. Standardmäßig werden Partitionen über UUIDs identifiziert:

/dev/disk/by-uuid/31f8eb0d-612b-4805-835e-0e6d8b8c5591

Sie können jedoch eine aussagekräftige Partitionsbezeichnung wie "home" erstellen und Ihre Partition folgendermaßen referenzieren:

/dev/disk/by-label/home

Diese IDs können als Ersatz für /dev/sdxin verwendet werden fstab.

Dmitry Grigoryev
quelle
Ich wünschte, ich könnte Ihre Antwort auch richtig markieren. Wurtel hatte sich früher gemeldet. Aber trotzdem danke, du bekommst meine +1.
Mischa256
@ misha256 Die Ironie ist, dass ich auf meinen Systemen nicht einmal UUIDs verwende (weil die Ausgabe von dfund mountunlesbar wird). Interne Festplatten werden mit hoher Wahrscheinlichkeit zuerst und jedes Mal in der gleichen Reihenfolge erkannt.
Dmitry Grigoryev
1
Wenn Sie Labels verwenden, können Sie diese LABEL=homein Ihrer fstab verwenden. Ich verwende gerne Labels wie t-homefür das Home-Verzeichnis auf meinem Computer namens Tesla. Wenn ich die Festplatte in ein anderes System stecke, gibt es keine zwei Dateisysteme mit der gleichen Bezeichnung. Aus diesem Grund generieren Linux-Installationsprogramme zufällige UUIDs und verwenden sie in fstab, anstatt Standardbezeichnungen zu verwenden, mit denen die meisten Systeme dieselben Bezeichnungen für ihre FSes erhalten. @ misha256, vielleicht möchten Sie darüber nachdenken, wenn Sie Ihre FSes beschriften.
Peter Cordes
1
@PeterCordes Ich verwende in der Tat Labors, und ich habe ein Benennungsschema, das darauf abzielt, diese Labels eindeutig zu machen.
Dmitry Grigoryev
1
UUIDs sind großartig und funktionieren wie in den Antworten angegeben. Aber sie sind nicht menschlich freundlich. Wenn ich (irgendwo) Partitionen erstelle, gebe ich ihnen eindeutige, von Menschen lesbare Bezeichnungen, die für mich sinnvoll sind. Dies ist besonders hilfreich, wenn Sie Sicherungsskripts für mehrere Laufwerke schreiben. Sie möchten nicht, dass Quelle und Ziel versehentlich vertauscht werden! Wenn Sie eine Partition neu formatieren, erhält diese eine neue UUID und Sie müssen alle Elemente bearbeiten, die diese UUID verwendet haben. Sie können jedoch dieselbe Bezeichnung wie zuvor verwenden und müssen keine Änderungen vornehmen.
Joe