![Nicht leere Einhängepunkte mit btrfs (SLES15): Werden diese benötigt?](https://rvso.com/image/1672329/Nicht%20leere%20Einh%C3%A4ngepunkte%20mit%20btrfs%20(SLES15)%3A%20Werden%20diese%20ben%C3%B6tigt%3F.png)
Ich habe viele Jahre Erfahrung mit UNIX, aber ich glaube, ich habe einen fatalen Fehler gemacht:
Als ich beim Booten Meldungen über nicht leere Einhängepunkte sah, nutzte ich die Gelegenheit, diese zu bereinigen, während ich ein System in eine neue Umgebung migrierte. Ich bootete das SLES-Rettungssystem, mountete das Root-Dateisystem und die grundlegende Systemstruktur (proc, sys, dev) auf und /mnt
führte dann chroot /mnt
und aus mount -va
.
Damit alles gut aussieht, habe ich einige Konfigurationseinstellungen angepasst und beim Aushängen die Einhängepunkte überprüft. Beispiel:
/var/cache
wurde eingehängt, umount
war erfolgreich, ll /var/cache
zeigte aber immer noch einen nicht leeren Einhängepunkt an, während das Dateisystem als nicht eingehängt angezeigt wurde. Also habe ich den Inhalt entfernt.
Grundsätzlich habe ich die Schritte für jedes gemountete Dateisystem wiederholt, dann die chroot
Umgebung verlassen, den Rest ausgehängt und neu gestartet.
Leider lässt sich das System nicht starten, da GRUB eine Fehlermeldung anzeigt, dass es nicht gefunden werden kann normal.mod
.
Handelt es sich hierbei also um eine Funktion von BTRFS-Subvolumes? Wer kann erklären, was da vor sich ging?
/etc/fstab
Wie von mir gewünscht /etc/fstab
, weist ein typisches System Folgendes auf:
/dev/sys/root / btrfs defaults 0 0
/dev/sys/root /var btrfs subvol=/@/var 0 0
/dev/sys/root /usr/local btrfs subvol=/@/usr/local 0 0
/dev/sys/root /tmp btrfs subvol=/@/tmp 0 0
/dev/sys/root /srv btrfs subvol=/@/srv 0 0
/dev/sys/root /root btrfs subvol=/@/root 0 0
/dev/sys/root /opt btrfs subvol=/@/opt 0 0
UUID=9fd27493-d194-48ba-a4bc-3551123e0d3b /home xfs defaults 0 0
/dev/sys/boot /boot btrfs defaults 0 0
UUID=0092-D1D5 /boot/efi vfat utf8 0 2
/dev/sys/root /.snapshots btrfs subvol=/@/.snapshots 0 0
Antwort1
So funktionierte es
/dev/sys/root
enthält ein Btrfs-Dateisystem. Mehrere Einträge in Ihrem fstab
mounten verschiedene Subvolumes davon an verschiedenen Mountpunkten.
Hypothese: Das Standard-Subvolume im Btrfs-Dateisystem in /dev/sys/root
ist /@
und sobald es unter gemountet ist /
, werden viele andere Subvolumes gemountetan ihren jeweiligen Einhängepunktenmacht wenig bis gar keinen Sinn, da die richtigen (und normalerweise nicht leeren) Verzeichnisse bereits dort sind, wo Sie sie erwarten.
(Um das Standarduntervolume anzuzeigen, führen Sie aus sudo btrfs subvolume get-default /
.)
Bitte lesen Siedies ist eine weitere Antwort von mirund verstehen Sie den konzeptionellen Unterschied zwischen dem Btrfs-Verzeichnisbaum (und den Untervolumes) auf einem Gerät und der Verzeichnisstruktur in Ihrem Betriebssystem. Ohne dieses Wissen kann der Rest der aktuellen Antwort für Sie sehr verwirrend sein.
Wenn das Standard-Subvolume/@
, /@
aus dem Btrfs-Baum erscheint als /
im OS-Baumzusammen mit allem darunterDiese Montageallein/@/var
reicht es aus, z. B. das Verzeichnis aus dem Btrfs-Baum als /var
im OS-Baum anzuzeigen . Ich meine, wenn Sie versuchen, darauf zuzugreifen/var
Vor /var
wird dann montiert
- das Betriebssystem prüft, ob
/var
(vom Betriebssystem) ein Einhängepunkt ist; es ist nicht der Fall. - das Betriebssystem prüft also, ob
/
es sich um einen Einhängepunkt handelt. Dies ist der Fall und er ist mit/@
dem Btrfs verknüpft. - Das Betriebssystem zeigt Ihnen also
/@/var
das Btrfs als/var
Teil des Betriebssystems an.
Es kommt vor, dass es sich /@/var
bei Btrfs um ein Untervolume handelt.ZusätzlichBeim Mounten subvol=/@/var
unter /var
(des Betriebssystems) wird dasselbe Verzeichnis wie /var
(des Betriebssystems) angezeigt. Insbesondere wenn Sie jetzt darauf zugreifen, /var
dann
- Das Betriebssystem prüft, ob
/var
es sich um einen Einhängepunkt handelt. Dies ist der Fall und er ist mit/@/var
dem Btrfs verknüpft. - Das Betriebssystem zeigt Ihnen also
/@/var
das Btrfs an.
Und wenn Sie /var
(das Betriebssystem) aushängen, kehren Sie zum ersten Fall zurück.
Es spielt also keine Rolle, ob /var
(das Betriebssystem) gemountet ist oder nicht (praktisch spielt es keine Rolle, es kann Feinheiten geben). Auf die eine oder andere Weise werden Sie /@/var
das Btrfs als /var
im Betriebssystem sehen.
Mehrere andere Einträge in Ihrem fstab
Mount verschiedene Subvolumeswo man sie sowieso sehen würde. Ich verstehe den Sinn dieser Einträge nicht wirklich (der Sinn liegt vielleicht in irgendeiner Feinheit, die ich derzeit nicht erkennen kann, oder diese Einträge sind tatsächlich völlig sinnlos).
Zum Vergleich: Wenn /var
(des Betriebssystems) mit gemountet wurde, subvol=/var
dann würde das Mounten Sinn machen, weil /var
das Btrfs nicht unterhalb /@
des Btrfs liegt und man es daher nicht erreichen kann, indem man /@
das Btrfs einfach /
vom Betriebssystem aus mountet.
Wie du es kaputt gemacht hast
… wurde gemountet,
umount
war erfolgreich,ll …
zeigte aber immer noch einen nicht leeren Mount-Punkt an, während das Dateisystem als nicht gemountet angezeigt wurde. Also habe ich den Inhalt entfernt.
Wie gesagt, mehrere Einträge in Ihrem fstab
Mount sind in verschiedenen Subvolumes vorhanden, wo Sie sie sowieso sehen würden. In diesen Fällen entfernen Sie den Inhalt, nachdem umount
Sie den Inhalt entfernt haben, den Sie zuvor gesehen haben umount
. Sie dachten, Sie hätten verdeckte, irrelevante Inhalte entfernt, aber tatsächlich haben Sie die eigentlichen, wichtigen Inhalte entfernt.
Zwei Dinge passen allerdings nicht:
- Ihr Beispiel-Einhängepunkt ist , Sie haben ihn angeblich ausgehängt, aber in dem von Ihnen geposteten
/var/cache
steht keins ./var/cache
fstab
- Laut Ihrem
fstab
Beitrag/
stammt (des Betriebssystems) von/dev/sys/root
, während/boot
(des Betriebssystems) von stammt/dev/sys/boot
. Der beschriebene Mechanismus, Dinge kaputt zu machen, kann nicht angewendet werden. Dennoch behaupten Sie, dass „GRUB sich beschwert hat, dass es nicht finden kannnormal.mod
“, und daraus schließe ich, dass Sie die Dinge irgendwie kaputt gemacht haben/boot
.
Deshalb vermute ich, dass das Veröffentlichte fstab
(Sie haben es als „das, was ein typisches System hat“ beschrieben) nicht das ist,genau fstab
des betroffenen Betriebssystems. Ich vermute, /boot
dass dort dasselbe Dateisystem wie verwendet wurde /
, unnötigerweise gemountet war und daher anfällig für das beschriebene Szenario von Störungen war.