Монтирование раздела в «песочницу»

9

Мне интересно, возможно ли это? Я хочу настроить систему Linux, которая монтирует /удаленную машину Linux /на локальном компьютере. Однако я хочу, чтобы все изменения на локальном компьютере были сохранены в оперативной памяти, чтобы они не влияли на удаленный компьютер. В идеале изменения НИКОГДА не будут записаны, поэтому, когда я перезагружаюсь, он /снова монтирует исходный раздел, игнорируя все изменения, сделанные во время предыдущего сеанса.

Возможно ли что-то подобное?

Falmarri
источник
Я не удосужился проверить ответы ваших парней, поэтому сложно выбрать 1, чтобы выбрать решение. Так что я просто проголосую за всех вас
Фалмарри

Ответы:

7

Используйте unionfs , aufs (оба являются внешними исправлениями для ядра) или unionfsfuse / funionfs (использует FUSE) и создайте объединение, пометив external / как RO и внутреннюю файловую систему (смонтированную как tmpfs / ramfs / дополнительный раздел, который очищается каждый раз).

В качестве альтернативы вы можете использовать файловую систему или LVM со снимками. Затем изменения записываются, но вы можете очистить снимки при каждой загрузке.

Мацей Печотка
источник
или можно использовать функцию заполнения в btrfs ( указанную на < en.wikipedia.org/wiki/Btrfs#cite_ref-16> ) - для заполнения файлов для чтения и записи с базой только для чтения. Если база фс это btrfs ...
imz - Иван Захарящев
5

Есть несколько способов сделать это. В простейшей настройке будет использоваться объединенная файловая система, которая представляет одно представление двух деревьев каталогов A и B, так что все изменения сохраняются в B. В вашем случае A будет точкой монтирования NFS / Samba / sshfs /…, и B будет изначально пустым каталогом в файловой системе tmpfs.

Linux не имеет встроенной файловой системы объединения, но есть несколько реализаций FUSE : funionfs , Unionfs-fuse .

Жиль "ТАК - перестань быть злым"
источник
3

Если / помещается в ОЗУ локальной машины и оставляет достаточно места для запуска приложений, основная идея, вероятно, заключается в том, чтобы загрузить минимальную систему Linux на целевой машине, а затем автоматически создать виртуальный диск ramfs, скопировать / с удаленного компьютера на него и chroot в этот новый /. Если оперативной памяти недостаточно, вы можете в основном следовать той же процедуре, но не с использованием ramfs, а с реальным разделом диска, содержимое которого вы должны очистить перед копированием. Вместо очистки и полного копирования вы также можете использовать rsync с соответствующими параметрами.

fschmitt
источник
1

Вы можете пойти, Btrfsи это функция копирования при записи (CoW).

Тот, который вы, возможно, ищете, описан в Btrfs Wiki как Seed-устройство :

Основная идея состоит в том, чтобы создать раздел с исходными данными только для чтения, чем «добавить дополнительный слой поверх него», который является другим записываемым разделом (вы всегда можете сделать это в ОЗУ, например, на /dev/shm) и смонтировать его:

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

и с этого момента каждый раз, когда вы монтируете

mount /dev/RW /mnt/test

изменения сохраняются в / dev / RW, а / dev / RO остается без изменений.

(примеры основаны на вики )

Гжегож Вежовецкий
источник
0

Это может быть очень легко с загрузкой PXE. я использую живую систему xbmc через pxe tftp nfs boot. изменения записываются с COW на NFS share.


источник