我正在寻找一种解决方案,允许我在本地虚拟机中访问生产环境中的任何文件以进行测试。两个系统都运行 Ubuntu 10.04 lts。
目前的解决方案是 cron 和 rsync 的组合。这意味着我们必须定期将每个生产文件传输到测试环境。缺点是传输这些文件需要时间,并且会占用大量硬盘容量。我还应该补充一点,大多数实时文件在测试期间都不需要,但没有明确的模式来排除文件。
另一个解决方案是使用 sshfs 之类的 ssh 挂载。但这不允许我们在不更改实时系统文件的情况下在本地测试机器上创建文件。
有没有类似于 ssh mount 的解决方案可以让我拉文件从点播直播系统无需推动改回实时系统?
更新
cjc/Zerodache 的解决方案正是我所需要的:
apt-get install sshfs
apt-get install unionfs-fuse
cd /root/
mkdir local_delta
mkdir live_system
mkdir test_system
sshfs [email protected]:/www/ /root/live_system
unionfs-fuse -o cow /root/local_delta=RW:/root/live_system=RO /root/test_system
现在/root/test_system
显示实时站点的所有文件。test_system
文件夹中创建的文件仅在中创建,local_delta
而不在服务器上创建。此外,文件修改和删除仅写入第一个分支,local_delta
因为第二个分支live_system
设置为 RO(只读)并且-o cow
设置了选项。
答案1
由于您可以从生产设置远程安装文件系统,因此我的建议(cjc 也在评论中提到了这一点)是使用 unionfs 之类的东西。 Unionfs 是 livecd/liveusb 环境中经常使用的工具,用于向系统提供只读文件系统与读写 ramdisk 合并,这样除非文件存在于读写区域中,否则读取操作都来自只读文件系统。
答案2
如果您使用类似 vCenter Orchestrator 的东西,并在 vSphere 上运行它,那么您可以使用链接克隆来实现这一点。这将创建一个新的虚拟机,其中包含实时服务器的基本磁盘和包含所有更改的增量磁盘。将消耗的硬盘空间仅等于您对克隆所做的更改。然后,当您完成后,它可以被丢弃,直到您需要启动新的链接克隆。
因为听起来你在服务器的裸机上,而你的虚拟机是你的桌面本地的虚拟机,所以你必须坚持你正在做的事情。