Montare una partizione in un 'sandbox'


9

Mi chiedo se questo sia possibile. Voglio installare un sistema linux che monta /la macchina linux remota /sulla macchina locale. Tuttavia, voglio che tutte le modifiche sul computer locale vengano salvate su RAM in modo da non influire sul computer remoto. Idealmente le modifiche non verrebbero MAI scritte, in modo tale che al riavvio monti /nuovamente la partizione originale ignorando tutte le modifiche apportate durante la sessione precedente.

È possibile qualcosa del genere?


Non sono andato in giro per testare nessuna delle risposte dei tuoi ragazzi, quindi è difficile sceglierne 1 da selezionare come soluzione. Quindi
voterò

Risposte:


7

Usa unionfs , aufs (entrambi sono patch esterne per il kernel) o unionfsfuse / funionfs (usa FUSE) e crea unione contrassegnando esterno / come RO e filesystem interno (montato come tmpfs / ramfs / partizione aggiuntiva che viene pulita ogni volta).

In alternativa puoi usare filesystem o LVM con istantanee. Quindi vengono scritte le modifiche ma è possibile pulire le istantanee ad ogni avvio.


oppure si potrebbe fare uso della funzione seeding di btrfs (sottolineato in < en.wikipedia.org/wiki/Btrfs#cite_ref-16> ) - per seminare un file fs di lettura-scrittura con una base di sola lettura. Se la base fs è btrfs ...
imz - Ivan Zakharyaschev,

5

Esistono diversi modi per farlo. L'impostazione più semplice userebbe un filesystem union, che presenta una vista singola di due alberi di directory A e B, in modo tale che tutte le modifiche vengano salvate in B. Nel tuo caso, A sarebbe un punto di mount NFS / Samba / sshfs / ..., e B sarebbe una directory inizialmente vuota su un filesystem tmpfs.

Linux non ha un filesystem union nel kernel, ma ci sono diverse implementazioni di FUSE : funionfs , Unionfs-fuse .


3

Se / si inserisce nella RAM della macchina locale e lascia abbastanza spazio per le applicazioni in esecuzione, l'idea di base sarebbe probabilmente quella di avviare un sistema Linux minimale sulla macchina di destinazione e quindi creare automaticamente un disco virtuale ramfs, copiare / da remoto in esso e chroot in questo nuovo /. Se la RAM non è sufficiente, puoi sostanzialmente seguire la stessa procedura ma non usando ramfs ma una vera partizione del disco di cui devi cancellare il contenuto prima di copiarlo. Invece di cancellare e copia completa puoi anche usare rsync con le opzioni appropriate.


1

Puoi Btrfsprovare ed è la funzione Copy-on-Write (CoW).

Quello che potresti cercare è descritto nel Wiki di Btrfs come dispositivo seed :

L'idea di base è quella di creare una partizione con dati originali di sola lettura, piuttosto che "aggiungere un ulteriore livello sopra di essa", che è un'altra partizione scrivibile (puoi sempre crearla nella RAM, ad esempio su /dev/shm) e montarla:

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

e da quel momento, ogni volta che sali

mount /dev/RW /mnt/test

le modifiche vengono salvate su / dev / RW, mentre / dev / RO rimane invariato.

(gli esempi sono basati su quelli nel wiki )


0

Questo può essere molto semplice con l'avvio PXE. sto eseguendo un sistema live xbmc tramite l'avvio pxe tftp nfs. le modifiche vengono scritte con la condivisione COW in NFS.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.