前言
之前租了个三年的丐版阿里云,1核2G内存。最近想搭建个ES集群,记过内存一直不足,经常导致系统崩溃!程序猿,懂得都懂,既不想加钱升级,也不想就此放弃,那就玩个性能差的,用时间换空间吧!!!
当系统的内存不足时,操作系统会使用硬盘上的空间来充当虚拟内存。这种硬盘上的虚拟内存被称为swap。在本文中,我们将了解什么是swap,以及如何使用和管理它。
Swap
什么是Swap
Swap是一种虚拟内存,它允许操作系统将内存页面移动到硬盘上,以释放物理内存以供其他用途使用。当系统需要更多的内存时,它可以将一些不常使用的内存页面从RAM中移到swap分区中,并将空出来的内存页面用于重要任务。这意味着,尽管您的系统只有有限的RAM,但您可以使用swap来模拟更大的内存容量。
如何创建Swap分区
在Linux系统中,通常使用磁盘分区作为swap分区。要创建一个新的swap分区,您可以按照以下步骤进行操作:
-
检查系统是否已经存在swap分区:
[root@Genterator opt]# sudo swapon --show
如果输出为空,则表示系统没有启用swap分区。
-
创建一个新的swap分区文件:
[root@Genterator opt]# sudo fallocate -l 4G /swapfile
这将创建一个名为/swapfile的2GB大小的文件。
-
将文件格式化为swap:
[root@Genterator opt]# sudo mkswap /swapfile mkswap: /swapfile: warning: wiping old swap signature. Setting up swapspace version 1, size = 4 GiB (4294963200 bytes) no label, UUID=b008a302-3d9a-4b9b-9c09-fc1a0eef1987
-
启用新的swap分区:
[root@Genterator opt]# sudo swapon /swapfile
-
检查是否启用成功
[root@Genterator opt]# sudo swapon --show NAME TYPE SIZE USED PRIO /swapfile file 4G 0B -2
注意:
永久设置swap分区:此创建为临时分区,重启系统后,分区就会消失, 如果想永久swap分区,需设置永久 -
永久设置swap分区:
将以下行添加到/etc/fstab文件中:/swapfile swap swap defaults 0 0
如何调整Swap大小
如果您发现系统上的swap分区不足,请按照以下步骤来扩展或缩小swap分区:
-
禁用swap分区:
[root@Genterator opt]# sudo swapoff /swapfile
-
调整swap文件大小:
[root@Genterator opt]# sudo fallocate -l <new-size>G /swapfile
其中,是您要设置的新的swap分区大小。
-
将文件格式化为swap:
[root@Genterator opt]# sudo mkswap /swapfile
-
启用新的swap分区:
[root@Genterator opt]# sudo swapon /swapfile
-
更新/swapfile在/etc/fstab文件中的条目以反映新的大小。
如何监视Swap使用情况
要查看系统上的swap使用情况,请执行以下命令:
[root@Genterator opt]# sudo swapon --show
此命令将显示系统中所有启用的swap分区的信息。
要检查使用的swap空间量,请执行以下命令:
[root@Genterator opt]# sudo free -h
此命令将显示系统上可用的物理内存,已使用的内存和正在使用的swap空间量等信息。
结论
Swap分区可在RAM不足时充当虚拟内存。在Linux系统中,您可以使用磁盘分区作为swap分区,并通过调整其大小来优化系统性能。使用上述方法,您可以轻松地创建、调整和监视swap分区,以确保系统具有足够的内存容量来运行所有任务。
如何设置Swap使用率
vm.swappiness
是一个 Linux 内核参数,它控制了系统在内存不足时会使用多少 swap 空间。默认情况下,vm.swappiness
的值为 60
,这意味着系统会尽可能地使用 swap 空间,以便释放物理内存。但是,在某些情况下,这可能会对性能产生负面影响,例如在使用大量内存的应用程序(如 Elasticsearch)时。因此,将 vm.swappiness 的值设置为 1 可以降低系统使用 swap 空间的程度,从而提高性能。但是,这也意味着系统可能会更快地耗尽物理内存,因此你需要根据实际情况权衡利弊,并进行适当的调整。
- 临时设置
在主机上使用 sysctl 命令来更改 vm.swappiness 参数的值。例如,要将 vm.swappiness 的值设置为 10,可以执行以下命令:sysctl vm.swappiness=10
- 永久设置
如果你想要永久更改 vm.swappiness 参数的值,可以编辑 /etc/sysctl.conf 文件,并添加以下行:
然后保存文件并重新加载配置:vm.swappiness=10
这样就可以将 vm.swappiness 参数的值设置为 10 并使其永久生效了。sudo sysctl -p