9. 设置交换空间

9.1. 交换分区

通常,设置交换空间只有两个步骤:创建分区并将其添加到 /etc/fstab。一个典型的 fstab 条目,用于 /dev/hda6 上的交换分区,看起来会像这样

/dev/hda6	swap	swap	defaults	0	0

下次重启时,初始化脚本将自动激活它,无需执行其他操作。

但是,如果您想立即使用它,则需要手动激活它。以 root 身份输入

mkswap -f /dev/hda6
swapon /dev/hda6

9.2. 交换文件

有时您可能会耗尽交换空间,并且重新分区驱动器或添加新驱动器是不切实际的。在这种情况下,您可以使用普通分区中的常规文件。您所要做的就是创建一个所需大小的文件

dd if=/dev/zero of=/var/my_swap bs=1024 count=131072

并激活它

	mkswap -f /var/my_swap
	swapon /var/my_swap

此调用创建一个名为my_swap/var中的文件。它长 128 Mb (128 x 1024 = 131072)。最初,它被零填充。但是,mkswap 将其标记为交换空间,而 swapon 告诉内核开始将其用作交换空间。当您完成操作后,

swapoff /var/my_swap
rm /var/my_swap

9.3. 多个交换区域

同一系统上可以使用多个交换分区。考虑一个 fstab 示例,其中有一个单独的交换分区

/dev/hda5   /        ext3   defaults        1	1
/dev/hda1   /boot    ext2   defaults        1	2
none        /dev/pts devpts gid=5,mode=620  0	0
none        /proc    proc   defaults        0	0
/dev/hda7   /usr     ext3   defaults        1	2
/dev/hda6   swap     swap   defaults        0	0

想象一下用以下三行替换交换分区的条目

/dev/hda6   none    swap    sw,pri=3    0	0
/dev/hdb2   none    swap    sw,pri=2    0	0
/dev/hdc2   none    swap    sw,pri=1    0	0

此配置将导致内核首先使用 /dev/hda6。它被分配了最高的优先级 (pri=3)。最大优先级可以是 32767,最低优先级为 0。如果该空间被耗尽,内核将开始使用 /dev/hdb2,然后是 /dev/hdc2。为什么要这样配置?想象一下,最新的(最快的)驱动器被赋予最高的优先级。这将最大限度地减少随着交换空间使用量增加而造成的速度损失。

可以同时写入所有三个分区。如果每个分区具有相同的优先级,内核将像 RAID 一样写入它们,从而提高相应的速度。

/dev/hda6   none   swap   sw,pri=3   0   0
/dev/hdb2   none   swap   sw,pri=3   0   0
/dev/hdc2   none   swap   sw,pri=3   0   0

请注意,这三个分区位于不同的驱动器上,这在速度提升方面是理想的。