0
点赞
收藏
分享

微信扫一扫

swap相关知识

1、什么是 swap 分区

​​Linux​​中Swap(即:​​交换分区​​),类似于Windows的​​虚拟内存​​,就是当​​内存不足​​的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。Android是基于Linux的操作系统,所以也可以使用​​Swap分区​​来提升系统运行效率 。

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

2、什么时候才会使用 swap 分区

其实是Linux通过一个参数swappiness来控制的。当然还涉及到复杂的算法。

这个参数值可为 0-100,控制系统 swap 的使用程度。高数值可优先系统性能,在进程不活跃时主动将其转换出物理内存。低数值可优先互动性并尽量避免将进程转换处物理内存,并降低反应延迟。默认值为 60。注意:这个只是一个权值,不是一个百分比值,涉及到系统内核复杂的算法。

修改这个权重

echo 10 > /proc/sys/vm/swappiness sysctl vm.swappiness=10 #临时修改
echo "vm.swappiness=10" >> /etc/sysctl.conf #永久修改
sysctl -p #生效

3、swap分区设置多大合适

关于这个问题,应该说只能有一个统一的参考标准,具体还应该根据系统实际情况和内存的负荷综合考虑,像ORACLE的官方文档就推荐如下设置,这个是根据物理内存来做参考的。

RAM

Swap Space

Up to 512 MB

2 times the size of RAM

Between 1024 MB and 2048 MB

1.5 times the size of RAM

Between 2049 MB and 8192 MB

Equal to the size of RAM

More than 8192 MB

0.75 times the size of RAM

4、如何创建 swap 分区

4.1、利用剩余磁盘创建分区来生成swap 分区

1,首先利用 fdisk 方式创建一个分区出来

参照​​https://www.yuque.com/docs/share/2ae867e2-a26d-483d-b670-e233f1d02c67?#​​ 《第7章 Linux磁盘管理、使用》第5节

2,然后使用 mkswap 方式来格式化分区

mkswap /dev/sdb2

3,启动交换分区

swapon /dev/sdb2

4,设置成开机自动启动

echo "/dev/sdb2 swap swap defaults 0 0" >> /etc/fstab

4.2、利用剩余空间创建 swap 分区

  1. 创建一个目录,(可省略,但是不建议)

mkdir /swapdir && cd /swapdir

  1. 使用 dd 命令创建大小合适的的交换文件:

dd if=/dev/zero of=/swapdir/swapfile bs=1M count=1000

创建一个名为swapfile 的 1G 的交换文件,其中bs是每块的大小,count是块的数量;bs*count,就是swap文件的大小:这里1M*1024=1G。可以根据需要自行调整。

此外,swapfile是swap文件的路径,可以根据需求修改。

  1. 格式化此文件

mkswap /swapdir/swapfile

  1. 设置权限

chmod 600 /swapdir/swapfile

  1. 启用交换分区

swapon /swapdir/swapfile

  1. 设置开机自启动

echo "/swapdir/swapfile swap swap defaults 0 0" >> /etc/fstab

注意,路径还是要对应,而且必须是全路径。最后两个是零,不是大写字母O。

此项不是必须的。如果不修改开机启动配置,重启之后的swap空间会重置,之前配置丢失。

5、如何扩容 swap分区

只需要按照上面步骤创建 swap 分区,挂载上去之后就自动扩容上去了

6、如何缩减 swap 分区

  1. 用下面命令查看下当前 swap 分区上面挂载了那些磁盘

swapon -s / cat /proc/swaps

  1. 关闭对应的 swap 分区

swapoff /dev/sdb2

1、创建512M的空文件 dd if=/dev/zero of=/opt/swapfile bs=1M count=512  
#此处设置为8G,如下:
dd if=/dev/zero of=/opt/swapfile bs=1M count=8096

2、格式化为交换分区 mkswap /opt/swapfile

3、设置权限 chmod 600 /opt/swapfile

4、挂载交换分区 swapon /opt/swapfile
如果guazai交换分区出现如下参数错误,
swapon: stat 失败:swap: 没有那个文件或目录,
解决办法:
重新制作为交换分区
/sbin/mkswap /opt/swapfile,
然后继续挂载交换分区即可
/sbin/swapon /opt/swapfile

5、查看交换分区大小 free

如果要去掉新增加的swap文件,使用 swapoff /tmp/swap1即可。

[root@oracle u01]# dd if=/dev/zero of=/opt/swapfile bs=1024 count=1048576
1048576+0 records in
1048576+0 records out
1073741824 bytes (1.1 GB) copied, 5.87728 s, 183 MB/s
[root@oracle u01]# mkswap /opt/swapfile
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=e338be1a-852c-444c-8108-e56428828740
[root@oracle u01]# sudo chmod 600 /swapfile
[root@oracle u01]# swapon /swapfile
[root@oracle u01]# free -h
total used free shared buff/cache available
Mem: 31G 2.1G 19G 102M 9.4G 28G
Swap: 16G 0B 16G
[root@oracle u01]# vim /etc/fstab
...
/swapfile swap swap default 0 0
举报

相关推荐

IS-IS相关知识

javaweb相关知识

VLAN相关知识

Linux相关知识

【Maven】相关知识

Maven相关知识

python相关知识

Redis相关知识

0 条评论