如何设置OpenStack节点Swap分区

Swap分区介绍

Swap分区,即交换分区。它的功能就是在物理内存不够的情况下,操作系统先把内存中暂时不用的数据,存到硬盘的交换空间,腾出内存来让别的程序运行,当程序需要用到交换空间内的数据的时候,操作系统再将数据从交换分区恢复到物理内存中。这样,系统总是在物理内存不够时,才进行Swap交换。

如何设置Swap分区大小

以上是SWAP 交换分区的作用。 实际上,我们更关注的应该是SWAP分区的大小问题。 设置多大才是最优的。如下,提供了两种方案。

方案一

在Linux系统中,我们可以参照Red Hat公司为RHEL 7推荐的SWAP空间的大小划分原则,在你没有其他特别需求时,可以作为很好的参考依据。

  • 内存小于2GB,推荐2倍于内存的swap空间;
  • 内存2GB~8GB,推荐和内存大小一样的swap空间;
  • 内存8GB~64GB,推荐至少4GB的swap空间;
  • 内存大于64GB,推荐至少4GB的swap空间。

原文链接

实际上,系统中交换分区的大小并不取决于物理内存的量,而是取决于系统中内存的负荷,所以在安装系统时要根据具体的业务来设置SWAP的值。

在OpenStack中,默认的CPU超配比例是1:16,内存超配比例是1:1.5。当宿主机使用swap交换分区来为虚拟机分配内存的时候,则虚拟机的性能将急速下降。生产环境上不建议开启内存超售(建议配置比例1:1)。另外,建议设置nova.conf文件中的reserved_host_memory_mb 参数,即内存预留量(建议至少预留4GB),保证该部分内存不能被虚拟机使用。

方案二

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

1
2
# cat /proc/sys/vm/swappiness
60

该值默认值是60。

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

由于,现在服务器的内存一般是上百GB,所以我们可以把这个参数值设置的低一些(如10-30之间),让操作系统尽可能的使用物理内存,降低系统对swap的使用,从而提高宿主机系统和虚拟机的性能。

永久性修改

1
# echo 'vm.swappiness=10' >>/etc/sysctl.conf

保存,重启就生效了。

查看系统当前SWAP 空间大小

1
# free –h

小结

为了保证主机系统和应用程序的稳定运行(内存不足或泄露,易导致系统或应用崩溃),建议在实际使用过程中,服务器仍然需要创建一定的Swap分区。其分区大小可以结合以上两种方案进行设置,已达到最佳效果。

FAQ

1.释放SWAP 空间

假设我们的系统出现了性能问题,我们通过vmstat命令看到有大量的swap,而我们的物理内存又很充足,那么我们可以手工把swap 空间释放出来。让进程去使用物理内存,从而提高性能。

我们对swap 空间的释放,可以通过关闭swap分区,再启动swap 分区来实现。

1
2
3
# vmstat 1 5      // 1表示每隔1秒采集一次服务器状态,5表示只采集5次
# free -h
# swapon -s //显示交换分区的使用状况

关闭swap 交换分区:

1
2
# swapoff /dev/sda2
# swapon -s

启用swap分区:

1
# swapon /dev/sda2

验证状态:

1
# swapon -s

Swap分区的拓展和缩小:https://www.e-learn.cn/content/linux/339010

0%