首页 > 其他分享 >在云服务器增加swap分区

在云服务器增加swap分区

时间:2023-03-10 11:24:54浏览次数:58  
标签:文件 swapfile 分区 sudo swap 服务器 我们 Swap

问题:在云服务器部署zabbix时会报swap错误

解决方法:添加swap分区

介绍

避免应用程序内存不足错误的最简单方法之一是为服务器添加一些Swap空间。Swap分区在系统的物理内存不够用的时候,把物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。(注意:虽然我们建议对使用传统机械硬盘驱动器的系统进行交换,但对于SSD来说,使用Swap可能会导致硬件随着时间的推移而出现问题。出于这种考虑,我们不建议在任何其他使用SSD存储上启用Swap。这样做会影响底层硬件的可靠性。本教程更建议采用传统机械硬盘的用户使用。)

第一步、检查系统的交换信息

我们可以先来检查一下系统是否已经有可用的Swap空间。我们可以有多个Swap文件或Swap分区,但通常来讲一个便足够了。

我们可以通过输入以下内容来查看系统是否已配置Swap:

sudo swapon --show
如果您没有收到任何输出,这意味着您的系统当前没有可用的Swap空间。

您可以使用free命令证有没有活动的swap:

free -h
              total        used        free      shared  buff/cache   available
Mem:           985M         84M        222M        680K        678M        721M
Swap:            0B          0B          0B

正如您在输出的Swap行中所看到的,系统上没有正在活动的swap。

第二步、检查硬盘驱动器分区上的可用空间

在我们创建swap文件之前,我们将检查当前的磁盘使用情况,以确保我们有足够的空间。通过输入:

df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            481M     0  481M   0% /dev
tmpfs            99M  656K   98M   1% /run
/dev/vda1        25G  1.4G   23G   6% /
tmpfs           493M     0  493M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           493M     0  493M   0% /sys/fs/cgroup
/dev/vda15      105M  3.4M  102M   4% /boot/efi
tmpfs            99M     0   99M   0% /run/user/1000

Mounted on列中的/dev/vda1是我们的磁盘。在这个例子中我们有足够的空间(仅有1.4G被使用)。

对swap空间的适当大小实际上取决于您的个人偏好和您的应用程序要求。通常,等于或双倍于系统内存的量是一个很好的选择。如果您只是将其用作RAM后备,那么你的swap分区尽可能不要超过4G。

第三步、创建Swap分区文件

我们可以在文件系统上创建一个swap分区。我们将在根/目录中分配我们想要调用的swap大小的文件swapfile

创建交换文件的最佳方法是使用fallocate。此命令将创建指定大小的文件。

由于我们示例中的服务器具有1G的RAM,因此我们将在本教程中创建1G文件:

sudo fallocate -l 1G /swapfile

我们可以通过输入以下内容来验证其是否保留了正确的空间量:

ls -lh /swapfile
-rw-r--r-- 1 root root 1.0G Apr 25 11:14 /swapfile

第四步、启用Swap分区

我们需要将swap文件转换为swap分区。首先,我们需要锁定文件的权限,以便只有具有root权限的用户才能读取内容。

通过输入以下内容使该文件只能由root访问:

sudo chmod 600 /swapfile

输入以下命令验证权限更改:

ls -lh /swapfile
-rw------- 1 root root 1.0G Apr 25 11:14 /swapfile

如您所见,只有root用户启用了读写标志。

我们现在可以通过输入以下内容将文件标记为swap空间

sudo mkswap /swapfile
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf

标记文件后,我们可以启用swap文件:

sudo swapon /swapfile

输入以下内容验证交换是否可用:

sudo swapon --show
NAME      TYPE  SIZE USED PRIO
/swapfile file 1024M   0B   -2

我们可以用free命令再次检查:

free -h
              total        used        free      shared  buff/cache   available
Mem:           985M         84M        220M        680K        680M        722M
Swap:          1.0G          0B        1.0G

我们的swap已成功设置,我们的操作系统将在必要时使用它。

第五步、永久化swap文件

我们已启用当前会话中的swap文件。但是,如果我们重新启动的话,服务器将不会自动保留swap设置。我们可以通过将交换文件添加到我们的/etc/fstab来进行更改。

为了避免出现任何问题,先备份/etc/fstab文件:

sudo cp /etc/fstab /etc/fstab.bak

输入以下内容,将swap文件信息添加到/etc/fstab文件末尾:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

接下来,我们将调整我们的swap空间。

第六步、调整您的Swap设置

您可以配置一些选项,这些选项会在处理swap时对系统的性能产生影响。

调整Swappiness参数

swappiness参数主要配置系统将数据从RAM交换到交换空间的频率。该参数的值是介于0和100之间的百分比。

当值接近于零时,除非绝对必要,否则内核不会将数据交换到磁盘。请记住,与swap文件的交互是“费时的”,因为它们比与RAM的交互花费更长的时间,并且它们可能导致性能的显着降低。

当该值接近100时,其将尝试将更多数据放入交换中以努力保留更多的RAM空间。我们可以通过输入以下内容来查看当前的swappiness值:

cat /proc/sys/vm/swappiness
60

对于服务器本身来说,您可能希望这个数值更接近于0。我们可以使用sysctl命令将swappiness设置为不同的值。

例如,要将swappiness设置为10,我们可以输入:

sudo sysctl vm.swappiness=10
vm.swappiness = 10

我们可以通过在/etc/sysctl.conf文件中添加以下行来自动设置此值:

sudo nano /etc/sysctl.conf

在底部,您可以添加:

vm.swappiness=10

完成后保存并关闭文件。

调整缓存压力设置

您可能想要修改的另一个相关值是vfs_cache_pressure。这将关系到系统选择多少缓存inodedentry信息。

您可以通过proc命令来查看当前值:

cat /proc/sys/vm/vfs_cache_pressure
100

我的设置系统会很快地从缓存中删除inode信息。我们可以通过输入以下内容将其设置为更保守的值(如50):

sudo sysctl vm.vfs_cache_pressure=50
vm.vfs_cache_pressure = 50

同样,这仅适用于我们当前的会话。我们可以通过将其添加到配置文件来改变它,就像我们使用swappiness设置一样:

sudo nano /etc/sysctl.conf

在底部,添加指定新值的行:

vm.vfs_cache_pressure=50

完成后保存并关闭文件。

标签:文件,swapfile,分区,sudo,swap,服务器,我们,Swap
From: https://www.cnblogs.com/SanRiYue/p/17202742.html

相关文章

  • PlatformIO 中添加修改 ESP32C3 的分区表解决编译内存不足问题
    ESP32C3有4M的flash,但是在PlatformIO选择esp32-c3-devkitm-1开发板的时候只默认分配了1310720byte,还有很大一部分没有使用。解决方案一:在工程文件夹中建一个.c......
  • ssh命令 – 安全的远程连接服务器
    ssh命令–安全的远程连接服务器–Linux命令大全(手册)(linuxcool.com)语法格式:ssh[参数]远程主机常用参数:参数解释-p<端口>指定远程服务器上的端口......
  • [ssh] 本地访问远程服务器上的ui页面
    [ssh]本地访问远程服务器上的ui页面问题:在我们使用某些系统(如Spark)时,系统本身会为我们提供一个ui界面,这个ui界面会默认开启在一个本地端口上(如localhost:8080)。通过这个u......
  • Linux高并发服务器之Linux多线程开发
    本文源自C++高薪面试项目的学习笔记,主要记录Liunx多线程的学习,主要知识点是线程概述等基础概念以外,还有线程相关Liunx系统函数以及对应练手代码,除此之外还有线程同步问题的......
  • 用VPS云服务器部署ChatGPT
    用VPS云服务器部署ChatGPT前言chatgpt做为近期爆火的人工智能服务,其账号和api接口的价格水涨船高。这里给出一个粗略的api部署方法,仅供参考。文章结构:注册ChatGPT......
  • 问题记录:jss文件服务器定时任务下载失败
    jss文件服务器定时任务下载失败报错信息:客户端http连接池获取连接超时问题背景:每5min跑一次定时任务,从文件服务器下载文件更新内存,但是更新内存前会拿文件更新时间进行......
  • 服务器开发注意的问题
    1.tcp的11种状态2.父进程处理并发进程,不能有僵死进程SIGCHLD信号while(waitpid(-1,NULL,WNOHANG)>0):3.SIGPIPE忽略它4.close(conn)shutdown().........
  • .grf 读入报表模板失败,请检查网络连接、URL及读取权限,错误提示:网络服务器响应不成功
    http://xxx.xxx.xxx.xxx:xxx/Pages/QySqdInfo/../../GrfFile/Qianyue/qianyue_3303.grf从'http://xxx.xxx.xxx.xxx:xxx/Pages/QySqdInfo/../../GrfFile/Qianyue/qianyue_330......
  • Ubuntu搭建SFTP服务器
    Ubuntu搭建SFTP服务器Ubuntu默认只安装openssh-client,需要手动安装openssh-server或者sftp-server。安装SFTP服务#sudoapt-getinstallsftp-serversudoapt-getinsta......
  • 银河麒麟服务器V10 SP3 安装ZooKeeper
    服务器zookeeper安装一、软件介绍ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布......