Я создал свой собственный сетевой загрузочный сервер PXE / NFS на Ubuntu 12.04, как описано Вот. Я могу писать в файлы на стороне клиента, если изменю /etc/exports
файл, подобный этому на стороне сервера:
/srv/ubuntulivecd/ *(rw,async,no_root_squash,no_subtree_check)
Я хочу менять файлы только локально. Я имею в виду, что это не должно изменять файл в разделе NFS, если я пишу в файл локально. Если я изменю rw(read-write)
возможность ro(read-only)
, Я не могу изменять файлы (как и ожидалось) из-за разрешений. Есть ли способ изменить файлы локально или временно (все файлы должны быть удалены после перезагрузки или выключения) на стороне клиента?
В клиенте вы можете скопировать файлы в tmpfs (туда же загружается live-cd). Вам нужно установить союз тип FS (aufs) между файловой системой RO на NFS и tmpfs Файловая система RW на вашем локальном компьютере.
example for tmps:
$ mount -t tmpfs no_device /tmp
теперь все, что вы делаете на / tmp, будет работать на ramfs
example for union:
$ ls dir1
subdir
$ ls dir1/subdir
file1
$ ls dir2
subdir
$ ls dir2/subdir
file2
$ mkdir dir_union
$ mount -t aufs -o dirs=dir1=rw:dir2=ro no_device dir_union
$ ls dir_union
subdir
$ ls dir_union/subdir
file1 file2
обратите внимание на dir1 = rw и dir2 = ro. Теперь вы можете $ rm dir_union/subdir/file2
, который должен быть ро, но в объединении вы можете изменить его, и вы не получите ошибки. Фактически отображаются только различия. Если вы это сделаете
$ ls -la dir_union
file1 .wh.file2
где .wh.file2 - это файл, отображающий различия.
То же и с CD-ROM:
$ mount -o ro /dev/cdrom /mnt/cdrom
mount -t tmpfs no_device /mnt/rw
mount -t aufs -o dirs=/mnt/rw=rw:/mnt/cdrom=ro no_device /mnt/union
Здесь вы увидите все исходные файлы компакт-диска в / mnt / union. Если вы измените их, различия будут сопоставлены, файлы можно будет изменить в / mnt / union, но исходные файлы в / mnt / cdrom останутся без изменений.
Теперь в качестве упражнения сделаем это для монтирования NFS;)
ура