今天发现系统内存不够的时候,居然会把docker的某些容器杀死
容器被杀了后,还启动不起来了,所以采用swap分区提高内存容量
restart启动不起来
failed to create task for container: AlreadyExists: task 27f269e189c86e83a: already exists
最后没管了了,直接换了个名字拉了个新容器
SWAP分区介绍
当 Linux 系统消耗完物理 内存时,非活动页面会被移动到 SWAP 空间。SWAP 空间可以采用专用的 SWAP 分区或以 SWAP 文件的形式存在。然而,在大多数情况下,在虚拟机中运行 Ubuntu 系统时,并不会自动创建 SWAP 空间
计算机的物理内存(RAM)被 Linux 内核划分为称为「页面」的块,将「页面」复制到预配置的次要存储设备(通常是 HDD 或 SSD)的动作就称为「交换」。预配置的专用空间称为「 SWAP 空间」,物理内存(RAM)和 SWAP 空间的总量称为虚拟内存。
在开始创建之前,请先使用以下命令检查您的 Ubuntu 系统是否已启用 SWAP 空间:
sudo swapon --show
查看 SWAP 空间
该列表会包含所有的 SWAP 空间,包括 SWAP 分区和 SWAP 文件。如果输出为空,则表示当前系统尚未启用 SWAP 空间。
虽然可能,但同一台 Linux 计算机上有多个 SWAP 空间的情况并不常见。
创建 SWAP 文件
与 SWAP 分区相比,SWAP 文件具有一个重要的优势,即文件大小可以轻松调整,而无需触及 磁盘分区来更改交换空间的大小。
在本节中,我们将创建一个新的 SWAP 文件,并将其添加到当前的交换池中。
1在「终端」中使用以下命令创建一个空白文件:
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
创建 SWAP 文件
- 文件大小计算为 1M X 2048 = 2G,要创建不同大小的文件,请更改相应的
count参数值。
/dev/zero是 Linux 系统中的一个特殊块设备,在每次读取时输出零字节。
- 可以使用其他工具(例如 fallocate)来创建文件,但在某些情况下,可能会引起问题。更详细的讨论可以在这篇 AskUbuntu 帖子中找到。
2使用以下命令设置正确的文件权限:
sudo chmod 600 /swapfile
3使用使用mkswap实用程序将文件格式化为 SWAP 空间:
sudo mkswap /swapfile
4使用以下命令激活 swap 文件并将其添加到交换池中:
sudo swapon /swapfile
5要让创建好的 SWAP 空间永久生效,需要将 swapfile 路径内容写入到/etc/fstab文件当中:
/swapfile swap swap defaults 0 0
配置 SWAP 文件永久生效
6使用swapon或free命令验证 SWAP 文件是否处于活动状态,如下所示:
sudo swapon --show
##或者
sudo free -h
大小建议与注意事项
-
分配多大合适? 一个比较通用的参考是:
-
物理内存小于 2GB:Swap 设为内存的 2 倍。
-
物理内存在 2-8GB 之间:Swap 设为与内存相同大小。
-
物理内存大于 8GB:Swap 设为 4GB 或更大。
其他的删除和调整 SWAP 空间直接参考这里
https://www.sysgeek.cn/ubuntu-swap-size/