fel*_*lix 7 linux virtual-machine linux-kernel
在Linux中,如何将释放的内存页面清零以减小VM快照的大小?
非归零内存存储在快照中,即使该内存已被释放且不再使用.例如,内存页面从文件系统缓存中释放出来
sync && echo 3 > /proc/sys/vm/drop_caches
Run Code Online (Sandbox Code Playgroud)
不必要地存储在快照中,因为它们尚未归零.
更新一个看似有用的非常糟糕的解决方案是在循环中使用malloc + memset内存,直到OOM杀手进入.这将我测试的一个VM快照的大小从大约800MB减少到大约400MB.有更好的解决方案吗?
要减小虚拟机的大小:
登录虚拟机;打开终端并输入
cd /home/
sudo dd if=/dev/zero of=foo bs=4096
sudo rm foo
Run Code Online (Sandbox Code Playgroud)关闭虚拟机,进入VmWare/VmPlayer菜单,进入
vmware -> 虚拟机设置 -> HD -> 实用程序 -> 紧凑
并压缩虚拟机
如果您想进一步减小尺寸,请使用 7-zip。例如,在 Linux 上,您可以键入:
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on archive.7z directory
Run Code Online (Sandbox Code Playgroud)