1.
建立交换空间
作为交换空间的交换文件实际就是通常的文件,但文件的扇区必须是连续的,也即,文件中必须没有“洞”,另外,交换文件必须保存在本地硬盘上。
由于内核要利用交换空间进行快速的内存页面交换,因此,它不进行任何文件扇区的检查,而认为扇区是连续的。由于这一原因,交换文件不能包含洞。可用下面的命令建立无洞的交换文件:
$ dd if=/dev/zero
of=/extra-swap bs=1024 count=2048
2048+0 records in
2048+0 records out
上面的命令建立了一个名称为 extra-swap,大小为 2048K 字节的交换文件。对 i386 系统而言,由于其页面尺寸为 4K,因此最好建立一个大小为 4K 倍数的交换文件;对 Alpha AXP 系统而言,最好建立大小为 8K 倍数的交换文件。
交换分区和其他分区也没有什么不同,可象建立其他分区一样建立交换分区。但该分区不包含任何文件系统。分区类型对内核来讲并不重要,但最好设置为 Linux Swap 类型(即类型
82)。
建立交换文件或交换分区之后,需要在文件或分区的开头写入签名,写入的签名实际是由内核使用的一些管理信息。写入签名的命令为 mkswap,如下所示:
$ mkswap /extra-swp
2048
Setting up swapspace, size = 2088960 bytes
$
这时,新建立的交换空间尚未开始使用。使用 mkswap 命令时必须小心,因为该命令不会检查文件或分区内容,因此极有可能覆盖有用的信息,或破坏分区上的有效文件系统信息。
Linux 内存管理子系统将每个交换空间的大小限制在
2.
使用交换空间
利用 swapon 命令可将经过初始化的交换空间投入使用。如下所示:
$ swapon /extra-swap
$
如果在 /etc/fstab 文件中列出交换空间,则可自动将交换空间投入使用:
/dev/hda5 none swap sw 0 0
/extra-swap none swap sw 0 0
实际上,启动脚本会运行 swapon –a 命令,从而将所有出现在 /etc/fstab 文件中的交换空间投入使用。
利用 free 命令,可查看交换空间的使用。如下所示:
$ free
total used free shared buffers
Mem: 15152 14896 256 12404 2528
-/+ buffers: 12368 2784
Swap: 32452 6684 25768
$
该命令输出的第一行(Mem: ) 显示了系统中物理内存的使用情况。total 列显示的是系统中的物理内存总量;used 列显示正在使用的内存数量;free
列显示空闲的内存量;shared 列显示由多个进程共享的内存量,该内存量越多越好;buffers 显示了当前的缓冲区高速缓存的大小。
输出的最后一行 (Swap: ) 显示了有关交换空间的类似信息。如果该行的内容均为 0,表明当前没有活动的交换空间。
利用top 命令或查看
/proc 文件系统中的 /proc/meminfo 文件可获得相同的信息。
利用 swapoff 命令可移去使用中的交换空间。但该命令应只用于临时交换空间,否则有可能造成系统崩溃。
swapoff –a 命令按照 /etc/fstab 文件中的内容移去所有的交换空间,但任何手工投入使用的交换空间保留不变。
3. 分配交换空间
大多数人认为,交换空间的总量应该是系统物理内存量的两倍,实际上这一规则是不正确的,正确的交换空间大小应按如下规则确定:
· 估计需要的内存总量。运行想同时运行的所有程序,并利用 free 或 ps 程序估计所需的内存总量,只需大概估计。
· 增加一些安全性余量。
· 减去已有的物理内存数量,然后将所得数据取整为 MB,这就是应当的交换空间大小。
· 如果得到的交换空间大小远远大于物理内存量,则说明需要增加物理内存数量,否则系统性能会因为过分的页面交换而下降。
当计算的结果说明不需要任何交换空间时,也有必要使用交换空间。Linux 从性能的角度出发,会在磁盘空闲时将某些页面交换到交换空间中,以便减少必要时的交换时间。另外,如果在不同的磁盘上建立多个交换空间,有可能提高页面交换的速度,这是因为某些硬盘驱动器可同时在不同的磁盘上进行读写操作。