Ist es möglich, dass die Root- und die Home-Partition unterschiedliche Dateisysteme haben und sich auf separaten physischen Geräten befinden?

10

Stellen Sie sich vor, ich habe das Stammverzeichnis mit einem ext3-Dateisystem auf einer separaten Partition formatiert, die zufällig auf einer SATA-Festplatte vorhanden ist, und das Home-Verzeichnis auf einer anderen btrfs-Partition, die zufällig auf einer Intel-SSD vorhanden ist.

Ich habe eine Datei aus dem Internet heruntergeladen und vorübergehend in /tmp(im Root-Dateisystem) gespeichert. Dann habe ich beschlossen, sie in mein Home-Verzeichnis (die zweite Partition) zu verschieben.

Ich kann den schmerzhaften Prozess spüren, der im Hintergrund stattfindet, damit ein so einfacher mvBefehl funktioniert.

Ist es also zunächst möglich, dass Root und Home unterschiedliche Dateisysteme haben? Zweitens: Angenommen, die Antwort auf die vorherige Frage lautete "Ja". Wie verwaltet das Betriebssystem den gesamten Übergang von ext3zu btrfsund verwendet dann verschiedene Gerätetreiber für verschiedene Festplattentypen (Festplatte und SSD)?

Karim Manaouil
quelle
3
Es ist mit Schichten gemacht. Die Dateisystemschicht ist über der Blockgeräteschicht aufgebaut. Sie können jedes geeignete Dateisystem in der Dateisystemschicht verwenden. Sie können jedes geeignete Blockgerät in dieser Blockgeräteschicht verwenden. Jeder Einhängepunkt kann ein eigenes Dateisystem und ein eigenes Gerät haben.
Sägemehl
@sawdust, das ist eine sehr interessante Sache, auf die Sie hingewiesen haben, die Dateisystemschicht und die Blockgeräteschicht. Wie verhalten sie sich? Alle Lesungen werden hilfreich sein.
Karim Manaouil
Ich weiß nicht so viel über Dateisysteme, aber ich gehe davon aus, dass sich der Prozess nicht so sehr vom Kopieren von Dateien auf ein externes FAT32-Laufwerk unterscheidet
Blaine
Warum verwenden Sie ext3 2017 immer noch, wenn es so einfach ist, auf ext4 zu aktualisieren?
David Foerster

Antworten:

25

Die Antwort lautet: Ja, Sie können jedes Verzeichnis auf jedem Gerät haben und jedes Dateisystem ausführen, das das Betriebssystem unterstützen kann.

So können Sie / /var /home /optund sogar /home/afr0ckauf verschiedenen Geräten, verschiedenen Partitionen, verschiedenen Dateisystemen haben.

Sie können nicht nur, aber es ist üblich. Zum Beispiel wird es immer zu halten empfohlen /varund /homeauf verschiedenen Partitionen , /da diese am ehesten Speicherplatz versehentlich verbrauchen - wenn sie füllen, ist es nicht das System zu viel Einfluss. Wenn sie sich auf derselben Partition wie root befinden, kann dies dazu führen, dass das System gestoppt wird.

Aus Geschwindigkeitsgründen möchten Sie möglicherweise, dass unterschiedliche Verzeichnisse auf unterschiedlichen Geräten ausgeführt werden. Und verwenden Sie verschiedene Dateisysteme für verschiedene Zwecke. Zum Beispiel ist ext4 vielleicht das, was Sie für die Betriebssystemdateien wollen, da sie sich nicht viel ändern, aber Sie möchten vielleicht btrfs für / home, damit Sie Snapshots für Backups behalten können. Dies sind alles Entscheidungen, die von jeder Person für ihren spezifischen Anwendungsfall getroffen werden können.

Der User Space-Teil des Betriebssystems muss die verschiedenen Geräte- und Dateisystemtypen nicht verstehen. Alles, was es tut, fordert den Kernel auf, eine Datei zu verschieben, und der Kernel orchestriert alles von dort aus. Der mvBefehl ist also (zum Beispiel) unabhängig vom Dateisystem und vom Gerätetyp. Der Kernel ruft alle Treiber auf, die zum Lesen und Schreiben auf den verschiedenen Partitionen erforderlich sind.

Paul
quelle
7
Nützlich, um darauf hinzuweisen, dass mv(1)zuerst versucht wird, rename(2)die Datei. Dann wird auf Kopieren und Löschen zurückgegriffen. Beim Umbenennen wird also mvherausgefunden, ob dies auf FS-agnostische Weise möglich ist. ( rename(2)schlägt immer fehl, wenn zwischen verschiedenen Geräten gewechselt wird, unabhängig davon, ob sie denselben Dateisystemtreiber verwenden oder nicht, @ afr0k.)
Peter Cordes
1
@ PeterCordes huh, ich wusste nicht, dass Umbenennen eine Sache ist. Ich habe immer mv verwendet, um Dinge umzubenennen.
5
@stanri: Verzweigt mv/ führt den rename(1)Befehl nicht aus, sondern versucht nur den rename(2)Systemaufruf. Es gibt keinen Standard- renameShell-Befehl. Auf einigen Systemen ist dies der Befehl zum Umbenennen mehrerer Muster durch Util-Linux. Ich habe nicht über den Shell-Befehl gesprochen, sondern nur darüber, wie er mvintern funktioniert.
Peter Cordes
Sogar / usr könnte sich auf einer anderen Partition befinden. Dies ist der Grund, warum sich in / bin / lib und / sbin einige wirklich wichtige Dinge befinden - ob alle Installer dies unterstützen, ist eine andere Frage.
Rackandboneman
7

Ja, separate Dateisysteme (Einhängepunkte) können unterschiedliche Dateisystemtypen sein.  /procist immer ein procfsDateisystem und /sysist immer ein sysfs. Vorübergehende Dateisysteme (manchmal auch /tmp) sind häufig tmpfs, und in Arbeitsgruppeneinstellungen handelt es sich bei den Basisverzeichnissen des Benutzers (und seinen Arbeitsproduktverzeichnissen) häufig um nfsandere entfernte (Netzwerk- / gemeinsam genutzte) Dateisystemtypen.

Es gibt keine spezielle Verwaltung für das Betriebssystem. Bis zu einem gewissen Punkt sehen auf Benutzerebene alle Dateisysteme gleich aus, in dem Sinne, dass eine lsAuflistung in jedem Verzeichnis ziemlich gleich aussieht. Darüber hinaus interagieren Dateisysteme nicht mehr. Selbst zwischen zwei Dateisystemen (Partitionen) auf derselben physischen Festplatte desselben Dateisystemtyps besteht keine Verknüpfung 1 . Wenn Sie beispielsweise eine Datei von einem Dateisystem (Einhängepunkt) in ein anderes verschieben, müssen Sie immer eine Kopie erstellen und das Original löschen. Es spielt keine Rolle, ob es sich um Partitionen auf verschiedenen Festplatten handelt. Es spielt keine Rolle, ob eine davon eine Festplatte und eine eine SSD ist. Es spielt keine Rolle, ob man ist ext3und einer istbtrfs. Es spielt keine Rolle, ob einer intern (innerhalb des Computergehäuses) und einer extern (einige Zentimeter außerhalb, über ein Kabel verbunden) oder ferngesteuert (Zugriff über das Netzwerk) ist.

Apropos Netzwerk, es ist ein wenig analog zu ssh. Es liest von der Tastatur und sendet die von Ihnen eingegebenen Zeichen an das Netzwerk. Gleichzeitig liest es aus dem Netzwerk und zeigt die Ergebnisse auf dem Bildschirm an.

Oder denken Sie daran: Stellen Sie sich vor, Sie telefonieren und vermitteln ein Gespräch zwischen der Person am anderen Telefon und einer anderen Person im Raum. Es ist keine große Sache.
________
1 mit Ausnahme symbolischer Links - sie können jedoch Dateisystemgrenzen überschreiten.

G-Man sagt "Reinstate Monica"
quelle
1
Ich stimme Ihrer Antwort weitgehend zu, aber es ist nicht wirklich typisch für / tmp, ein tmpfs zu sein (obwohl es in einigen Distributionen möglicherweise so eingestellt ist) - es ist normalerweise nicht auf der Root-Partition und wird beim Booten bereinigt. Ubuntu und Redhat Typ Distributionen verwenden / dev / shm als tmpfs,
Davidgo
Ich war verwirrt. Ich habe meine Antwort aktualisiert.
G-Man sagt 'Reinstate Monica'
1
@davidgo: Welche Linux-Distributionen verwenden /tmptmpfs nicht standardmäßig ? Ich dachte auch, dass es ziemlich üblich ist, da man immer Sachen hineinstecken kann /var/tmp(obwohl das beim Booten nicht gereinigt wird). Ich bin kein Experte für Cross-Distribution-Standardeinstellungen, nur Debian / Ubuntu und Arch. Mit diesen und RedHat deckt dies einen großen Teil der installierten Linux-Systeme ab (aber nicht annähernd so einen großen Teil der gesamten Distributionen).
Peter Cordes
(ignoriert eingebettete Systeme) Ich benutze nur regelmäßig Centos und Ubuntu - beide verwenden Festplatte für / tmp. - Ich bin mir ziemlich sicher, dass dies bedeutet, dass Debian, Redhat und Mint alle der gleichen Konvention folgen werden. Mein Android-Gerät hat nicht / tmp
davidgo
2
@PeterCordes Der Aufstieg von tmpfsLinux ist erst in den letzten 5-7 Jahren oder so neu. zB hat Fedora die Änderung in ihrem Wiki ~ 2012 diskutiert, und ich glaube, sie wurde in Debian Wheezy eingeführt.
Bob