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 mv
Befehl 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 ext3
zu btrfs
und verwendet dann verschiedene Gerätetreiber für verschiedene Festplattentypen (Festplatte und SSD)?
quelle
Antworten:
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
/opt
und sogar/home/afr0ck
auf 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
/var
und/home
auf 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
mv
Befehl 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.quelle
mv(1)
zuerst versucht wird,rename(2)
die Datei. Dann wird auf Kopieren und Löschen zurückgegriffen. Beim Umbenennen wird alsomv
herausgefunden, 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.)mv
/ führt denrename(1)
Befehl nicht aus, sondern versucht nur denrename(2)
Systemaufruf. Es gibt keinen Standard-rename
Shell-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 ermv
intern funktioniert.Ja, separate Dateisysteme (Einhängepunkte) können unterschiedliche Dateisystemtypen sein.
/proc
ist immer einprocfs
Dateisystem und/sys
ist immer einsysfs
. Vorübergehende Dateisysteme (manchmal auch/tmp
) sind häufigtmpfs
, und in Arbeitsgruppeneinstellungen handelt es sich bei den Basisverzeichnissen des Benutzers (und seinen Arbeitsproduktverzeichnissen) häufig umnfs
andere 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
ls
Auflistung 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 istext3
und 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.
quelle
/tmp
tmpfs 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).tmpfs
Linux 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.