Mounten einer Partition in eine 'Sandbox'


9

Ich frage mich, ob das möglich ist. Ich möchte ein Linux-System einrichten, das einen /Remote-Linux-Computer /auf dem lokalen Computer bereitstellt . Ich möchte jedoch, dass alle Änderungen auf dem lokalen Computer im RAM gespeichert werden, damit sie sich nicht auf den Remotecomputer auswirken. Im Idealfall werden die Änderungen NIEMALS geschrieben, sodass beim Neustart die ursprüngliche /Partition erneut bereitgestellt wird, ohne dass alle während der vorherigen Sitzung vorgenommenen Änderungen berücksichtigt werden.

Ist so etwas möglich?


Ich bin nicht dazu gekommen, die Antworten Ihrer Jungs zu testen, daher ist es schwierig, 1 als Lösung auszuwählen. Also werde ich euch alle nur positiv bewerten
Falmarri

Antworten:


7

Verwenden Sie unionfs , aufs (beide sind externe Patches für den Kernel) oder unionfsfuse / funionfs (verwendet FUSE) und erstellen Sie union, indem Sie external / als RO und internes Dateisystem markieren (als tmpfs / ramfs / zusätzliche Partition bereitgestellt, die jedes Mal bereinigt wird).

Alternativ können Sie Dateisystem oder LVM mit Snapshots verwenden. Dann werden Änderungen geschrieben, aber Sie können Snapshots bei jedem Start bereinigen.


oder man könnte die Seeding-Funktion von btrfs verwenden ( siehe < en.wikipedia.org/wiki/Btrfs#cite_ref-16> ) - um ein Lese- / Schreib-fs mit einer schreibgeschützten Basis zu erstellen. Wenn die Basis fs btrfs ist ...
imz - Ivan Zakharyaschev

5

Es gibt verschiedene Möglichkeiten, dies zu tun. Die einfachste Einrichtung würde ein Union-Dateisystem verwenden, das eine einzelne Ansicht von zwei Verzeichnisbäumen A und B darstellt, sodass alle Änderungen in B gespeichert werden. In Ihrem Fall wäre A ein NFS / Samba / sshfs /… Mount-Punkt. und B wäre ein anfangs leeres Verzeichnis in einem tmpfs-Dateisystem.

Linux hat kein Kernel-Union-Dateisystem, aber es gibt mehrere FUSE- Implementierungen: funionfs , Unionfs-fuse .


3

Wenn / in den Arbeitsspeicher des lokalen Computers passt und genügend Platz für die Ausführung von Anwendungen lässt, besteht die Grundidee wahrscheinlich darin, ein minimales Linux-System auf dem Zielcomputer zu starten und dann automatisch eine virtuelle RAMFS-Festplatte zu erstellen, / von Remote in diesen zu kopieren und chroot in dieses neue /. Wenn der Arbeitsspeicher nicht ausreicht, können Sie grundsätzlich das gleiche Verfahren anwenden, jedoch keine RAMFs verwenden, sondern eine echte Festplattenpartition, deren Inhalt Sie vor dem Kopieren löschen müssen. Anstatt zu löschen und vollständig zu kopieren, können Sie auch rsync mit entsprechenden Optionen verwenden.


1

Sie können sich für Btrfsdie Copy-on-Write-Funktion (CoW) entscheiden.

Das, wonach Sie suchen, wird im Btrfs-Wiki als Seed-Gerät beschrieben :

Die Grundidee besteht darin, eine Partition mit Originaldaten schreibgeschützt zu machen, als "zusätzliche Ebene darüber hinzuzufügen", eine weitere beschreibbare Partition (Sie können sie jederzeit im RAM erstellen, z. B. auf /dev/shm), und sie zu mounten:

btrfstune -S 1 /dev/RO #make it read-only
mount /dev/RO /mnt/temp
btrfs device add /dev/RW /mnt/temp
umount /mnt/temp

und von diesem Moment an jedes Mal, wenn Sie aufsteigen

mount /dev/RW /mnt/test

Änderungen werden in / dev / RW gespeichert, während / dev / RO unberührt bleibt.

(Beispiele basieren auf denen im Wiki )


0

Dies kann mit dem PXE-Boot sehr einfach erreicht werden. Ich führe ein Live-XBMC-System über PXE TFTP NFS Boot. Änderungen werden mit COW in NFS-Freigabe geschrieben.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.