如何允许在只读 NFS 分区上进行本地写入

如何允许在只读 NFS 分区上进行本地写入

我按照说明在 Ubuntu 12.04 上创建了自己的 PXE/NFS 网络启动服务器这里/etc/exports。如果我在服务器端像这样 更改文件,我可以在客户端写入文件:

/srv/ubuntulivecd/        *(rw,async,no_root_squash,no_subtree_check) 

我只想在本地更改文件。我的意思是,如果我在本地写入文件,这不应该更改 NFS 分区上的文件。如果我将rw(read-write)选项更改为ro(read-only),由于权限问题,我无法更改文件(如预期的那样)。有没有办法在客户端本地或临时更改文件(重启或关闭电源后必须删除所有文件)?

答案1

在客户端中,您可以将文件复制到临时文件(与 Live CD 启动时相同)。您需要设置联盟FS 型(奥夫斯)在 NFS 上的 RO 文件系统和临时文件本地机器上的 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

注意目录1=rwdir2=ro. 现在你可以了$ rm dir_union/subdir/file2,应该是反渗透,但在 union 中你可以修改它,并且不会出现错误。实际上,只有差异被映射。如果你这样做

$ 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 中 CD-rom 的所有原始文件。如果您修改它们,差异将被映射,文件可以在 /mnt/union 中更改,但 /mnt/cdrom 中的原始文件保持不变。

现在,作为练习,对 NFS 挂载进行操作;)

干杯

相关内容