VMware / ESX中的Linux虚拟机是否有交换分区?

在VMware ESX设置上,这些选项有什么不同?

  • 具有1GB RAM和1GB交换分区的Linux VM,VM使用1.5 GB RAM
  • 1GB RAM的Linux VM,没有交换分区,虚拟机使用1.5 GB RAM

我的意思是,在这两种情况下,互换正在使用;

  • 在第一个交换是完成到Linux交换分区
  • 在第二种情况下,VMware将交换512MB到VMware存储池。

那么给Linux VM的交换分区有什么意义?

忽略人们正在处理操作系统特定的原因这一事实,我有两个原因,不交换分区/文件是一个坏主意。

  1. 如果将1.5 GB的RAM分配给没有空间文件/分区的VM,并且要使用1.5 GB + 1 MB,则会报告内存不足错误。 借助交换空间,它将能够将数据从活动内存中交换到磁盘上。
  2. 客户操作系统的内存pipe理比主机做得好得多。 这就是为什么像内存膨胀这样的技术存在的原因,因为主机可以对现在不需要什么内存做出有根据的猜测,但是客户知道的是更智能的级别(这会让操作系统的内存不能被交换出去,从而可能导致性能下降)。

是。 这是Unix的方式。

Unix(甚至Linux) 希望能够交换。
当系统不能交换时(或者因为没有交换分区时configuration错误,或者交换空间已满),就会发生坏事 。 在Linux中,这些糟糕的事情之一就是内存不足的杀手,这将使刀片陷入其认为使用最多RAM(数据库服务器是最喜欢的目标)的程序后面。

你有/proc/sys/vm/overcommit_memory设置为? 从内核文档:

 0 - Heuristic overcommit handling. Obvious overcommits of address space are refused. Used for a typical system. It ensures a seriously wild allocation fails while allowing overcommit to reduce swap usage. root is allowed to allocate slightly more memory in this mode. This is the default. 1 - Always overcommit. Appropriate for some scientific applications. 2 - Don't overcommit. The total address space commit for the system is not permitted to exceed swap + a configurable percentage (default is 50) of physical RAM. Depending on the percentage you use, in most situations this means a process will not be killed while accessing pages but will receive errors on memory allocation as appropriate. 

因此,如果您使用1,则没有区别。 如果你使用2和没有Linux交换文件,那么没有进程将能够分配512M的(虚拟)内存。 结果不清楚为0。

编辑:从http://utcc.utoronto.ca/~cks/space/blog/linux/LinuxVMOvercommit这是如何0的作品:

启发式overcommit尝试计算出系统可以给你多less内存,如果它回收所有可能的内存,没有其他进程使用比当前更多的内存; 如果你要求超过这个,你的分配将被拒绝。 具体来说,理论上的“空闲内存”数量是通过将可用交换空间,空闲RAM(如果不是root的话,less于1/32nd)和统一缓冲区高速caching使用的所有空间以及标记为可回收的内核数据(less一些保留页面)。

所以它在计算中也使用交换。 一般来说,我会遵循RHEL的build议:

 M = Amount of RAM in GB, and S = Amount of swap in GB, then If M < 2 S = M *2 Else S = M + 2 

交换分区可能会更快,特别是在根磁盘已满的情况下,并且不能在没有碎片的情况下创build交换文件,更不用说可能由文件系统创build的开销,并且如果适用的话, LVM。

但是,如果你在磁盘上保留了33%的内存需求,那么两台机器的性能都会受到影响。

请参阅以下链接 – https://help.ubuntu.com/community/SwapFaq

基本上,除非你需要hibernate或者使用更多的内存,而不是分配给虚拟机,否则交换分区没有明显的优势。

多年来,我在任何一台Linux机器上都没有使用交换分区/文件。

交换的明显优势是,当你的机器崩溃时,你仍然可以创build一个崩溃转储。 纠正我,如果我错了,但afaik这是不可能的,没有交换。 这当然不是VMWare特有的,而是适用于任何地方。 我觉得这很重要。