6.2. 创建交换空间

交换文件是一个普通文件;它对于内核而言没有任何特殊之处。内核唯一关心的是它没有空洞,并且已准备好使用 mkswap 进行格式化。但是,它必须位于本地磁盘上;由于实现原因,它不能位于通过 NFS 挂载的文件系统中。

关于空洞的这点很重要。交换文件预留了磁盘空间,以便内核可以快速换出页面,而无需执行在为文件分配磁盘扇区时所需的所有操作。内核仅使用已分配给文件的任何扇区。因为文件中的空洞意味着没有分配磁盘扇区(对于文件中的那个位置),所以内核尝试使用它们是不好的。

创建没有空洞的交换文件的一个好方法是通过以下命令

	$ dd if=/dev/zero of=/extra-swap bs=1024 
	count=1024
	1024+0 records in
	1024+0 records out
	$
	
其中/extra-swap是交换文件的名称,大小在count=之后给出。大小最好是 4 的倍数,因为内核写入 内存页,其大小为 4 KB。如果大小不是 4 的倍数,则最后几 KB 可能未使用。

交换分区也以任何方式都不是特殊的。您创建它就像创建任何其他分区一样;唯一的区别是它被用作原始分区,也就是说,它根本不包含任何文件系统。最好将交换分区标记为类型 82(Linux 交换分区);即使对于内核来说不是绝对必要的,但这也会使分区列表更清晰。

在您创建了交换文件或交换分区之后,您需要在其开头写入签名;这包含一些管理信息,并由内核使用。执行此操作的命令是 mkswap,用法如下

	$ mkswap /extra-swap 1024
	Setting up swapspace, size = 1044480 
	bytes
	$
	
请注意,交换空间仍然没有被使用:它存在,但内核不使用它来提供虚拟内存。

使用 mkswap 时应非常小心,因为它不检查文件或分区是否用于其他用途。您可以使用 mkswap 轻松覆盖重要的文件和分区! 幸运的是,您应该只需要在安装系统时使用 mkswap

Linux 内存管理器将每个交换空间的大小限制为 2 GB。但是,您可以同时使用最多 8 个交换空间,总共 16GB。