Ist es sicher, symbolische Links für die gesamte Maschine zu erstellen?

Ist es sicher, symbolische Links für die gesamte Maschine zu erstellen?

Ich habe eine virtuelle Maschine mit begrenztem Speicherplatz, was zu einem Problem geworden ist. Ich habe mein Home-Verzeichnis mit einem NFS-Speicher auf einem Server verknüpft und es funktionierte ohne Probleme. Aber jetzt muss ich meine gesamte Maschine mit dem NFS verknüpfen und mir geht ständig der Speicherplatz aus!

Ich frage mich nur, ob es sicher ist, die gesamte Maschine zu verknüpfen (das heißt, das gesamte:/) zum NFS?

Dazu möchte ich folgende Befehle verwenden:

/storage/nfsist im Grunde mein gemountetes NFS.

$ mkdir /storage/nfs/myvmroot
$ sudo cp -rp /* /storage/nfs/myvmroot
$ sudo mv /* /old-root
$ sudo ln -s /storage/nfs/myvmroot /

Antwort1

Sie können keinen symbolischen Link erstellen /. Das ist einfach nicht möglich. /muss ein Verzeichnis sein. Wenn /es ein symbolischer Link wäre, würde er auf einen Pfad verweisen – und um diesen Pfad aufzulösen, würde das System durchgehen /, was ein symbolischer Link ist und daher aufgelöst werden muss... Ein symbolischer Link, der unter sich selbst verweist, verursacht immer einen Fehler, wenn er dereferenziert wird, aber in jedem Fall können Sie keinen /symbolischen Link erstellen, da es sich bereits um ein vorhandenes Verzeichnis handelt.

Was Sie tun können und was den gewünschten Effekt erzielen wird, istmontierenein NFS-Dateisystem als Root-Dateisystem, anstatt wie üblich ein lokales Dateisystem zu mounten. Dies ist möglich und wird von Ubuntu unterstützt.Es gibt ein Tutorial im Ubuntu-Community-Wiki(Es behandelt eine vollständige Installation ohne Festplatte. Sie können die Abschnitte zu TFTP überspringen, wenn Sie es /bootlokal behalten.) Das Verschieben eines vorhandenen Systems unterscheidet sich ein wenig von der Erstinstallation. Erwarten Sie daher nicht, dass Sie das Tutorial genau befolgen können.

Sie müssen sicherstellen, dass dieinitramfsenthält die notwendigen Treiber. Das initramfs wird durch den Befehlupdate-initramfsbasierend auf der aktuellen Systemkonfiguration und den Konfigurationsdateien unter /etc/initramfs-tools. Sie müssen NFS-Einstellungen explizit hinzufügen zu/etc/initramfs-tools/initramfs.conf, fügen Sie zumindest eine Zeile hinzu BOOT=nfs(ich glaube, die anderen Parameter können beim Booten angegeben werden, BOOT=nfssind aber notwendig, um die NFS-Treiber einzubinden, und DEVICE=…können auch notwendig sein, um den Ethernet-Treiber einzubinden). Nachdem Sie geändert haben /etc/initramfs-tools/initramfs.conf, führen Sie aus update-initramfs.

Ich empfehle, es /bootals lokale Partition getrennt von beizubehalten /, falls dies nicht bereits der Fall ist.

Nicht cp -rp /* /storage/nfs/myvmrootzum Kopieren von Dateien verwenden, das würde nicht funktionieren. Sie müssen gemountete Dateisysteme von der Kopie ausschließen. Übergeben Sie die -xOption. Verwenden Sie außerdem -aanstelle von -rp, da es Attribute gibt, die -rpnicht erhalten bleiben.

cp -ax /* /storage/nfs/myvmroot

oder falls der Kopiervorgang unterbrochen wird

rsync -axAX / /storage/nfs/myvmroot

Eine andere, wahrscheinlich einfachere Möglichkeit besteht darin, das Root-Dateisystem lokal zu belassen und nur einen Teil davon zu verschieben. Im Allgemeinen erzielen Sie mit einem lokalen Dateisystem eine deutlich bessere Leistung und Zuverlässigkeit als mit NFS, selbst mit einem schnellen Server und einem schnellen Netzwerk.

Sie können nicht einfach irgendwo schneiden: Was Sie remote einfügen, darf nicht zu früh im Bootvorgang benötigt werden. Ich glaube, das Schneiden bei /usrwird heutzutage von Ubuntu nicht mehr offiziell unterstützt, aber von Ubuntus übergeordneter Distribution Debian schon, also besteht eine Chance, dass es funktioniert. Ein anderer Ort, der wahrscheinlich funktioniert, ist /usr/share. Ich empfehle nicht /var, es wird wahrscheinlich Ärger geben, wenn etwas kaputt geht, da dort die Protokolle gespeichert werden. (Wenn der NFS-Client mit etwas unzufrieden ist und versucht, Protokolle zu schreiben, /var/logaber /varnicht reagiert, viel Glück bei der Fehlerdiagnose.)

Antwort2

Nein. Dadurch würde Ihre virtuelle Maschine nicht mehr bootfähig sein. Das NFS-System wird zu einem bestimmten Zeitpunkt im Bootvorgang geladen. Vor diesem Zeitpunkt sind keine Dateien auf dem NFS zugänglich. Das bedeutet, dass die Maschine nicht auf die Dateien zugreifen kann, die sie zum Booten benötigt. Dazu gehören (aber nicht ausschließlich) der Kernel selbst, die Standard-Shell /bin/shund alles darunter /bin, was die Befehle enthält, die zum Mounten der NFS-Freigabe erforderlich sind.

Also nein, das ist keine gute Idee. Und was noch wichtiger ist: Es ist nicht notwendig. Die meisten Verzeichnisse /sind nicht sehr groß. Identifizieren Sie einfach das Verzeichnis, das den Platz einnimmt, und verschieben Sie es dorthin. Sie sollten in der Lage sein, eines der folgenden Verzeichnisse ohne größere Probleme zu verschieben:

  • /var/cache
  • /usr/local
  • /usrselbst kann normalerweise auch verschoben werden, aber stellen Sie sicher, dass sich nichts Wesentliches darin befindet /usr/local/bin. Wahrscheinlich wird es nicht darin sein, aber überprüfen Sie es.

Das sind wahrscheinlich sowieso diejenigen, die den Platz einnehmen.

verwandte Informationen