Linux交换空间的使用
虽然现在的内存已经变得非常廉价,但是swap仍然有很大的使用价值,合理的规划和使用swap分区,对系统稳定运行至关重要。Linux下可以使用文件 系统中的一个常规文件或者一个独立分区作为交换空间使用。同时linux允许使用多个交换分区或者交换文件
创建swap交换空间
创建交换空间所需的交换文件是一个普通的文件,但是,创建交换文件与创建普通文件不同,必须通过dd命令来完成,同时这个文件必须位于本地硬盘上,不能在网络文件系统(NFS)上创建swap交换文件
例如
[root@localhost ~]# dd if=/dev/zero of=/data/swapfile bs=1024 count=65536
65536+0 records in
65536+0 records out
这样就创建一个有连续空间的交换文件,大小为60M左右,
关于dd命令做简单的讲述:
if=
输入文件,或者设备名称。of=
输出文件或者设备名称。ibs=bytes
表示一次读入bytes 个字节(即一个块大小为 bytes 个字节)。obs=bytes
表示一次写bytes 个字节(即一个块大小为 bytes 个字节)。bs=bytes
同时设置读写块的大小,以bytes为单位,此参数可代替 ibs 和 obs。count=blocks
仅拷贝blocks个块。skip=blocks
表示从输入文件开头跳过 blocks 个块后再开始复制。seek=blocks
表示从输出文件开头跳过 blocks 个块后再开始复制。(通常只有当输出文件是磁盘或磁带时才有效)
这里的输入设备/dev/zero
代表一个输出永远为0的设备文件,使用它作输入可以得到全为空的文件。
激活和使用swap
首先通过mkswap命令指定作为交换空间的设备或者文件:
[root@localhost ~]# mkswap /data/swapfile
Setting up swapspace version 1, size = 67104 kB
[root@localhost backup]# free
total used free shared buffers cached
Mem: 2066632 1998188 68444 0 26160 1588044
-/+ buffers/cache: 383984 1682648
Swap: 4088500 101036 3987464
从上面输出可知,我们指定了一个67104 kB的交换空间,而此时新建的交换空间还未被使用,下面简单介绍下mkswap命令,mkswap的一般使用格式为:
mkswap [参数] [设备名称或文件][交换区大小]
参数:
-c
:建立交换区前,先检查是否有损坏的区块。-v0
:建立旧式交换区,此为预设值。-v1
:建立新式交换区。
交换区大小:指定交换区的大小,单位为1024字节。
设置交换分区后,接着通过swapon命令激活swap:
[root@localhost ~]# /usr/sbin/swapon /data/swapfile
[root@localhost backup]# free
total used free shared buffers cached
Mem: 2066632 1997668 68964 0 27404 1588880
-/+ buffers/cache: 381384 1685248
Swap: 4154028 100976 4053052
通过free命令可以看出,swap大小已经由4088500k变为4154028k,相差的值是60M左右,刚好等于我们增加的一个交换文件大小,这说 明新增的交换分区已经可以使用了,但是如果linux重启,那么新增的swap空间将变得不可用,因此需要在/etc/fstab中添加自动加载设置:
/data/swapfile none swap sw 0 0
如此以来,linux在重启后就可以实现自动加载swap分区了。其实linux在启动过程中会执行“swapon -a”命令,此命令会加载列在/etc/fstab中的所有交换空间。
移除交换空间
通过swapoff即可移除一个交换空间
[root@localhost ~]# /usr/sbin/swapoff /data/swapfile
其实也可以通过swapoff -a
移除在/etc/fstab
中定义的所有交换空间,这里的swapoff -a
与上面提到的swapon -a
对应。执行swapoff -a
后,free命令输出如下:
[root@localhost backup]# free
total used free shared buffers cached
Mem: 2066632 2048724 17908 0 30352 1642748
-/+ buffers/cache: 375624 1691008
Swap: 0 0 0