Montage d'une partition dans un «bac à sable»

9

Je me demande si c'est possible. Je veux configurer un système Linux qui monte /une machine Linux distante /sur la machine locale. Cependant, je veux que toutes les modifications sur la machine locale soient enregistrées dans la mémoire RAM afin qu'elles n'affectent pas la machine distante. Idéalement, les modifications ne seront JAMAIS écrites, de sorte que lorsque je redémarre, il monte à /nouveau la partition d' origine sans tenir compte de toutes les modifications apportées lors de la session précédente.

Est-ce que quelque chose comme ça est possible?

Falmarri
la source
Je n'ai pas essayé de tester les réponses de vos gars, il est donc difficile de choisir 1 pour sélectionner une solution. Donc je vais juste vous voter tous
Falmarri

Réponses:

7

Utilisez unionfs , aufs (les deux sont des correctifs externes pour le noyau) ou unionfsfuse / funionfs (utilise FUSE) et créez l'union en marquant externe / comme RO et système de fichiers interne (monté comme tmpfs / ramfs / partition supplémentaire qui est nettoyée à chaque fois).

Alternativement, vous pouvez utiliser le système de fichiers ou LVM avec des instantanés. Les modifications sont ensuite écrites mais vous pouvez nettoyer les instantanés à chaque démarrage.

Maciej Piechotka
la source
ou on pourrait utiliser la fonction d'amorçage de btrfs (souligné à < en.wikipedia.org/wiki/Btrfs#cite_ref-16> ) - pour amorcer un fs en lecture-écriture avec une base en lecture seule. Si la base fs est btrfs ...
imz - Ivan Zakharyaschev
5

Il y a plusieurs façons de procéder. La configuration la plus simple consisterait à utiliser un système de fichiers union, qui présente une vue unique de deux arborescences de répertoires A et B, de sorte que toutes les modifications soient enregistrées dans B. Dans votre cas, A serait un point de montage NFS / Samba / sshfs /…, et B serait un répertoire initialement vide sur un système de fichiers tmpfs.

Linux n'a pas de système de fichiers union dans le noyau, mais il existe plusieurs implémentations FUSE : funionfs , Unionfs-fuse .

Gilles 'SO- arrête d'être méchant'
la source
3

Si / s'intègre dans la RAM de la machine locale et laisse suffisamment de place pour exécuter des applications, l'idée de base serait probablement de démarrer un système Linux minimal sur la machine cible, puis de créer automatiquement un disque virtuel ramfs, de copier / de la télécommande vers celle-ci et chroot dans ce nouveau /. Si la RAM n'est pas suffisante, vous pouvez essentiellement suivre la même procédure mais pas en utilisant ramfs mais une vraie partition de disque dont vous devez effacer le contenu avant de copier. Au lieu d'effacer et de copier intégralement, vous pouvez également utiliser rsync avec les options appropriées.

fschmitt
la source
1

Vous pouvez opter pour Btrfset c'est la fonction de copie sur écriture (CoW).

Celui que vous cherchez peut-être est décrit sur Btrfs Wiki comme Seed-device :

L'idée de base est de rendre la partition avec les données originales en lecture seule, plutôt que "d'ajouter une couche supplémentaire sur le dessus", qui est une autre partition inscriptible (vous pouvez toujours la faire en RAM, par exemple sur /dev/shm) et la monter:

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

et à partir de ce moment, chaque fois que vous montez

mount /dev/RW /mnt/test

les modifications sont enregistrées sur / dev / RW, tandis que / dev / RO reste inchangé.

(les exemples sont basés sur ceux du wiki )

Grzegorz Wierzowiecki
la source
0

Cela peut être archiev très facile avec le démarrage PXE. je cours un système xbmc en direct sur le démarrage de pxe tftp nfs. les modifications sont écrites avec le partage COW vers NFS.


la source