在linux 系统中当物理内存不足的时候,系统会将那些内存中不活跃的分页置换到swap 空间。
swap 在逻辑上扩展内存,但他毕竟不是内存不能取代内存,如果你的机器物理内存是实在不足,
最好的解决办法是添加内存条。
linux swap 大小的设置没有唯一的标准,因为系统负载各异。通用的划分方式是当RAM<=2G 的
时候,swap 是RAM的两倍。当RAM>2G 的时候,swap=RAM+2G.查看当前系统的swap 大小与使用情况。
[oracle@local ~]$ cat /proc/swaps
Filename                                Type            Size    Used    Priority
/dev/sda3                               partition       3481592 0       -1
从swap 空间的使用情况来看,我的linux 系统性能还不错。也可以使用free 命令来查看swap的
大小和使用情况。
[oracle@local ~]$ free
             total       used       free     shared    buffers     cached
Mem:       1207500     986096     221404          0      43120     728300
-/+ buffers/cache:     214676     992824
Swap:      3481592          0    3481592
有时候你需要扩大swap。比如扩大swap 空间以应对内存密集型的运用程序(当然这不是根本
的解决办法,单可能是最好最廉价的解决办法)。扩大swap 的空间有三种备选的方法。新建
一个swap 分区,创建一个新的swap 文件,或者扩展用作swap 的LVM2 逻辑卷。在修改swap
空间的时候swap 空间不能被分配给内核,所有才需要查看/proc/swaps 确定swap 的使用情况。
建议的方式修改swap 空间的方式是重启系统到rescue mode.
创建一个交换文件
当然你也可以新建一个交换分区,或者扩展已有的用作交换的LVM2逻辑卷,如果有的话。
1、确定要创建的新交换文件的大小(使用MB为单位),再乘以1024(block size)确定block的数量。
linux 中 swap space 不能小于32MB。
2、以需要的block size 创建文件。这里的bs 可以设置的大一点比如1MB,这样swap space 效率会
更好。
[root@local ~]# dd if=/dev/zero of=/home/swapfile bs=1024 count=65536
65536+0 records in
65536+0 records out
67108864 bytes (67 MB) copied, 7.83355 s, 8.6 MB/s
3、把创建的文件设置为交换文件(swap file).
[root@local ~]# mkswap /work/swapfile
mkswap: /work/swapfile: warning: don't erase bootbits sectors
        on whole disk. Use -f to force.
Setting up swapspace version 1, size = 65532 KiB
no label, UUID=d04ab35d-423a-4184-ad59-8ea3a0e4dae5
3、启用刚才创建的swap file。
[root@local ~]# swapon /work/swapfile
4、查看添加swap file 以后的swap 状况。
[root@local ~]# swapon -s
Filename                                Type            Size    Used    Priority
/dev/sda3                               partition       3481592 0       -1
/work/swapfile                          file            65400   0       -2
[root@local ~]# cat /proc/swaps
Filename                                Type            Size    Used    Priority
/dev/sda3                               partition       3481592 0       -1
/work/swapfile                          file            65400   0       -2
5、设置开机的时候自动启用新创建的swap file。
上面的设置下次开机重启的时候就无效了,要想重启的时候总是有效,可以把swap file 的信息
写入/etc/fstab。
[root@local ~]# echo "/work/swapfile   swap  swap  defaults 0 0" >> /etc/fstab
6、关掉swap file。
[root@local ~]# swapoff -v  /work/swapfile
swapoff on /work/swapfile
确认下关闭交换文件以后的swap 状态。
[root@local ~]# swapon -s
Filename                                Type            Size    Used    Priority
/dev/sda3                               partition       3481592 0       -1
7、撤掉移除swap file。
[root@local ~]# rm /work/swapfile
rm: remove regular file `/work/swapfile'? y
另外记得把/etc/fstab 中关于/work/swapfile 的条目注释掉,或者移除掉。
注:对于这个swap 一般桌面计算机基本用不上,因为一般现在的计算机内存都比较大。但是对于
服务器就完全不同了,比如安装oracle 数据库软件的时候就有检查swap space 那么一项。oracle
也会使用到交换,因为数据库服务器一般对内存是非常饥渴的。但是不要太依赖交换,人家本质上
还是硬盘空间,不管名字再怎么好听交换,虚拟内存。。。都是没用的,用用就好。