Linux系统的swap分区

作者 : 开心源码 本文共4244个字,预计阅读时间需要11分钟 发布时间: 2022-05-11 共129人阅读

1. 什么是swap分区

Swap分区在系统的物理内存不够使用的时候,把物理内存中的一部分空间释放出来,以供当前运行的程序用。那些被释放的空间可可以来自少量很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。swap分区是从磁盘空间划分而来,有的是单独用一个分区,有的是把一个大文件当做swap。

2. 官方关于swap设置

  • Redhat6.4 官方推荐(我们用CentOS 6.4)
    推荐的系统交换空间
系统中的RAM数量   建议交换空间      假如允许休眠,建议用交换空间?2GB               RAM的2倍                 RAM数量的3倍> 2GB - 8GB      等于RAM的数量               RAM的2倍> 8GB - 64GB        至少4 GB                 RAM的1.5倍> 64GB              至少4 GB                  不建议休眠

由于有些系统会允许休眠状态,假如不设置swap会无法启动,就像windows系统用休眠设置虚拟内存一样。

  • Mysql 5.6 和5.7的建议
    mysql5.6
    是说在物理内存足够的情况下,能删除swap,由于系统在有些情况下会及时内存够使用用swap,若用会由于I/0变高导致mysql故障。Mysql建议删除。
    oracle建议
    另外在其它博客中看到下面一个推荐设置,当然我不清楚其怎样得到这个标准的。能否正当也无从考证。能作为一个参考。
    4G以内的物理内存,SWAP 设置为内存的2倍。
    4-8G的物理内存,SWAP 等于内存大小。
    8-64G 的物理内存,SWAP 设置为8G。
    64-256G物理内存,SWAP 设置为16G。
    当然这么多建议标准,很让人无所适从,不知道该怎样设置。其实根据系统实际情况和内存的负荷综合考虑,但是实际情况又是什么样呢?
    个人建议从如下几个考虑:
  1. 物理内存空间能否在峰值也能满足要求,不满足建议设置swap防止内存溢出导致主机宕机,当然设置不宜过大,占使用磁盘空间。
  2. 磁盘I/O能否足够,用磁盘I/O值过低或者者其余业务要求高,不建议设置swap。因为用swap需要频繁写入磁盘,用固态磁盘不建议设置。
  3. 服务器安装的具体的应使用,比方Mysql等不推荐设置,能不设置或者者修改参数swappiness来控制的,默认值为 60意思是说在内存用40%的情况下就用swap空间,能将值设置为10 或者者设置0,优先用物理内存。

3. 如何添加或者者删除swap分区

    1. 查看swap空间和用情况
[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
    1. 关闭swap
[root@localhost-zabbix ~]# swapoff /dev/dm-1[root@localhost-zabbix ~]# swapon -sFilename        Type        Size    Used    Priority
    1. 启使用之前关闭分区
[root@localhost-zabbix ~]# swapon /dev/dm-1[root@localhost-zabbix ~]# swapon -sFilename                Type        Size    Used    Priority/dev/dm-1                               partition   2097144 0   -1
    1. 缩小Swap分区
      假如是增大Swap分区大小,那么就需要扩展正在用的swap分区的逻辑卷,此处用lvreduce命令收缩逻辑卷
[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
    1. 增大swap空间
      假如磁盘还有剩余未分配空间能新分区swap或者者增大之前的swap
      假如没有磁盘未分配,能新建分区文件,来增大swap
[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
    1. 修改swappiness
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 永久修改 需要重启
  • 特别注意:
    在不影响业务和系统,物理内存足够情况下,优先建议用最后一种修改swappiness这样能保证在优先用物理内存而在物理内存不足的情况下用swap防止内存溢出。根据查询资料建议设置值10

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Linux系统的swap分区

发表回复