Linux Swap交换分区设置

2014-04-11 09:28:30  雅事达网络 我有话说(184人参与)

关于swap交换分区的设置:

一种流行的、以讹传讹的说法是,安装Linux系统时,交换分区swap的大小应该是内存的两倍。也就是说,如果内存是2G,那么就应该分出4G的硬盘空间作为交换空间。其实这是严重的浪费。真实的情况是:可以根据你系统内存的大小,以及所使用的程序,自行决定交换分区的大小,甚至可以完全不用交换分区!

首先解释一下什么是交换分区。交换分区,英文的说法是swap,意思是“交换”、“实物交易”。它的功能就是在内存不够的情况下,操作系统先把内存中暂时不用的数据,存到硬盘的交换空间,腾出内存来让别的程序运行,和Windows的虚拟内存(pagefile.sys)的作用是一样的。

做一个假设:如果你的内存足够大,极少出现内存不足的情况,那么你就不需要交换分区。事实上,这种可能性是完全存在的。现在的1G内存的电脑不算什么了。动辄4G内存的电脑也日益普遍。日常使用的话,很少能用完全部的内存。在用不完内存容量的情况下,还要划出它两倍的硬盘空间用于内存交换,这不是浪费吗?

可以说,在你内存基本够用的情况下,完全可以不要交换空间。在Windows下也是一样,在系统属性中,把虚拟内存设置为0,系统依然运行的很好。当然,如果你用的是服务器,还是要有专门的虚拟内存,有备无患。但是虚拟内存的大小不一定非要内存的两倍。

那么怎么知道你的系统有没有用到交换空间呢?只需要在root用户下,运行下面的命令就可以知道了。

free -m

在日常应用中,通过上述命令看到交换空间的使用情况为0,那么你就不需要很大的虚拟内存,甚至可以完全不需要另辟硬盘空间作为虚拟内存。那么,万一有一天你需要了呢,难道要重装系统?大可不必,在Linux下虚拟内存不单可以放在单独的交换分区,也可以是一个在正常分区下的交换文件。

 

1 查看swap 空间大小(总计):
     # free -m          默认单
位为k, -m 单位为M
              total       used       free     shared    buffers     cached
Mem:           377        180        197          0         19        110
-/+ buffers/cache:         50        327
Swap:          572          0        572
2 查看swap 空间(file(s)/partition(s)):
      包括 文件 和 分区 的详细信息
# swapon -s
等价于
# cat /proc/swaps
3 添加交换空间
两种选择:添加一个交换分区或添加一个交换文件。推荐你添加一个交换分区;不过,若你没有多少空闲空间可用,则添加交换文件。
    3.1 添加一个交换分区
步骤如下:
      a 使用fdisk来创建交换分区(假设 /dev/xvdb1 是创建的交换分区)
      b 使用 mkswap 命令来设置交换分区:
# mkswap -f /dev/xvdb1
      c 启用交换分区:
# swapon /dev/xvdb1
      d 写入/etc/fstab,以便在引导时启用:
   /dev/xvdb1 swap swap defaults 0 0

【亲测】

1、用swapon /dev/xvdb1 如果出现错误:swapon: /dev/xvdb1: read swap header failed: Invalid argument

说明原来是扩展后的swap分区没有格式化(初始化)。一定需要:

# mkswap -f /dev/xvdb1

参见:http://pangwenxin.com/?p=161202

2、有人说需要在/etc/rc.d/rc.local中增加:swapon /dev/xvdb1,才能启动时自动挂载(参见:http://bbs.51cto.com/thread-1095040-1.html),

经过测试没有必要,只需上述在/etc/fstab,写入:
   /dev/xvdb1 swap swap defaults 0 0

但是必须注意的是,/etc/fstab里之前是

  /dev/xvdb1 /mnt ext3 defaults 0 0  

改成:

 /dev/xvdb1 swap swap defaults 0 0

3、/etc/rc.d/rc.local中如有:

swapoff -a (关闭swap启用)

改成:

#swapoff -a (不关闭swap)

 

 

 


    3.2 添加一个交换文件
a 创建大小为512M的交换文件:
# dd if=/dev/zero of=/swapfile1 bs=1024k count=512
b 使用 mkswap 命令来设置交换文件:
# mkswap /swapfile1
c 启用交换分区:
# swapon /swapfile1
d 写入/etc/fstab,以便在引导时启用:
/swapfile1 swap swap defaults 0 0
新添了交换分区并启用它之后,请查看 cat /proc/swaps 或 free 命令的输出来确保交换分区已被启用了。
4 删除交换空间:
a 禁用交换分区:
# swapoff /dev/sdb2
b 从 /etc/fstab 中删除项目;
c 使用fdisk或yast工具删除分区。
删除交换文件步骤同上。

分享到:

已有37条评论,共184人参与

还没有评论
最新评论刷新
建海666
这里是博客评论区,请登录
32分钟前
果果明赫
这里是博客评论区,请登录
60分钟前