通常,设置交换空间只有两个步骤:创建分区并将其添加到 /etc/fstab。一个典型的 fstab 条目,用于 /dev/hda6 上的交换分区,看起来会像这样
/dev/hda6 swap swap defaults 0 0 |
下次重启时,初始化脚本将自动激活它,无需执行其他操作。
但是,如果您想立即使用它,则需要手动激活它。以 root 身份输入
mkswap -f /dev/hda6 swapon /dev/hda6 |
有时您可能会耗尽交换空间,并且重新分区驱动器或添加新驱动器是不切实际的。在这种情况下,您可以使用普通分区中的常规文件。您所要做的就是创建一个所需大小的文件
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 |
同一系统上可以使用多个交换分区。考虑一个 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 |
请注意,这三个分区位于不同的驱动器上,这在速度提升方面是理想的。