Swap分区在系统的物理内存不够使用的时候,把物理内存中的一部分空间释放出来,以供当前运行的程序用。那些被释放的空间可可以来自少量很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。swap分区是从磁盘空间划分而来,有的是单独用一个分区,有的是把一个大文件当做swap。
系统中的RAM数量 建议交换空间 假如允许休眠,建议用交换空间?2GB RAM的2倍 RAM数量的3倍> 2GB - 8GB 等于RAM的数量 RAM的2倍> 8GB - 64GB 至少4 GB RAM的1.5倍> 64GB 至少4 GB 不建议休眠
由于有些系统会允许休眠状态,假如不设置swap会无法启动,就像windows系统用休眠设置虚拟内存一样。
[root@localhost-zabbix ~]# swapon -sFilename Type Size Used Priority/dev/dm-1 partition 2097144 0 -1[root@localhost-zabbix ~]# free -m total used free shared buffers cachedMem: 1877 565 1311 0 132 188-/+ buffers/cache: 244 1632Swap: 2047 0 2047
[root@localhost-zabbix ~]# swapoff /dev/dm-1[root@localhost-zabbix ~]# swapon -sFilename Type Size Used Priority
[root@localhost-zabbix ~]# swapon /dev/dm-1[root@localhost-zabbix ~]# swapon -sFilename Type Size Used Priority/dev/dm-1 partition 2097144 0 -1
[root@getlnx14uat ~]# lvreduce -L 8G /dev/mapper/VolGroup00-LogVol01 WARNING: Reducing active logical volume to 8.00 GB THIS MAY DESTROY YOUR DATA (filesystem etc.)Do you really want to reduce LogVol01? [y/n]: y Reducing logical volume LogVol01 to 8.00 GB Logical volume LogVol01 successfully resized[root@getlnx14uat ~]# mkswap /dev/mapper/VolGroup00-LogVol01 #格式化Setting up swapspace version 1, size = 8589930 kB[root@getlnx14uat ~]# swapon -sFilename Type Size Used Priority[root@getlnx14uat ~]# swapon /dev/mapper/VolGroup00-LogVol01[root@getlnx14uat ~]# swapon -sFilename Type Size Used Priority/dev/mapper/VolGroup00-LogVol01 partition 8388600 0 -1
[root@localhost-zabbix ~]# dd if=/dev/zero of=/home/swap bs=1024 count=1024000记录了1024000+0 的读入记录了1024000+0 的写出1048576000字节(1.0 GB)已复制,2.69212 秒,389 MB/秒[root@localhost-zabbix ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev/mapper/vg_localhostzabbix-lv_root 18G 4.7G 12G 29% /tmpfs 939M 0 939M 0% /dev/shm/dev/sda1 485M 33M 427M 8% /boot[root@localhost-zabbix ~]# mkswap /home/swapmkswap: /home/swap: warning: don't erase bootbits sectors on whole disk. Use -f to force.Setting up swapspace version 1, size = 1023996 KiBno label, UUID=74c16b0d-7d88-4384-b41e-b12cc93d4bbf[root@localhost-zabbix ~]# cd /home/[root@localhost-zabbix home]# lsswap[root@localhost-zabbix home]# mkswap swap mkswap: swap: warning: don't erase bootbits sectors on whole disk. Use -f to force.Setting up swapspace version 1, size = 1023996 KiBno label, UUID=7677912c-b337-4e83-9003-b736dec93d31[root@localhost-zabbix home]# free -m total used free shared buffers cachedMem: 1877 1611 265 0 135 1192-/+ buffers/cache: 283 1593Swap: 2047 0 2047[root@localhost-zabbix home]# swapon swap [root@localhost-zabbix home]# free -m total used free shared buffers cachedMem: 1877 1612 265 0 135 1192-/+ buffers/cache: 284 1592Swap: 3047 0 3047[root@localhost-zabbix home]# swapon -sFilename Type Size Used Priority/dev/dm-1 partition 2097144 0 -1/home/swap file 1023992 0 -2
我们能看到上面是有分区文件的方式增大了swap空间。但是这里还有个问题就是重启系统以后swap还是会变回去,这里需要修改/etc/fstab
添加:/home/swap swap swap default 0 0
删除刚刚添加swap
swapoff /home/swaprm -rf /home/swapvi /etc/fstab/home/swap swap swap default 0 0
是有新的分区新建swap:
用fdisk来创立交换分区(假设 /dev/sdb2 是创立的交换分区)
mkswap /dev/sdb2swapon /dev/sdb2vi /etc/fstab/dev/sdb2 swap swap defaults 0 0
swappiness参数值说明vm.swappiness = 0 仅在内存不足的情况下--当剩余空闲内存低于vm.min_free_kbytes limit时,用交换空间。 vm.swappiness = 1 内核版本3.5及以上、Red Hat内核版本2.6.32-303及以上,进行最一些的交换,而不禁使用交换。 vm.swappiness = 10当系统存在足够内存时,推荐设置为该值以提高性可以。 vm.swappiness = 60默认值vm.swappiness = 100 内核将积极的用交换空间# sysctl -a | grep vm.swappiness 查看swappinessvm.swappiness = 30# echo 10 > /proc/sys/vm/swappiness 临时修改# sysctl -a | grep vm.swappiness# vm.swappiness = 10# sysctl -w vm.swappiness=10 临时修改vm.swappiness = 10# cat /proc/sys/vm/swappiness10在/etc/sysctl.conf中编辑,添加如下参数(假如存在的话)vm.swappiness = 10 永久修改 需要重启