Встановлення перегородки в "пісочницю"


9

Мені цікаво, чи це можливо. Я хочу створити систему Linux, яка монтує /віддалену машину Linux /на локальній машині. Однак я хочу, щоб усі зміни на локальній машині були збережені в оперативному режимі, щоб вони не впливали на віддалену машину. В ідеалі зміни НІКОЛИ не писатимуться, так що коли я перезавантажуюсь, він змонтує оригінальний /розділ знову не зважаючи на всі зміни, внесені під час попереднього сеансу.

Чи можливо щось подібне?


Мені не доводилося тестувати відповіді ваших хлопців, тому важко вибрати 1, щоб вибрати як рішення. Тож я просто підтримаю всіх вас
Falmarri

Відповіді:


7

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

Крім того, ви можете використовувати файлову систему або LVM зі знімками. Потім вводяться зміни, але ви можете очищати знімки при кожному завантаженні.


або можна скористатися функцією висіву btrfs (вказано на < en.wikipedia.org/wiki/Btrfs#cite_ref-16> ) - для виведення fs для читання-запису fs з базою лише для читання. Якщо базовим fs є btrfs ...
imz - Іван Захарящев

5

Існує кілька способів зробити це. Найпростіше налаштувати використовувати файлову систему об'єднання, яка представляє єдиний вигляд двох дерев каталогів A і B, так що всі зміни зберігаються в B. У вашому випадку A буде точкою монтажу NFS / Samba / sshfs / ... і B буде спочатку порожнім каталогом у файловій системі tmpfs.

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


3

Якщо / вписується в оперативну пам'ять локальної машини і залишає достатньо місця для запуску програм, основною ідеєю, ймовірно, буде завантаження мінімальної системи Linux на цільовій машині, а потім автоматично створення віртуального диска ramfs, копіювання / з віддаленого в нього та chroot в цю нову /. Якщо оперативної пам’яті недостатньо, ви в основному можете дотримуватися тієї ж процедури, але не використовуючи ramfs, а реальний розділ диска, вміст якого потрібно очистити перед копіюванням. Замість очищення та повної копії ви також можете використовувати rsync з відповідними параметрами.


1

Можна скористатися Btrfsфункцією Copy-on-Write (CoW).

Той, який ви можете шукати, описаний на Btrfs Wiki як насіннєвий пристрій :

Основна ідея полягає в тому, щоб зробити розділ з оригінальними даними лише для читання, ніж "додавати додатковий шар поверх нього", який є ще одним розділом для запису (ви завжди можете зробити його в ОЗУ, наприклад, на /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. зміни записуються разом із COW на частку NFS.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.