随着科技不断的进步,内存大小在不断的加大,使得swap分区的用处越来越小。所以在实际生产环境中有时需要对系统的swap分区大小来进行调整,不过建议在安装系统时就定义好是否要swap分区、swap分区的大小是多少,如果是条件允许的话建议swap分区在2GB~4GB间,如果还不够建议直接加内存。使用2GB的swap是因为有一些特殊的软件可能在平时使用的时候会使用到swap分区,如高性能的Oracle。当然,如果后期在使用的过程中发现swap分区过大,磁盘空间又使用紧张,那么就很有必要对系统的swap分区大小做相应的缩减,反之亦然。因为有LVM的出现使得swap分区的调整方式有一点区别,在此就简单的说一说swap分区的缩减方法。

   在对swap分区大小调整前还需要注意是否还有数据正在使用swap分区,如果是有在使用需要先修改下系统的内核变量刷新下swap分区查验下,以免造成数据丢失,系统中默认使用swap时的是依靠/proc/sys/vm/swappiness中的变量来控制的,默认/proc/sys/vm/swappiness中的变量时60,当/proc/sys/vm/swappiness变量设置为0时是表示尽量不使用swap空间,其中值越大表示系统越倾向于使用swap空间,可以通过修改内核变量文件/etc/sysctl.conf来动态控制

root@localhost ~]# sysctl -q vm.swappiness#查询默认vm.swappiness变量大小
vm.swappiness = 60
[root@localhost ~]# vim /etc/sysctl.conf
…略…
vm.swappiness = 0
[root@localhost ~]# sysctl -p
[root@localhost ~]# swapoff -a && swapon -a#刷新swap,即关了再开

这样就降低了系统对swap的使用可能性,当然如果内存确实够时此时还是会使用到swap空间的,此时就不能对swap分区大小做调整,如果没有那么才能继续做swap分区大小的调整,而对swap分区做调整时有分成2种情况:1、是使用传统磁盘分区 2、使用LVM管理的swap分区。这两种情况下对系统的swap分区做调整是有所不同的。

   先说一下传统磁盘分区对swap分区做调整的方法,总的来说使用传统磁盘分区下对swap的增加和减小大致的原理是一致的:

[root@localhost ~]# swapon -s#先确认下是哪一个分区是作为swap分区
[root@localhost ~]# dd if=/dev/zero of=/tmp/swap bs=1MB count=2048#创建一个写满0的swap文件用来做swap,大小根据你需要调整的swap分区来定
[root@localhost ~]# chmod 600 /tmp/swap
[root@localhost ~]# swapoff -a#离线所有swap分区,相当于umount swap分区
[root@localhost ~]# mkswap /tmp/swap#创建swap分区,注意要记录下下面生成的UUID
mkswap: /tmp/swap: warning: don't erase bootbits sectors
        on whole disk. Use -f to force.
Setting up swapspace version 1, size = 1999996 KiB
no label, UUID=7cc2ddfc-6057-49c8-b7a8-4f6e3807d731
[root@localhost ~]# swapon /tmp/swap#激活swap分区

这样swap的临时分区就建立好了,如果是调小或者是磁盘中还有未使用的分区时还可以在把原来的swap分区重新做修改后,再格式化调整大小后再创建成swap分区再把swap写在独立分区内,步骤方法和上面一样在此就不做过多的赘述了,无论如何把swap分区修改好后都需要根据实际修改的情况修改下/etc/fstab文件,注意UUID也要填新的,以确保系统重启后会自动挂载swap分区。

   第二种是swap分区使用LVM逻辑卷来创建管理的那么,只要在swap分区离线后用LVM的增减来对swap分区来做变化,至于LVM在以前有提及过所以在这里就简单的写一下减小,LVM中逻辑卷分区的增减变化可以参看: http://jim123.blog.51cto.com/4763600/1954350

[root@localhost ~]# swapon -s
[root@localhost ~]# swapoff -a
[root@localhost ~]# lvextend -L +2G -f -r /dev/mapper/VolGroup-Lv_swap
[root@localhost ~]# mkswap /dev/mapper/VolGroup-Lv_swap#注意记录UUID
mkswap: /dev/VolGroup/VolGroup-Lv_swap: warning: don't erase bootbits sectors
        on whole disk. Use -f to force.
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=d6210042-9bc0-4e56-bc5a-3ade79eb4791
[root@localhost ~]# swapon /dev/mapper/VolGroup-VolGroup--Lv_swap

总之如果是对swap修改后都要对/etc/fstab文件做修改,以确保重启后系统能自动挂载swap分区