添加swap空间

1. 误删/dev/zero文件的解决方法如下两条命令进行修复重建文件:

[root@localhost sslinux]# mknod /dev/zero c 1 5
[root@localhost sslinux]# chmod 666 /dev/zero

修复完成后用命令测试下是否可用,发现已经可以正常使用磁盘测试了

[root@localhost sq808sq]# dd if=/dev/zero of=test bs=64k count=4k oflag=dsync

至此,/dev/zero 文件的修复重建工作已经完成(该文件为系统特殊文件丢失后不能从系统盘或其他系统直接复制使用,只能通过重建修复,/dev/null文件也是如此)

2.使用dd 命令 新增 swap空间(/var/swap)

复制代码
dd if=/dev/zero of=/var/swap bs=1024 count=4096000
ls -lh /var/swap 
mkswap /var/swap 
mkswap -f /var/swap
swapon /var/swap 
free -lh
swapon /var/swap 
more /proc/swaps 
vim /etc/fstab 
free -lh
复制代码

将swap设置为开机自动挂载:

[root@izbp12z8w3jbbgmy9yiz92z ~]# tail -1 /etc/fstab 
/var/swap               swap            swap    defaults    0 0

但是此时使用 free -lh 命令查看memory和swap的使用情况,依旧没什么变化。

1.swap 是存储“暂时不需要使用的内存”到硬盘上,等到使用的时候再载入到内存中
这种情况只能说明,没有“长期不使用的内存”

2.Swap 的使用量和 OOM 没有直接关系。OOM 看的是申请量不是使用量。哪怕你内存没用完都会触发 OOM

memory和swap的关系

系统在什么情况下才会使用SWAP?

实际上,并不是等所有的物理内存都消耗完毕之后,才去使用swap的空间,什么时候使用是由swappiness 参数值控制。

[root@rhce ~]# cat /proc/sys/vm/swappiness
60

该值默认值是60.
swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,
swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。

即内存足够大的时候,swappiness设置尽量小; 内存较小的时候,swappiness要设置的尽量大;

如何修改swappiness参数?

  • 临时性修改:
    [root@rhce ~]# sysctl vm.swappiness=10 vm.swappiness = 10 [root@rhce ~]# cat /proc/sys/vm/swappiness 10
  • 永久修改:
    在/etc/sysctl.conf 文件里添加如下参数:
    vm.swappiness=10 [root@izbp12z8w3jbbgmy9yiz92z ~]# sed -i ‘$a vm.swappiness=100’ /etc/sysctl.conf [root@izbp12z8w3jbbgmy9yiz92z ~]# sysctl vm.swappiness vm.swappiness = 100

到这里,系统就会尽可能的使用swap。 可以执行一个占用大量内存的命令看一下效果;

此时再查看内存和swap的使用情况:

复制代码
[root@izbp12z8w3jbbgmy9yiz92z ~]# free -lh
              total        used        free      shared  buff/cache   available
Mem:           1.8G        899M        690M        1.5M        249M        779M
Low:           1.8G        1.1G        690M
High:            0B          0B          0B
Swap:          3.9G        715M        3.2G
准备工作 首先,检查你的系统是否已经有 Swap 分区: swapon -s 或 free -m 如果没有返回结果或者 free -m 中 Swap 一列数值是 0,则表示你的系统没有 Swap 分区。 创建 SWAP 分区 我们可以使用 fallocate 命令创建一个 1GB 大小的 Swap 分区: fallocate -l 1G /swapfile 如果这个命令无法使用,请安装 util-linux 包: apt install util-linux 然后设置这个文件的权限: chmod 600 /swapfile 然后激活 SWAP 分区 mkswap /swapfile swapon /swapfile 此时,你可以使用 swapon -s 或 free -m 命令查看 Swap 分区是否已经激活。 设置开机自启 我们需要编辑 /etc/fstab 这个文件,加入下面的内容即可: echo “/swapfile swap swap defaults 0 0” >> /etc/fstab 大功告成,使用 free -m 命令查看 Swap 分区是否正确: Debian / Ubuntu 手工添加 Swap 分区 调整系统内核 Swappiness 值 Swapiness 是 Linux 内核的一个属性,定义了系统使用交换空间的频率,Swapiness 的值在 0 到 100 之间 (默认是 60),一个低的值会使内核尽可能地避免交换,而一个高的值会使内核更积极地使用交换空间。 这个值默认是 60,我们可以使用 cat /proc/sys/vm/swappiness 命令查看当前值。 一般我们可以给他改成 10: echo “vm.swappiness=10” >> /etc/sysctl.conf 然后使用 sysctl -p 命令使其生效。 关闭 Swap 有时候我们需要关闭 Swap 分区,可以使用下面的命令: 首先,停用 Swap 分区: swapoff -v /swapfile 然后检查 /etc/fstab,删除 /swapfile swap swap defaults 0 0 这一行。 最后删除 /swapfile 这个文件: rm /swapfile

已发布

分类

来自

标签:

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注