Linux swap(缓存)的创建与配置

在Linux下,swap的作用类似Windows系统下的“虚拟内存”。当物理内存不足时,拿出部分硬盘空间当SWAP分区(虚拟成内存)使用,从而解决内存容量不足的情况。Linux下的swap有两种实现形式,一种是通过某个物理磁盘分区来实现swap,另一种是通过虚拟内存文件来实现swap


物理磁盘分区来实现swap

通过分区软件创建一个分区

分区类型fdisk下为82,gdisk下为8200,partep分区标记没有定义swap,其实分区后不更改分区类型也行测试也可以用,但为了在分区工具下方便查看最好还是把分区类型改成swap对应的分区类型,本人理解分区类型就是分区软件下用来描述分区所要承载的文件系统的类型,比如分区类型为83表示为linxu分区,用于格式化成ext3 ext4等linux文件系统,分区创建的方法这里就不写了前面有分区创建的方法。

使用mkswap命令把分区格式化为swap分区

root@debian:~# mkswap /dev/sdb1
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)     #交换分区的容量为1G
no label, UUID=47fe2c83-c4b9-4ee5-ad91-4a9642f66df5
root@debian:~#
**使用swapon命令使交换分区/dev/sdb1生效**

root@debian:~# free -h            #查看没加前swap容量
         total    used   free    shared    buff/cache   available
Mem:    2.0G    250M    1.4G  8.5M     311M      1.6G
Swap:    2.0G      0B          2.0G       #没加前容量为2G

root@debian:~# swapon /dev/sdb1        #使新添加的swap生效
root@debian:~# free -h             #查看添加完后的容量
         total    used    free    shared   buff/cache   available
Mem:    2.0G     250M      1.4G   8.5M         311M      1.6G
Swap:   3.0G     0B        3.0G       #添加完容量变成了3G

root@debian:~#

Linux swapon命令参数及用法

swapon 是开启swap,相对的便有一个关闭swap的指令,swapoff

swapon [选项]   [设备]

-h   显示帮助信息
-V   显示版本信息
-v   显示详细模式
-s   显示swap的使用情况,可以查看所有激活的swap
-a   将/etc/fstab文件中所有设置为swap的设备启用
-p   设定优先权,你可以在0到32767中间选一个数字给他。或是在 /etc/fstab 里面加上 pri=[value] ([value]就是0~32767中间一个数字),然后你就可以很方便的直接使用 swapon -a 来启动他们,而且有优先权设定。

  

举例:显示swap的使用情况

root@debian:~# swapon -s
Filename    Type     Size     Used   Priority
/dev/sda5   partition   2095100    0     -1      #随系统安装一起创建的swap优先级为1
/dev/sdb1      partition   1048572        0     -2     #后创建的swap优先级为2,类型为分区,大小为1G
root@debian:~#

Linux swapoff命令参数及用法

swapon [选项]   [设备]

-a   将/etc/fstab文件中所有设置为swap的设备关闭

举例:

root@debian:~# swapoff /dev/sdb1     # 关闭swap分区/dev/sdb1
root@debian:~# swapon -s
Filename    Type      Size     Used   Priority
/dev/sda5   partition   2095100    0     -1
root@debian:~#

将新添加的交换分区添加到/etc/fstab文件中使之开机启动

根据不同的发行版将下面的内容添加到/etc/fstab中,添加完后最好用swapon -a命令查看添加的是否有问题

UUID=47fe2c83-c4b9-4ee5-ad91-4a9642f66df5   none    swap    sw   0    0 #Debian9.5默认的格式,UUID为对应的交换分区UUID

UUID=47fe2c83-c4b9-4ee5-ad91-4a9642f66df5    swap  swap   defaults    0   0 #CentOS7-1810与openSUSE15默认的格式,UUID为对应的交换分区UUID

二、使用文件来实现swap(常用)

当系统内没有剩余可用的分区时我们可以用在Linux的某个目录下创建一个空白文件,通过把这个文件格式化成swap从而实现创建swap的过程。

创建Swap分区

使用dd来创建一个空的swap文件(4G为例):

dd if=/dev/zero of=/swapfile count=4096 bs=1M

其中 dd 命令的内容可以按自己的需求修改:

if =输入文件(或设备名称)。
of =输出文件(或设备名称)。
ibs = bytes 一次读取bytes字节,即读入缓冲区的字节数。
skip = blocks 跳过读入缓冲区开头的ibs*blocks块。
obs = bytes 一次写入bytes字节,即写入缓冲区的字节数。
bs = bytes 同时设置读/写缓冲区的字节数(等于设置ibs和obs)。
cbs = byte 一次转换bytes字节。
count=blocks 只拷贝输入的blocks块。

然后你应该会看到如下的反馈:

QQ截图20200215122541.png

然后我们来验证一下是否已经生成完成:

ls / | grep swapfile

QQ截图20200215122639.png

如果正常生成的话你可以看到 swapfile 文件

激活Swap分区

Swap分区需要读写的权限,所以运行命令授权:

chmod 600 /swapfile

查看授权是否成功:

ls -lh /swapfile

如果成功的话你可以看到如下反馈:

-rw------- 1 root root 4.0G 2月  15 12:25 /swapfile

然后挂载Swap分区:

mkswap /swapfile

你应该能看到如下的反馈:

正在设置交换空间版本 1,大小 = 4 GiB (4294963200  个字节)
无标签, UUID=e62ee92f-d04a-4b63-a3f0-4cf18e9f085e


Turn swap on

完成之前的步骤之后你的swap分区已经可以使用了,我先只要打开它就好:

swapon /swapfile

这时候你可以用 free 命令再次查看Swap分区是否已经开始运行

ubuntu@LS-RPI:~$ free -m
              总计         已用        空闲      共享    缓冲/缓存    可用
内存:        3791         376        2769           5         645        3354
交换:        4095           0        4095

QQ截图20200215123923.png

如果 Swap 空间不是 0 就说明你成功了

开机启动设置

一般而言Swap是没有开机启动的,所以你需要编辑/etc/fstab 文件,我一般用 vi,你也可以用nano或者vim达到同样的效果

vi /etc/fstab

在末尾加上如下内容:

/swapfile   none    swap    sw    0   0



一键增加swap空间脚本(小白推荐)

运行脚本:

wget -N --no-check-certificate https://raw.githubusercontent.com/867342200/Swap/master/swap.sh && chmod +x swap.sh && sudo bash swap.sh
#!/bin/bash
echo -e "\033[33m Your current swap is \033[0m"
free -h
mkdir /SwapDir
cd /SwapDir
dd if=/dev/zero of=/SwapDir/swap bs=1M count=4096 #这里增加的空间是4096MB
chmod 0600 swap
mkswap /SwapDir/swap #把这个分区变成swap分区
swapon /SwapDir/swap #把刚建的swap分区设成为有效状态
myFile=/etc/fstab.bak 
cd /etc
if [ -f "$myFile" ];then
rm -rf fstab.bak #删除之前的备份
else
cp /etc/fstab /etc/fstab.bak #备份fstab
fi
echo "/SwapDir/swap swap swap defaults 0 0">>/etc/fstab #增加新的swap开机自动启动
echo -e "\033[31m Done\!Congratulation\!System swap add successful\! \033[0m"
echo -e "\033[33m Your system swap is \: \033[0m"
free -h

摘自转载:

Linux swap的创建与配置 - pipci - 博客园

在Linux下添加|修改Swap分区(虚拟内存)教程 | 伪技术の宅

一键增加swap空间脚本_运维_耕耘实录-CSDN博客

Last modification:February 15th, 2020 at 12:53 pm
如果觉得我的文章对你有用,请随意赞赏

Leave a Comment