![限制/禁用虚拟机中的 Linux 磁盘缓冲](https://linux22.com/image/62791/%E9%99%90%E5%88%B6%2F%E7%A6%81%E7%94%A8%E8%99%9A%E6%8B%9F%E6%9C%BA%E4%B8%AD%E7%9A%84%20Linux%20%E7%A3%81%E7%9B%98%E7%BC%93%E5%86%B2.png)
有没有一种智能方法可以限制 Linux 系统中的缓冲/缓存并使其或多或少地连续写入磁盘?
我这么问是因为我在一台物理 Linux 机器上运行多个 Linux 虚拟机。 Linux 的默认缓冲/缓存机制导致所有这些虚拟机都将写入缓存到磁盘,直到它们决定清除所有内容为止。当多个虚拟盒子同时开始刷新其缓冲区时,就会出现问题。此时物理机上的硬盘变得过度充电,我面临着物理机上 90% 的 wa(等待 I/O)CPU 时间被浪费。所有虚拟机都会冻结几秒钟,导致某些 TCP/IP 连接中断等。
我想禁用虚拟子系统中的缓存并在物理系统中执行所有缓存,因为它正在访问物理磁盘。有什么提示吗?
添加:虚拟机的磁盘是通过浏览工作站菜单创建的,通常接受(如果我没记错的话)默认值。磁盘映像存储在 XXX-s000.vmdk 到 XXX-s100.vmdk 等文件中。它们在虚拟 Linux 盒子中被视为 scsi 驱动器。
我使用 vmware station 10 进行虚拟化。据我所知,这些机器上没有安装 vmware guest 工具。
答案1
首先,在(所有)来宾上安装 VMware 来宾工具。
这将使 VMware 在这些来宾磁盘、NIC、屏幕和主机之间实现更高效的接口。因此,您可能会发现争用问题大大减少。
在 Debian 风格的发行版上,软件包名称是open-vm-tools
, 看https://github.com/vmware/open-vm-tools