Memasang partisi ke 'kotak pasir'

9

Saya bertanya-tanya apakah ini mungkin. Saya ingin mengatur sistem linux yang memasang /mesin linux jarak jauh ke /mesin lokal. Namun, saya ingin semua perubahan pada mesin lokal disimpan ke ram sehingga tidak mempengaruhi mesin jarak jauh. Idealnya perubahan tidak akan pernah ditulis, sehingga ketika saya reboot, itu me-mount /partisi asli lagi mengabaikan semua perubahan yang dibuat selama sesi sebelumnya.

Apakah hal seperti itu mungkin?

Falmarri
sumber
Saya belum sempat menguji jawaban kalian jadi sulit untuk memilih 1 untuk dipilih sebagai solusi. Jadi saya hanya akan mendukung Anda semua
Falmarri

Jawaban:

7

Gunakan unionfs , aufs (keduanya merupakan tambalan eksternal untuk kernel) atau unionfsfuse / funionfs (menggunakan FUSE) dan ciptakan penyatuan dengan menandai eksternal / sebagai RO dan sistem file internal (dipasang sebagai tmpfs / ramfs / partisi tambahan yang dibersihkan setiap kali).

Atau Anda dapat menggunakan filesystem atau LVM dengan snapshot. Kemudian perubahan ditulis tetapi Anda dapat membersihkan foto di setiap boot.

Maciej Piechotka
sumber
atau seseorang dapat menggunakan fitur seeding btrfs (ditunjukkan pada < en.wikipedia.org/wiki/Btrfs#cite_ref-16> ) - untuk menaburkan fs read-write dengan basis read-only. Jika basis fs adalah btrfs ...
imz - Ivan Zakharyaschev
5

Ada beberapa cara untuk melakukannya. Pengaturan termudah akan menggunakan sistem file gabungan, yang menyajikan tampilan tunggal dari dua pohon direktori A dan B, sehingga semua perubahan disimpan ke B. Dalam kasus Anda, A akan menjadi titik mount NFS / Samba / sshfs /… mount, dan B akan menjadi direktori yang awalnya kosong pada sistem file tmpfs.

Linux tidak memiliki filesystem in-kernel union, tetapi ada beberapa implementasi FUSE : funionfs , Unionfs-fuse .

Gilles 'SANGAT berhenti menjadi jahat'
sumber
3

Jika / cocok dengan RAM mesin lokal dan menyisakan ruang yang cukup untuk menjalankan aplikasi, ide dasarnya mungkin akan mem-boot sistem Linux minimal pada mesin target dan kemudian secara otomatis membuat ramfs virtual disk, menyalin / dari jarak jauh ke dalamnya dan chroot ke ini baru /. Jika RAM tidak mencukupi, pada dasarnya Anda dapat mengikuti prosedur yang sama tetapi tidak menggunakan ramf tetapi partisi disk nyata yang isinya harus Anda hapus sebelum menyalin. Alih-alih menghapus dan menyalin lengkap Anda juga bisa menggunakan rsync dengan opsi yang sesuai.

fschmitt
sumber
1

Anda dapat menggunakan Btrfsfitur Copy-on-Write (CoW).

Yang mungkin Anda cari dijelaskan di Btrfs Wiki sebagai Seed-device :

Ide dasarnya adalah membuat partisi dengan data asli hanya-baca, daripada untuk "menambahkan lapisan tambahan di atasnya", yang merupakan partisi yang dapat ditulisi (Anda selalu dapat membuatnya dalam RAM, mis. Pada /dev/shm) dan pasang:

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

dan sejak saat itu, setiap kali Anda mount

mount /dev/RW /mnt/test

perubahan disimpan pada / dev / RW, sementara / dev / RO tetap tidak tersentuh.

(contoh didasarkan pada yang ada di wiki )

Grzegorz Wierzowiecki
sumber
0

Ini dapat diarsipkan dengan sangat mudah dengan boot PXE. saya menjalankan sistem xbmc langsung di atas pxe tftp nfs boot. perubahan ditulis dengan saham COW ke NFS.


sumber