一、内存交换分区(swap)
  • 概念:存在硬盘中的一个分区,用来暂时存放内存中的数据
  • 功能与特点
    • 功能:CPU读取的数据都是来自于内存,如果内存不足的时候,为了让后续的程序可以顺利运行,就会将暂时不使用的程序与数据挪到内存交换分区中,这样内存就会空出来给需要的程序加载使用
    • 特点:如果硬件的设备资源足够的话,一般用不到内存交换分区。如果物理内存不足时,会使用到内存交换分区。所以早期安装Linux的时候,会使用到两个硬盘分区,一个是根目录,一个是内存交换分区
    • 特点:内存交换分区默认处于停用状态,可以使用swapon命令启用或者写入到/etc/fstab配置文件中进行自动启用
    • 一般来讲,swap 分区容量应大于物理内存大小,建议是内存的两倍,但不超过 2GB
  • 何时使用到内存交换分区?
    • 目前主机的内存一般都在4GB以上,一般使用不到内存交换分区。但是服务器/工作站等需要,因为服务器/工作站有时可能会爆发出大量的网络请求,此时就需要内存交换分区来缓冲一下内存的使用量
    • 如果你的主机支持电源管理模式,也就是说你的Linux主机可以进入休眠模式,那么,运行当中的程序状态会被记录到内存交换区,以作为唤醒主机的状态依据
    • 另外,某些程序在运行时,可能会利用内存交换分区的特性来存放一些数据
    • 综上所述,内存交换分区还是需要建立的,但是不需要建立太大
  • 内存交换分区的创建,有两种方式可以创建
    • 第一种:使用物理内存创建内存交换分区
    • 第二种:使用文件创建内存交换分区
二、相关命令

mkswap命令

  • 功能:格式化swap文件系统
  • 格式:
 mkswap [options] device [size]

swapon命令

  • 功能:启动交换分区、观察交换分区信息等(与系统格式化mount命令很相似)
  • 格式:
swapon [options] [specialfile...]

swapoff [-va] [specialfile...]
  • 例如:
    • ①启用交换分区:swapon  设备文件名
    • ②查看当前系统处于使用状态的交换分区信息:swapon -s
    • ③根据/etc/fstab配置文件的内容,将未自动启动的交换分区进行启用:swapon -a

swapoff命令

  • 功能:与swapon命令相反,此命令是将内存交换分区关闭使用
  • 格式:
swapon [options] [specialfile...]

swapoff [-va] [specialfile...]
三、使用物理内存创建内存交换分区
  • 步骤:
    • 第一步:划分一个新的分区。使用gdisk/fdisk命令在磁盘上划分出一个分区给系统作为内存交换分区
    • 第二步:格式化。使用mkswap对分区进行格式化
    • 第三步:启动swap设备。使用swapon命令
    • 第四步(自选):设置开机自动启动。将信息写入/etc/fstab文件中
    • 第四五(自选):观察状态。使用free与swapon -s命令观察内存的使用量

演示案例

  • 第一步:划分出一个新的分区。因为我的Linux系统有过一个swap分区了,所以不再进行演示。可以根据自己磁盘格式,使用gdisk与fdisk执行n命令划分一个新的分区,交换分区大小自己设置(与普通磁盘分区的方法一模一样)
gdisk /dev/sda
n
w
y
partprobe
  • 第二步:格式化。使用mkswap对分区进行格式化。我的系统中/dev/sda5是内存交换分区
格式化:mkswap /dev/sda5

Linux内存交换分区的查看与创建(mkswap、swapon、swapoff)_内存交换分区

  • 第三步:启动swap设备。使用swapon命令

Linux内存交换分区的查看与创建(mkswap、swapon、swapoff)_swapon_02

  • 第四步(自选):设置开机自动启动。将以下信息写入/etc/fstab文件中(注意:因为内存交换分区没有挂载点,所以第二栏填写swap)
UUID="21ef885b-2fd2-4afe-ae45-3916001c3b67" swap swap defaults 0 0
然后再更新/etc/fstab配置文件:swapon -a
  • 第五步(自选):观察状态。使用free与swapon -s命令观察内存的使用量

Linux内存交换分区的查看与创建(mkswap、swapon、swapoff)_swapon_03

  • free命令:列出磁盘所有的分区信息(但不显示loop设备类型的交换分区)。Mem为磁盘主要内存,Swap为交换分区信息。信息被分为6栏(buffers为缓存占用量)

Linux内存交换分区的查看与创建(mkswap、swapon、swapoff)_swapoff_04

四、使用文件创建内存交换分区
  • 步骤:
    • 第一步:使用dd命令创建一个新文件
    • 第二步:格式化。使用mkswap对分区进行格式化
    • 第三步:启动swap设备。使用swapon命令
    • 第四步(自选):设置开机自动启动。将信息写入/etc/fstab文件中

具体案例

  • 第一步:使用dd命令创建一个新文件。此处我在/tmp目录下建立一个swap文件,大小为128M

Linux内存交换分区的查看与创建(mkswap、swapon、swapoff)_swapoff_05

  • 第二步:格式化。使用mkswap对分区进行格式化

Linux内存交换分区的查看与创建(mkswap、swapon、swapoff)_swapoff_06

  • 第三步:启动swap设备。使用swapon将/tmp/swap启动

Linux内存交换分区的查看与创建(mkswap、swapon、swapoff)_内存交换分区_07

  • 第四步(自选):设置开机自动启动。将以下信息写入/etc/fstab文件中。注意:第一栏一定要使用文件名而不使用UUID,因为系统仅会查询区块设备不会查询文件。并且内存交换分区没有挂载点,所以第二栏填写swap
/tmp/swap swap swap defaults 0 0
然后再更新/etc/fstab配置文件:swapon -a
五、设置内存交换分区自动启用
  • 原理:原理与自动挂载的原理相同,就是当系统在启动时,自动进入启用状态,不再需要使用swapon命令进行启用
  • 方法:
    • 将内存交换分区信息写入/etc/fstab配置文件中
    • 并且用swapon -a命令更新状态

  • 我是小董,V公众点击"笔记白嫖"解锁更多【Linux入门基础】资料内容。

Linux内存交换分区的查看与创建(mkswap、swapon、swapoff)_自动启动_08