您的位置:首页 > 运维架构 > Linux

Linux手动添加swap分区

2016-03-31 11:15 369 查看
为什么需要swap

根据Redhat公司的建议,Linux系统swap分区最适合的大小是物理内存的1-2倍.不过Linux上有些软件对swap分区得需求较大,例如要顺利执行Oracle数据库软件,swap分区至少需要400MB或者物理内存2倍以上的空间.当然我们在安装Linux的时候,就能直接讲swap分区设置到足够的大小,但如果已经安装好Linux了,之后又想再安装类似Oracle的软件,却发现swap分区空间不够,该如何处理? 针对此种情况,有两种解决方法:一是创建新的swap分区;另一则是创建swap文件. 这里暂时对创建swap文件做说明 创建swap文件如果你的硬盘空间已经全部分配给其他分区,也没有多余的预算新添购硬盘,我们可以利用swap文件的方式增加虚拟的swap空间,不过执行性能会较实际的swap分区差.

1. 检查当前的swap分区情况

# free –m

total used free shared buffers cached

  Mem: 1006 84 922 0 11 38

  -/+ buffers/cache: 35 971

  Swap: 0 0 0

2. 增加交换分区文件及大小

如上,当前swap分区的大小为0,假如需要增加1024M的大小。

判定新交换文件的大小,将大小乘以1024来判定块的大小。例如,大小为64MB的交换文件的块大小为65536,在 shell 提示下以根用户身份键入以下命令,其中的 count 等于想要的块大小。

# dd if=/dev/zero of=/home/swap bs=1M count=1024

1024000+0 records in

  1024000+0 records out

格式化交换文件,将swap文件格式化成s文件系统,系统才能使用

# mkswap /home/swap

  Setting up swapspace version 1, size = 1023996 KiB

3. 启动交换分区文件

假如想立即启用交换分区文件,请执行:

# swapon /home/swap

要停止使用新创建的swap文件,只要执行 swapoff/home/swap命令即可.

检验增加后的swap分区大小

# free -m

total used free shared buffers cached

  Mem: 1006 994 12 0 4 929

  -/+ buffers/cache: 60 946

  Swap: 999 0 999

4. 如希望在系统再次启动时,自动启用刚增加的swap,可编辑/etc/fstab文件:

# vi /etc/fstab,增加如下行

/home/swap swap swap defaults 0 0

5.修改linux swap空间的swappiness,降低对硬盘的缓存

linux 会使用硬盘的一部分做为SWAP分区,用来进行进程调度--进程是正在运行的程序--把当前不用的进程调成‘等待(standby)‘,甚至‘睡眠(sleep)’,一旦要用,再调成‘活动(active)’,睡眠的进程就躺到SWAP分区睡大觉,把内存空出来让给‘活动’的进程。

如果内存够大,应当告诉 linux 不必太多的使用 SWAP 分区, 可以通过修改 swappiness 的数值。swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。在ubuntu 里面,默认设置swappiness这个值等于60。

  

!!!! 如果内存较小,而进程调度频繁,硬盘的响动就会大了 !!!!

  

现在一般1个G的内存可修改为10, 2个G的可改为5, 甚至是0。具体这样做:

1.查看你的系统里面的swappiness

$ cat /proc/sys/vm/swappiness

不出意外的话,你应该看到是 60

2.修改swappiness值为10

$ sudo sysctl vm.swappiness=10

但是这只是临时性的修改,在你重启系统后会恢复默认的60,为长治久安,还要更进一步:

$ sudo vi /etc/sysctl.conf

在这个文档的最后加上这样一行:

vm.swappiness=10

然后保存,重启。ok,你的设置就生效了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: