Linux学习笔记之Linux系统的swap分区
0x00 什么是swap分区
Swap分区在系统的物理内存不够用的时候,把物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。swap分区是从磁盘空间划分而来,有的是单独使用一个分区,有的是把一个大文件当做swap。
0x01 官方关于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,优先使用物理内存。
0x02 如何增加或者删除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
参考
Linux学习笔记之Linux系统的swap分区的更多相关文章
- Linux学习笔记(七) 查询系统
1.查看命令 (1)man 可以使用 man 命令名称 命令查看某个命令的详细用法,其显示的内容如下: NAME:命令名称 SYNOPSIS:语法 DESCRIPTION:说明 OPTIONS:选项 ...
- linux学习笔记2 - linux常用命令
转载请标注原链接:http://www.cnblogs.com/xczyd/p/5543731.html 第一篇博客:linux学习笔记1-ubuntu的安装与基本设置 之中,已经介绍了如何安装lin ...
- Linux学习笔记之Linux相关知识
[想成为某一方面的大神,没有捷径可走,只能不断的记录.练习.总结.coding……] notes:主要从网上摘录了一些关于Linux的历史以及一些相关内容,以便对Linux系统有一定的了解.这不但可以 ...
- Linux学习笔记之Linux磁盘及文件系统管理笔记
Linux磁盘及文件系统管理 CPU,memory(RAM),I/O i/o: disks,ehtercard disks:持久存储数据 接口类型: IDE(ata): 并口,133MB/s;并行总线 ...
- Linux学习笔记之Linux启动引导过程
早期时,启动一台计算机意味着要给计算机喂一条包含引导程序的纸带,或者手工使用前端面板地址/数据/控制开关来加载引导程序.尽管目前的计算机已经装备了很多工具来简化引导过程,但是这一切并没有对整个过程进行 ...
- Linux学习笔记之Linux第一课-基本介绍
Linux简介 Linux内核最初只是由芬兰人李纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的. Linux是一套免费使用和自由传播的类Unix操作系统,是一个基 ...
- Linux学习笔记之Linux目录结构、磁盘命名、启动过程
1.Linux磁盘命名规则 名称的起名规则——/dev/xxyN: 1.Linux下装所有硬件设备的一个目录叫 /dev(devices) 2.Linux没有C盘.D盘.Linux最根上的一个目录叫 ...
- Linux学习24-腾讯云服务器开启swap分区
前言 最近有小伙伴买的腾讯云的1核1G入门级服务器,发现部署的服务多了后,会自动停掉一些docker的的容器. 新买的腾讯云主机没有提供Swap分区,理由是由于主机经常因为内存使用率过高,频繁使用Sw ...
- Linux学习笔记(三):系统执行级与执行级的切换
1.Linux系统与其它的操作系统不同,它设有执行级别.该执行级指定操作系统所处的状态.Linux系统在不论什么时候都执行于某个执行级上,且在不同的执行级上执行的程序和服务都不同,所要完毕的工作和所要 ...
随机推荐
- INS-35178错误,AMM及ASMM区别
遇到这个报错,就使用asmm 一般先装库,再opatch到最新补丁,最后dbca建库,物理内存大于4G不能用AMM只能用ASMM 内存越大,全自动管理就越费劲,出错概率就越高,内存抖动 oracle的 ...
- djabgo 中间件
1.中间件是发生在request和response 之间,都会经过中间键, 上述截图中的中间件都是django中的,我们也可以自己定义一个中间件,我们可以自己写一个类,但是必须继承Middleware ...
- CSS伪类选择器:is、not
本文介绍一下Css伪类:is和:not,并解释一下is.not.matches.any之前的关系 :not The :not() CSS pseudo-class represents element ...
- NOIP 2008 立体图
洛谷 P1058 立体图 洛谷传送门 JDOJ 1541: [NOIP2008]立体图 T4 JDOJ传送门 题目描述 小渊是个聪明的孩子,他经常会给周围的小朋友们将写自己认为有趣的内容.最近,他准备 ...
- (HK1-2)海康相机直接连接电脑不经过路由器设置
解决电脑无法通过网线直连海康摄像机的问题 https://blog.csdn.net/u014552102/article/details/86708371 一.现象: 通过博主的另外一篇博客h ...
- luogu_2480: 古代猪文
洛谷:2480古代猪文 题意描述: 给定两个整数\(N,G\),求$G^{\sum_{k|n}C_n^k} mod 999911659 $. 数据范围: \(1\leq N\leq 10^9,1\le ...
- CPU中断的工作原理,从最底层讲起
前言 中断的概念属于硬件层.虽然我们在进行软件编程时不会直接使用中断,但理解它对我们来说依然重要. 我们在使用线程切换及状态管理.异常处理.硬件与处理器的交互.I/O操作等指令时,中断都在默默的为我们 ...
- js判断客户端是iOS还是Android移动终端
前段时间,小颖公司需要实现:用户在微信中打开一个html5,在该html5中通过点击下载按钮,Android手机会跳到Android的下载地址,IOS会跳转到IOS下载地址,其它则跳转到另一个指定地址 ...
- django -- 安装django
安装 通过cmd进行安装 pip3 install django==1.11.11 创建django项目 通过命令行进行创建 下面的命令创建了一个名为"mydjango"的Djan ...
- 【数位DP】【P2657】[SCOI2009]windy数
Description windy定义了一种windy数.不含前导零且相邻两个数字之差至少为 \(2\) 的正整数被称为windy数. windy想知道, 在 \(A\) 和 \(B\) 之间,包括 ...