Montaje de una partición en una 'caja de arena'

9

Me pregunto si esto es posible. Quiero configurar un sistema Linux que monte /la máquina Linux remota /en la máquina local. Sin embargo, quiero que todos los cambios en la máquina local se guarden en la memoria RAM para que no afecte a la máquina remota. Idealmente, los cambios NUNCA se escribirían, de modo que cuando reinicie, /vuelva a montar la partición original sin tener en cuenta todos los cambios realizados durante la sesión anterior.

¿Es posible algo así?

Falmarri
fuente
No he podido probar ninguna de las respuestas de sus muchachos, por lo que es difícil elegir 1 para seleccionar como solución. Así que los
votaré a

Respuestas:

7

Use unionfs , aufs (ambos son parches externos para el núcleo) o unionfsfuse / funionfs (usa FUSE) y cree la unión marcando externo / como RO y sistema de archivos interno (montado como tmpfs / ramfs / partición adicional que se limpia cada vez).

Alternativamente, puede usar el sistema de archivos o LVM con instantáneas. Luego se escriben los cambios, pero puede limpiar las instantáneas en cada arranque.

Maciej Piechotka
fuente
o uno podría hacer uso de la función de inicialización de btrfs (señalado en < en.wikipedia.org/wiki/Btrfs#cite_ref-16> ) - para sembrar un fs de lectura-escritura con una base de solo lectura. Si la base fs es btrfs ...
imz - Ivan Zakharyaschev
5

Hay varias formas de hacerlo. La configuración más sencilla usaría un sistema de archivos de unión, que presenta una vista única de dos árboles de directorio A y B, de modo que todos los cambios se guarden en B. En su caso, A sería un punto de montaje NFS / Samba / sshfs / ... y B sería un directorio inicialmente vacío en un sistema de archivos tmpfs.

Linux no tiene un sistema de archivos de unión en el núcleo, pero hay varias implementaciones de FUSE : funionfs , Unionfs -fuse .

Gilles 'SO- deja de ser malvado'
fuente
3

Si / cabe en la RAM de la máquina local y deja suficiente espacio para ejecutar aplicaciones, la idea básica probablemente sería arrancar un sistema Linux mínimo en la máquina de destino y luego crear automáticamente un disco virtual ramfs, copiar / desde el control remoto y entrar en este nuevo /. Si la RAM no es suficiente, básicamente puede seguir el mismo procedimiento pero no usar ramfs sino una partición de disco real cuyo contenido debe borrar antes de copiar. En lugar de borrar y copiar por completo, también puede usar rsync con las opciones apropiadas.

fschmitt
fuente
1

Puede buscar Btrfsy es la función Copiar en escritura (CoW).

El que podrías estar buscando se describe en Btrfs Wiki como Seed-device :

La idea básica es hacer una partición con datos originales de solo lectura, que "agregar una capa adicional en la parte superior", que es otra partición grabable (siempre se puede hacer en la RAM, por ejemplo, en /dev/shm) y 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

y desde ese momento, cada vez que montas

mount /dev/RW /mnt/test

los cambios se guardan en / dev / RW, mientras que / dev / RO permanece intacto.

(los ejemplos se basan en los de wiki )

Grzegorz Wierzowiecki
fuente
0

Esto puede ser muy fácil con el arranque PXE. Estoy ejecutando un sistema xbmc en vivo sobre el arranque pxe tftp nfs. los cambios se escriben con COW en NFS share.


fuente