资讯专栏INFORMATION COLUMN

Linux系统的swap分区

waltr / 1697人阅读

摘要:什么是分区分区在系统的物理内存不够用的时候,把物理内存中的一部分空间释放出来,以供当前运行的程序使用。和的建议是说在物理内存足够的情况下可以删除因为系统在有些情况下会及时内存够用使用若使用会因为变高导致故障。以内的物理内存,设置为内存的倍。

什么是swap分区

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

官方关于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的建议

是说在物理内存足够的情况下,可以删除swap,因为系统在有些情况下会及时内存够用使用swap,若使用会因为I/0变高导致mysql故障。Mysql建议删除。

另外在其它博客中看到下面一个推荐设置,当然我不清楚其怎么得到这个标准的。是否合理也无从考证。可以作为一个参考。

4G以内的物理内存,SWAP 设置为内存的2倍。 
4-8G的物理内存,SWAP 等于内存大小。
8-64G 的物理内存,SWAP设置为8G。
64-256G物理内存,SWAP 设置为16G。

当然这么多建议标准,很让人无所适从,不知道该怎么设置。其实根据系统实际情况和内存的负荷综合考虑,但是实际情况又是什么样呢?

个人建议从如下几个考虑:

物理内存空间是否在峰值也可以满足要求,不满足建议设置swap防止内存溢出导致主机宕机,当然设置不宜过大,占用磁盘空间。

磁盘I/O是否足够,使用磁盘I/O值过低或者其他业务要求高,不建议设置swap。由于使用swap需要频繁写入磁盘,使用固态磁盘不建议设置。

服务器安装的具体的应用,比如Mysql等不推荐设置,可以不设置或者修改参数swappiness来控制的,默认值为
60意思是说在内存使用40%的情况下就使用swap空间,可以将值设置为10 或者设置0,优先使用物理内存。

如何增加或者删除swap分区

查看swap空间和使用情况

[root@localhost-zabbix ~]# swapon -s
Filename                Type        Size    Used    Priority
/dev/dm-1                               partition   2097144 0   -1
[root@localhost-zabbix ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          1877        565       1311          0        132        188
-/+ buffers/cache:        244       1632
Swap:         2047          0       2047

关闭swap

[root@localhost-zabbix ~]# swapoff /dev/dm-1
[root@localhost-zabbix ~]# swapon -s
Filename        Type        Size    Used    Priority

启用之前关闭分区

[root@localhost-zabbix ~]# swapon /dev/dm-1
[root@localhost-zabbix ~]# swapon -s
Filename                Type        Size    Used    Priority
/dev/dm-1                               partition   2097144 0   -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 -s
Filename                                Type            Size    Used    Priority
[root@getlnx14uat ~]# swapon /dev/mapper/VolGroup00-LogVol01
[root@getlnx14uat ~]# swapon -s
Filename                                Type            Size    Used    Priority
/dev/mapper/VolGroup00-LogVol01         partition       8388600 0       -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 -h
Filesystem                              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/swap
mkswap: /home/swap: warning: don"t erase bootbits sectors
        on whole disk. Use -f to force.
Setting up swapspace version 1, size = 1023996 KiB
no label, UUID=74c16b0d-7d88-4384-b41e-b12cc93d4bbf
[root@localhost-zabbix ~]# cd /home/
[root@localhost-zabbix home]# ls
swap
[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 KiB
no label, UUID=7677912c-b337-4e83-9003-b736dec93d31
[root@localhost-zabbix home]# free -m
             total       used       free     shared    buffers     cached
Mem:          1877       1611        265          0        135       1192
-/+ buffers/cache:        283       1593
Swap:         2047          0       2047
[root@localhost-zabbix home]# swapon swap 
[root@localhost-zabbix home]# free -m
             total       used       free     shared    buffers     cached
Mem:          1877       1612        265          0        135       1192
-/+ buffers/cache:        284       1592
Swap:         3047          0       3047
[root@localhost-zabbix home]# swapon -s
Filename                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/swap
rm -rf /home/swap
vi /etc/fstab
/home/swap swap swap default 0 0

是有新的分区新建swap:
使用fdisk来创建交换分区(假设 /dev/sdb2 是创建的交换分区)

mkswap /dev/sdb2
swapon /dev/sdb2
vi /etc/fstab
/dev/sdb2 swap swap defaults 0 0

修改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 查看swappiness
vm.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/swappiness
10
在/etc/sysctl.conf中编辑,增加如下参数(如果存在的话)
vm.swappiness = 10 永久修改 需要重启

特别注意:
在不影响业务和系统,物理内存足够情况下,优先建议使用最后一种修改swappiness这样可以保证在优先使用物理内存而在物理内存不足的情况下使用swap防止内存溢出。根据查询资料建议设置值10

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/10822.html

相关文章

  • Linux交换空间(swap space)

    摘要:有了后,系统就可以将这部分不这么使用的内存数据保存到上去,从而释放出更多的物理内存供系统使用。内存不够用不管是桌面还是服务器,当物理内存明显不够用,而又想跑程序的话,添加是唯一的选择,慢点总比不能工作强。 每次安装Linux的时候,都会要求配置交换分区,那么这个分区是干嘛的呢?不设置这个分区有什么后果?如果一定要设置,设置多大比较合适?本篇将试图回答这些问题并尽量覆盖所有swap相关的...

    Dongjie_Liu 评论0 收藏0
  • linux笔记本设置休眠

    摘要:睡眠更准确的名称应该是混合睡眠,所谓混合即存储方式上包含了挂起和休眠两种方式,唤醒时会优先从内存中读取数据,如果设备在此状态下断电,就和休眠一样了。 也可在github上的此处查看(还包含一些笔记本相关的其他设置),一些更新修正推送到github比在博客上更新更方便。 挂起睡眠和休眠的区别 三种存储当前运行状态数据(前后台进程服务,不包含buff cache等)的方式 挂起suspe...

    AlexTuan 评论0 收藏0
  • 一天一点linux(5)

    摘要:一块硬盘最多可以有个主分区,而且只能有一个扩展分区,而且扩展分区不能用,必须要在这个扩展分区划分一个或多个逻辑分区。在中,通过设备名来访问设备,设备名存放在目录中查看分区注意分区数字编号只能留给主分区或扩展分区,逻辑分区的编号只能从开始。 windows系统对比: 32位与64位系统简单介绍和对比: 置初衷不同:64位为高性能所设计,32位为普通用户设计; 要求配置不同:64位只能安...

    Cristic 评论0 收藏0
  • 一天一点linux(5)

    摘要:一块硬盘最多可以有个主分区,而且只能有一个扩展分区,而且扩展分区不能用,必须要在这个扩展分区划分一个或多个逻辑分区。在中,通过设备名来访问设备,设备名存放在目录中查看分区注意分区数字编号只能留给主分区或扩展分区,逻辑分区的编号只能从开始。 windows系统对比: 32位与64位系统简单介绍和对比: 置初衷不同:64位为高性能所设计,32位为普通用户设计; 要求配置不同:64位只能安...

    Nino 评论0 收藏0
  • 系统性能指标采集方法(Linux篇)

    摘要:通过程序采集服务器的性能指标,并以此数据为基础构造监控系统,是运维的常见需求。本文阐述各种主要性能指标的具体采集方法和技术。原文系统性能指标的采集方法篇的采样指标分为总体指标和单核指标,通过读取文件,可以得到总体数据和每个的数据。 通过程序采集服务器的性能指标,并以此数据为基础构造监控系统,是运维的常见需求。本文阐述各种主要性能指标的具体采集方法和技术。 原文:系统性能指标的采集方法(...

    Achilles 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<