多个交换文件的目的是什么


28

在安装大多数(如果不是全部)发行版的Linux期间,默认情况下会将硬盘驱动器分区为包括交换分区。

可以通过以下方式更改此行为 swapon -p priority

根据手册页,优先级是:

PRIORITY
Each swap area has a priority, either high or low. The default priority is 
low. Within the low-priority areas, newer areas are even lower priority 
than older areas.
All priorities set with swapflags are high-priority, higher than default. 
They may have any non-negative value chosen by the caller. Higher numbers 
mean higher priority.

Swap pages are allocated from areas in priority order, highest priority 
first. For areas with different priorities, a higher-priority area is 
exhausted before using a lower-priority area. If two or more areas have the 
same priority, and it is the highest priority available, pages are 
allocated on a round-robin basis between them.

As of Linux 1.3.6, the kernel usually follows these rules, but there are 
exceptions

为什么您需要多个交换文件?
系统管理员配置多个交换是否是惯例?

Answers:


47

有多个交换区域的理由太多(它们不必是文件),即使您只有一个主轴也是如此。

20-20年后:您部署了具有单个交换区域的计算机,然后最终意识到这还不够。您不能随意重新部署计算机,但是可以重新创建一个交换区域(可能是一个文件),直到重新分区分区成为可能为止。

调整或移动交换区域的大小您不能调整交换区域的大小(如Evan Teitelman所述)。而且,您不能只是swapoff创建一个新的交换区,然后swapon再创建一个新的交换区,除非您有足够的RAM:swapoff要在放弃交换区之前将所有交换出的页面移至RAM。因此,您需要创建一个临时交换区,swapoff即原始交换区,等到所有页面都从旧交换区移至临时交换区后,再调整原始交换分区的大小mkswap,然后再swapon调整大小,再调整swapoff临时分区的大小。交换的页面从临时交换区域复制到调整大小的页面,您已完成。如果要移动交换区域,则甚至不需要临时区域。mkswap新的swapon,然后swapoff 旧的,一切都被感动了。

疯狂的快速交换:现代磁盘采用区域位记录。磁盘的第一个区域是最快的。您可能需要测量磁盘,并创建一个分区,使其完全覆盖驱动器的第一个最快区域。这可能小于您预期的交换大小。因此,您可以使用相同的技术在多个磁盘上添加多个分区。

疯狂的快速交换,其后遗症:或者,一旦您知道磁盘最快的区域在哪里,就可以在第一个区域中创建高优先级交换区域,在第二个区域中创建较低优先级的交换区域,等等。这样交换系统会自动知道为了在所有快速磁盘区域上实现负载平衡,请选择速度更快的区域,并在需要时将速度较慢的区域用作溢出区域。

对称负载平衡:在具有许多主轴(如服务器)的构建良好的系统上,我喜欢让多个交换分区占据每个磁盘的开头(以利用区域位记录)。它们都具有相同的优先级,因此内核将对交换进行负载平衡。一个心轴可能会为您提供100 MB / s,但是在所有心轴上交换可能会给您带来数倍的速度。(天真的)

瓶颈感知的负载平衡:但是,实际上,还有其他瓶颈。因此,例如,一个16磁盘服务器可能具有四个6 Gbps SATA端口,每个端口都有一个四端口乘法器和四个共享带宽的磁盘。如果您对此有所了解,则可以组织交换空间,以使端口1-4上的磁盘1具有最高优先级,端口1-4上的第二个磁盘具有第二高优先级,依此类推。这将负载平衡交换,但不会使交换不堪重负。端口倍增器。

在性能不同的设备之间交换:(如Luke所述),如果您的系统不是全新的服务器,并且经过多年的有机发展,则其块设备可能会比其他设备快得多。您需要先交换到最快的设备,然后再交换到下一个最快的设备,依此类推。

大小方面的考虑:(David Kohen提供)可能将所有交换都放在一个驱动器上,使该驱动器上有几场演出(这听起来像是2001年的情况,但是有很多旧的或嵌入式设备可能会成为问题)。将其拆分到所有驱动器上,除了上述所有其他优点之外,您还可以提高每个驱动器的磁盘空间使用率。每个主轴损失几千个演出是一回事,而从一个磁盘上丢失三百个演出是另一回事。

紧急情况:您正好有96个小时提交您的博士学位论文,而您的上一个实验(可能会给您带来诺贝尔奖以及您名字下的时髦大写字母)将以惊人的速度吸引人们的记忆。您快要换掉了。您创建的交换文件的优先级低于主交换设备的优先级-内核会将其用作溢出交换空间。您甚至可以安装swapd来自动为您执行此操作,因此对于那些庞大的emacsLaTeX运行,您还将有足够的交换空间。

跨不同的媒体交换: Linux无法交换到角色设备,但是物理和虚拟的交换介质有很多:SSD(注意:您可能不想交换SSD),数十种令人震惊的不同类型的硬盘磁盘,软盘(是的,您可以在软盘上交换-您始终可以使用Unix进行射击),DRBD卷,iSCSI,LVM卷,LUKS加密分区等(包括这些的超现实的,令人难以置信的分层组合)在IEEE802.3ad聚合以太网上通过iSCSI在iSCSI上的并行端口ZIP驱动器上的LVM上的LUKS上交​​换吗?这些是利基场景,旨在支持利基需求。


谢谢,我对区域位记录不熟悉。我很好奇我会把交换分区移到
盘口

1
我要添加一个历史原因,在过去,使用一个磁盘作为交换设备有时无效,因为它占用了太多空间,并使其余磁盘变得无用或不太有用,并在多个设备之间分配了交换空间。在较大的交换空间和磁盘上的可用连续空间之间提供了折衷方案。
Didi Kohen

情况仍然如此。另外,您可能希望交换只占据磁盘最快的区域。每个主轴只有这么多的空间可玩。尽管历史上并非如此,但分区的硬盘驱动器是“新的”东西。(我的“历史性”版本是用文字来衡量记忆)
Alexios

为“您始终可以使用Unix射杀自己”而+1 :-)
DUzun

3

多速磁盘驱动器。您可以设置先使用较快的,然后再使用较慢的(如果失败)。


3

您不能扩展交换文件(至少据我所知)或在使用分区时交换分区。如果您即将充满可用的交换区域,则可能必须创建其他交换文件。

另外,如果系统需要4GB的交换空间并具有两个2GB的存储单元,则它必须至少使用两个交换区域。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.