一般我们在购买云服务器(例如:阿里云ECS、腾讯云服务器)的时候,选择 CentOS 7 系统之后,登录系统,发现 swap 大小为 0(即没有分配)。

如果我们想在该 服务器上安装 Oracle 数据库,那么必须要给系统分配一定空间的 swap 分区。

SWAP 分区 就是 Linux 系统下的虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间(也就是 SWAP 分区)虚拟成内存来使用。

一、查看系统的 swap 分配情况

在添加 swap 分区之前,我们先查看当前系统 swap 是否存在及其使用情况,命令如下:

free -m
或者
swapon -s

例如:

# 这是一个腾讯云服务器
[root@VM_0_5_centos ~]# free -m
total used free shared buff/cache available
Mem: 3789 99 3229 0 461 3463
Swap: 0 0 0
[root@VM_0_5_centos ~]# swapon -s
[root@VM_0_5_centos ~]#

了解硬盘的使用情况:

df -hal
或者
fdisk -l

二、swap 分区的创建(添加/扩展)、删除及其他维护

1、添加 swap 分区

(1)使用 dd 命令创建 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 的读写操作,系统会卡一段时间,耐心等待执行结果。

(2)对交换文件格式化并转换为 swap 分区

第1步执行完毕后,对交换文件格式化并转换为 swap 分区。

# 格式化交换文件
mkswap /var/swapfile # 挂载并激活分区
swapon /var/swapfile

执行以上命令可能会出现:“不安全的权限0644,建议使用 0600” 类似提示,不要紧张,实际上已经激活了,可以忽略提示;也可以听从系统的建议修改下swap 文件的权限:

chmod -R 0600 /var/swapfile

此时,就可以使用 free -m 或者 swapon -s 命令查看到 swap 分区是否正常添加并激活使用。

      备注: 不能直接使用 mount 命令挂载 swap 分区,因为 swap 分区是没有挂载点的。

(3)设置开机自动挂载该分区

修改 fstab 文件,设置开机自动挂载该分区:

# 命令:
vim /etc/fstab # 在改文件末尾添加如下内容后,保存即可:
/var/swapfile swap swap defaults 0 0

或者直接执行一条 echo 命令即可追加:

echo  "/var/swapfile   swap  swap  defaults  0  0" >>  /etc/fstab

例子:

[root@VM_0_5_centos ~]# swapon -s
[root@VM_0_5_centos ~]# free -m
total used free shared buff/cache available
Mem: 3789 96 120 0 3572 3413
Swap: 0 0 0 [root@VM_0_5_centos ~]# dd if=/dev/zero of=/var/swapfile bs=1024 count=4096k
4194304+0 records in
4194304+0 records out
4294967296 bytes (4.3 GB) copied, 32.1646 s, 134 MB/s [root@VM_0_5_centos ~]# ll /var/swapfile
-rw-r--r-- 1 root root 4294967296 Dec 26 17:54 /var/swapfile [root@VM_0_5_centos ~]# mkswap /var/swapfile
Setting up swapspace version 1, size = 4194300 KiB
no label, UUID=500e44db-d66d-4c4d-bb78-0dfa87eb6053 [root@VM_0_5_centos ~]# swapon /var/swapfile
swapon: /var/swapfile: insecure permissions 0644, 0600 suggested. [root@VM_0_5_centos ~]# free -m
total used free shared buff/cache available
Mem: 3789 100 116 0 3573 3410
Swap: 4095 0 4095
[root@VM_0_5_centos ~]# swapon -s
Filename Type Size Used Priority
/var/swapfile file 4194300 0 -1

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,这就决定了 swappines 值一般为 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

示例:(在 CentOS 7.5 下查看默认 swappiness 值)

[root@VM_0_5_centos ~]# cat /proc/sys/vm/swappiness
30

CentOS7 下 swap 分区的创建、删除及相关配置的更多相关文章

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

    在添加swap分区之前我们可以了解下当前系统swap是否存在以及使用情况,可用: 1. free –h 或 swapon –s 了解硬盘使用情况(一般/dev/vda1为挂载硬盘): 1. df –h ...

  2. Centos文本方式安装情况下lvm分区的创建

    作者:马 岩(Furzoom) (http://www.cnblogs.com/furzoom/)版权声明:本文的版权归作者与博客园共同所有.转载时请在明显地方注明本文的详细链接,未经作者同意请不要删 ...

  3. Centos7 增加swap分区的内存大小

    Centos7 增加swap分区的内存大小 对 swap 空间的适当大小实际上取决于您的个人偏好和您的应用程序要求.通常,等于或双倍于系统内存的量是一个很好的选择 添加swap分区使用dd命令创建/h ...

  4. Centos7调整swap分区

    如何让服务器响应更快?如何避免应用出现内存不足的错误?最简单的方法就是增加交换空间.Swap是存储盘上的一块自留地,操作系统可以在这里暂存一些内存里放不下的东西. 这从某种程度上相当于增加了服务器的可 ...

  5. CentOS下SWAP分区建立及释放内存详解

    方法一: 一.查看系统当前的分区情况: >free -m 二.创建用于交换分区的文件: >dd if=/dev/zero of=/whatever/swap bs=block_size ( ...

  6. Centos7 设置Swap分区

    1.使用dd命令创建一个swap交换文件 dd if=/dev/zero of=/home/swap bs=1024 count=1024000 2.制作为swap格式文件: mkswap /home ...

  7. Linux下swap分区多大才合适的问题探讨

    说明: 1.这个话题在每个Linux发行版中都各不相同,且在当下内存硬盘的时代下,再组个磁盘阵列之后速度相当. 2.我觉得硬盘大的情况下,有多大搞多大,我只要控制内存的使用率在99%时才使用swap, ...

  8. Centos7 开启swap分区

    阿里云购买的机器,默认不会开启swap分区,如有需要,需自行开启. 阿里当前的做法是: 1.不创建swap分区,由镜像决定 2.将vm.swappiness设定为0,即永不使用swap分区 开启swa ...

  9. Linux 下 swap 分区及作用详解

    我们在安装系统的时候已经建立了 swap 分区.swap 分区是 Linux 系统的交换分区,当内存不够用的时候,我们使用 swap 分区存放内存中暂时不用的数据.也就是说,当内存不够用时,我们使用 ...

随机推荐

  1. 简介&目录

    欢迎来到 MK 的博客鸭~ 这里会被我用来发一些OI算法.数据结构的学习笔记,各种游记和其他的一些内容,希望大家多多关照! ε≡٩(๑>₃<)۶ 然后目录就也放这里⑧:

  2. 记录一个基于Java的利用快排切分来实现快排TopK问题的代码模板

    使用快排切分实现快排和TopK问题的解题模板 import java.util.Arrays; public class TestDemo { public static void main(Stri ...

  3. basicInterpreter1.02 增加对for循环的支持

    源码下载:https://files.cnblogs.com/files/heyang78/basicInterpreter102-20200531-2.rar 输入: for x= to print ...

  4. leetcode刷题-82.删除排序链表中的重复元素 II

    题目 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字. 示例 1: 输入: 1->2->3->3->4->4->5输出: 1- ...

  5. Euclid's Game(POJ 2348)

    原题如下: Euclid's Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10832   Accepted: 4 ...

  6. oracle数据库备份、还原命令及常见问题(待补充)

    1.oracle数据库的备份:先查空表——将结果全选复制为insert语句——将语句执行后导出 先select 'alter table '||table_name||' allocate exten ...

  7. [程序员代码面试指南]第9章-在两个长度相等的排序数组中找到第k小的数(二分)

    题目 给定两个有序数组arr1和arr2,再给定一个整数k,返回所有的数中第k小的数. 题解 利用题目"在两个长度相等的排序数组中找到第上中位数"的函数 分类讨论 k < 1 ...

  8. canvas学习作业,模仿做一个祖玛的小游戏

    这个游戏的原理我分为11个步骤,依次如下: 1.布局, 2.画曲线(曲线由两个半径不同的圆构成) 3.画曲线起点起始圆和曲线终点终止圆 4.起始的圆动起来, 5.起始的圆沿曲线走起来 6.起始的圆沿曲 ...

  9. 数据库:浅谈DML、DDL、DCL的区别

    简介 SQL是一个标准的数据库语言,是面向集合的描述性非过程化语言.它功能强,效率高,简单易学易维护(迄今为止,我还没见过比它还好学的语言).然而SQL语言由于以上优点,同时也出现了这样一个问题:它是 ...

  10. Linux入门到实战

    关注公众号 cxytester 获取第一手资讯. 1. 全是干货-Linux命令大全 1.1 线上查询及帮助(1个) help 1.2 文件目录及操作(12个) ls tree pwd mkdir r ...