对于基于容器的虚拟化的OpenVZ,似乎主机和所有客户共享文件系统caching。 在谈论虚拟化时,这听起来似是而非,但这实际上是OpenVZ的一个特性。
这也是有道理的。 由于只有一个内核正在运行,因此可以通过在内存中共享文件系统caching的相同页面来获益。 虽然这听起来有益,但我认为这里的一个设置实际上受到它的影响。 原因如下:我的机器实际上并没有在磁盘上共享任何文件,所以我不能从中受益。
几个OpenVZ机器正在使用MyISAM表运行MySQL。 与InnoDB的缓冲池不同,MyISAM依靠系统的文件系统caching来caching数据文件。 还有一些虚拟机已知可以在主机的同一文件系统上执行大量的I / O操作。 出于testing目的,我在一台机器上的某个大型数据库上运行了cat *.MYD > /dev/null ,我看到另一个文件系统caching正在降低,由htop监控。 这基本上刷新了客户端(FIFO)中所有有用的文件系统caching,因此它刷新了客户端中的MySQLcaching。 在我的分析中,我直到这里吗?
现在用户抱怨MySQL很慢。 它是。 一些简单的SELECT查询需要几秒钟的时间磁盘I / O被其他机器大量使用。
所以,简单地说:
有没有办法避免基于容器的虚拟化中的其他虚拟机擦除文件系统caching?
而不是迁移到KVM或InnoDB(见下文),可能会有一个configuration选项,我错过了。
一些想法:
man vzctl ) 如果没有,我想我的select是:
balloon驱动程序。 系统软件:Proxmox(现在1.9,可升级到2.x)。 一个大的LV分配给虚拟机。
除了你已经有的想法,你可以添加更多的内存,虽然这似乎是一个昂贵的短期创可贴。
长期你最好的select可能是从OpenVZ转移。