首页 > 系统相关 >CentOS7下swap分区创建(添加),删除以及相关配置

CentOS7下swap分区创建(添加),删除以及相关配置

时间:2023-06-30 23:35:00浏览次数:43  
标签:1024 swappiness swapfile 分区 CentOS7 swap var

 

小叨下背景:笔者的服务器内存只有1g,少得可怜。之前使用apache,不堪忍受其过量的内存消耗,网站卡得想哭,数据库也不断地崩,无奈投入nginx的怀抱并且已经喜欢上了nginx,具体请看上文《CentOS7部署轻量级web服务器nginx+php》。

         然而过了几个月后数据库还是继续崩,经查询mysql日志还是因为内存吃不消,折腾几番发现mysql自身就不是省油的灯,一度占用了500M的内存------我捂住嘴巴不让自己哭出来,还顺便来了段Bbox。

        这两天我那谁一直在折腾RedHat安装Oracle数据,该数据库有一项要求就是需要一定空间的swap分区。虽然早有耳闻swap分区,而且笔者经常折腾windows下的虚拟内存(swap和虚拟内存是类似概念),却很惭愧一直没想到这个办法,于是------进入今天的主题:

在添加swap分区之前我们可以了解下当前系统swap是否存在以及使用情况,可用:

free -h 或 swapon -s
了解硬盘使用情况(一般/dev/vda1为挂载硬盘):

df -hal
1.添加swap分区
使用dd命令创建名为swapfile 的swap交换文件(文件名和目录任意):
dd if=/dev/zero of=/var/swapfile bs=1024 count=2097152
 或

dd if=/dev/zero of=/var/swapfile bs=1024 count=2048k
       科普:if(即输入文件,input file),of(即输出文件,output file)。dev/zero是Linux的一种特殊字符设备(输入设备),可以用来创建一个指定长度用于初始化的空文件,如临时交换文件,该设备无穷尽地提供0,可以提供任何你需要的数目。 bs=1024  :单位数据块(block)同时读入/输出的块字节大小为1024  个字节即1KB,bs(即block size)。count=2048000  :数据块(block)数量为2048000 ,即2048000个1KB。可以计算swap分区的容量为:1KB *2097152=1KB *1024(k)*1024*2=2097152=2G。(dd命令里的单位M表示1024*1024,k表示1024)。

        回车后,会执行2g的读写操作,系统会卡一段时间,耐心等待执行结果。

执行完毕,对交换文件格式化并转换为swap分区:

mkswap /var/swapfile
挂载并激活分区:
swapon /var/swapfile
执行以上命令可能会出现:“不安全的权限 0644,建议使用 0600”类似提示,不要紧张,实际上已经激活了,可以忽略提示,也可以听从系统的建议修改下权限:
chmod -R 0600 /var/swapfile
这时候可以用 free -h 或 swapon -s命令查看新swap分区是否正常添加并激活使用。

修改 fstab 配置,设置开机自动挂载该分区:
vim /etc/fstab
在fstab文件末尾追加如下内容后:wq!保存即可:
/var/swapfile   swap  swap  defaults  0  0
或直接对fstab进行echo追加:
echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab
2.删除某swap分区

先停止正在使用swap分区:
swapoff /var/swapfile
删除swap分区文件
rm -rf /var/swapfile
删除或注释掉我们之前在fstab文件里追加的开机自动挂载配置内容:
/var/swapfile   swap  swap  defaults  0  0

3.更改Swap配置(进阶级)
        swappiness值(0-100),系统对swap分区的依赖程度,越高则越倾向于使用swap分区。
        当然,高度依赖swap会造成物理内存远未使用完,就使用swap分区,我们知道swap分区性能远不如物理内存,这反而降低了系统性能,违背了我们创建swap分区的初衷。
         我们希望在物理内存即将满荷时再使用swap,这就决定了swappiness值一般为10-60为宜,固态硬盘可以偏高些。
查看当前的swappiness数值:
cat /proc/sys/vm/swappiness
修改swappiness值,这里以50为例。
sysctl vm.swappiness=50
若希望vm.swappiness=50永久生效,则需要修改sysctl配置文件,直接echo追加配置内容,重启系统后即可生效:
echo "vm.swappiness = 50" >> /etc/sysctl.conf
---------------------



标签:1024,swappiness,swapfile,分区,CentOS7,swap,var
From: https://blog.51cto.com/u_3369545/6595600

相关文章

  • centos7安装配置rocketmq
    1、下载地址::https://rocketmq.apache.org/download/ 2、报错:安装rockerMQ报错ERROR:PleasesettheJAVA_HOMEvariableinyourenvironment,Weneedjava(x64)  修改rocketmy的配置文件进入到解压后rocketMQ的bin目录,修改以下三个文件runbroker.sh、runserver.sh、tools.sh修......
  • 查centos7系统开机启动错误代码方法
    把rhgbquiet删掉,回车,按Ctrl+x重新引导系统,这样就能看到到底是哪一步卡住了,导致我们系统启动不起来。。 ......
  • 手动清除或刷新Linux的Swap分区
    物理内存接近饱和时,系统会自动将不常用的内存文件转储到Swap中,但Swap使用率达30%的时候对系统性能可能有一定影响。但当物理内存重新释放时,储存在Swap分区的其它应用不会重新回到物理内存中,所以会造成一定影响,此时可以考虑手动刷新Swap分区。一、SWAP开关:1、关闭SWAP一般用于大物理......
  • centos7安装nginx
    1.tar-zxvfnginx-1.6.2.tar.gz2.yuminstall-ygccpcre-develzlib-developensslopenssl-devel 3. ./configure4.删除-Werror,这个文件在/nginx-1.6.2/objs/Makefile 5. 删除下面这句话  文件在/src/os/unix/ngx_user.c ......
  • centos7安装java
    1.tar-zxvfjdk-8u11-linux-x64.tar.gz 2.编辑环境变量vim/etc/profile 3.source/etc/profile4.java-version ......
  • 云服务器centos7安装mysql8
    1.先去官网准备好几个安装包: 2.tar-xvfmysql-8.0.26-1.el8.x86_64.rpm-bundle.tar 3.可能需要卸载系统中自带的mariadbrpm-qa|grepmariadb rpm-e--nodepsmariadb-connector-c-3.1.11-2.oc8.1.x86_64rpm-e--nodepsmariadb-connector-c-config-3.1.11-2.oc8.1.......
  • centos7使用rpm方式安装mysql
    --使用rpm安装mysql的默认目录:1、数据库目录/var/lib/mysql/2、配置文件/usr/share/mysql(mysql.server命令及配置文件)3、相关命令/usr/bin(mysqladminmysqldump等命令)4、启动脚本/etc/rc.d/init.d/(启动脚本文件mysql的目录) ***********************************************......
  • MySQL分区表各个分区如何创建在不同目录
     MySQL分区表各个分区如何创建在不同目录 分区表无法创建在共享表空间(系统表空间,通用表空间),只能放在不同的独立表空间上。以下是分区表不同分区放在不同目录的示例:CREATETABLEzkm.employees(idINTNOTNULL,fnameVARCHAR(30),lnameVARCHAR(30),......
  • centos7挂载u盘
    1、插入U盘后,使用命令查看u盘路径然后使用mount进行挂载。 ......
  • centos7系统root无法通过su切换到某个普通用户 原创
    1、centos7系统root无法通过su切换到某个普通用户https://blog.51cto.com/wutengfei/2063716centos7系统root无法通过su切换到某个普通用户故障原因今天由于同事的误操作,在起某个服务的时候,指定错了参数,导致系统线程被用完。故障现象[root@data~]#su-siterecoffline``su:faile......