Компания, на которую я раньше работал, имела свой продукт, работающий на SCO. Я делал некоторую отладку о приложениях, становящихся очень медленным на нашем демонстрационном сервере и в то же время был набор клиентов, даваемых демонстрацию/лекцию о предстоящих новых возможностях.
Так, я запустил приложение, которое раньше застревало, сделал мой материал на нем для проверки первопричины, но так как это все еще застряло, я пытался уничтожить его:
pkill -9 mytestapplication
То, что я изучил, было то, что pkill не делает точно того же на SCO, как это делает на Linux =)
... Это в основном уничтожает все, к чему у пользователя есть доступ, и с корнем... это - все =)
Использовать unionfs, aufs (оба - внешние патчи для ядра) или unionfsfuse/funionfs (использует FUSE) и создают объединение путем маркировки внешний / как RO и внутренняя файловая система (смонтированный как tmpfs/ramfs/additional раздел, который убран каждый раз).
Alternativly можно использовать файловую систему или LVM со снимками. Затем изменения записаны, но можно убрать снимки при каждой начальной загрузке.
Существует несколько способов пойти об этом. Самый легкий набор использовал бы файловую систему объединения, которая представляет единственное представление двух деревьев каталогов A и B, такой, что все изменения сохраняются к B. В Вашем случае A был бы NFS/Samba/sshfs / … точка монтирования, и B будет первоначально пустым каталогом в tmpfs файловой системе.
Linux не имеет файловой системы объединения в ядре, но существует несколько реализаций FUSE: funionfs, Unionfs-предохранитель.
Если бы / вписывается в RAM локальной машины и оставляет достаточно комнаты для запущенных приложений, основная идея состояла бы в том, чтобы, вероятно, загрузить минимальную систему Linux на целевой машине и затем автоматически создать ramfs виртуальный диск, копия / от удаленного в нее и chroot в это новое/. Если RAM не достаточна, можно в основном выполнить ту же процедуру, но не использующий ramfs, но реальный раздел диска, содержание которого необходимо очистить перед копированием. Вместо того, чтобы очиститься и полная копия Вы могли также использовать rsync с подходящими вариантами.
Это может быть archiev очень легкий с начальной загрузкой PXE. я выполняю живую xbmc систему по pxe tftp начальная загрузка nfs. изменения записаны с COW в долю NFS.
Можно пойти для Btrfs
и это - функция Copy-on-Write (CoW).
Тот, который Вы могли бы искать, описан на Wiki Btrfs как устройство Семени:
Основная идея состоит в том, чтобы сделать раздел с исходными данными только для чтения, чем к тому, "добавьте дополнительный слой на вершине его", которая является другим записываемым разделом (можно всегда делать его в RAM, например, на /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 остается нетронутым.
(примеры основаны на примерах в Wiki),