26.6. swap 入门


使用交换空间为不活跃的进程和数据提供临时存储,并防止物理内存满时内存不足。交换空间充当物理内存的扩展,并允许系统在物理内存耗尽时继续平稳运行。请注意,在依赖 swap 空间前,使用 swap 空间可能会降低系统性能,因此优化物理内存的使用可能会更优先使用。

26.6.1. swap 空间概述

当物理内存(RAM)已满时,将使用 Linux 中的 交换空间。如果系统需要更多的内存资源并且 RAM 已满,内存中的不活动页面将移到交换空间。虽然交换空间可以帮助具有少量 RAM 的计算机,但不应将其视为更多 RAM 的替代品。

交换空间位于硬盘驱动器上,其访问时间比物理内存要慢。交换空间可以是专用的交换分区(推荐)、交换文件,或者交换分区和交换文件的组合。

过去数年,推荐的 swap 空间会随系统中的 RAM 量增加而线性增大。然而,现代系统通常包含了成百 GB 内存。因此,推荐的交换空间被视为系统内存工作负载的功能,而不是系统内存的功能。

添加 swap 空间

以下是添加 swap 空间的不同方法:

删除 swap 空间

以下是删除 swap 空间的不同方法:

26.6.3. 为 swap 创建 LVM2 逻辑卷

您可以为 swap 创建一个 LVM2 逻辑卷。假设 /dev/VolGroup00/LogVol02 是您要添加的交换卷。

先决条件

  • 您有足够的磁盘空间。

流程

  1. 创建大小为 2 GB 的 LVM2 逻辑卷:

    # lvcreate VolGroup00 -n LogVol02 -L 2G
  2. 格式化新 swap 空间:

    # mkswap /dev/VolGroup00/LogVol02
  3. /etc/fstab 文件中添加以下条目:

    /dev/VolGroup00/LogVol02 none swap defaults 0 0
  4. 重新生成挂载单元以便您的系统注册新配置:

    # systemctl daemon-reload
  5. 在逻辑卷中激活 swap:

    # swapon -v /dev/VolGroup00/LogVol02

验证

  • 要测试是否成功创建并激活 swap 逻辑卷,请使用以下命令检查活跃 swap 空间:

    # cat /proc/swaps
                   total        used        free      shared  buff/cache   available
    Mem:            30Gi       1.2Gi        28Gi        12Mi       994Mi        28Gi
    Swap:           22Gi          0B        22Gi
    # free -h
                   total        used        free      shared  buff/cache   available
    Mem:            30Gi       1.2Gi        28Gi        12Mi       995Mi        28Gi
    Swap:           17Gi          0B        17Gi

26.6.4. 创建交换文件

当系统内存不足时,您可以创建一个 swap 文件来在固态驱动器或硬盘上创建一个临时存储空间。

先决条件

  • 您有足够的磁盘空间。

流程

  1. 以 MB 为单位确定新交换文件的大小,再乘以 1024 来确定块的数量。例如: 64MB swap 文件的块大小为 65536。
  2. 创建一个空文件:

    # dd if=/dev/zero of=/swapfile bs=1024 count=65536

    65536 替换为等于所需块大小的值。

  3. 使用以下命令设定 swap 文件:

    # mkswap /swapfile
  4. 更改交换文件的安全性,使其不可读。

    # chmod 0600 /swapfile
  5. 使用以下条目编辑 /etc/fstab 文件,以在引导时启用交换文件:

    /swapfile none swap defaults 0 0

    下次系统引导时,它会激活新的 swap 文件。

  6. 重新生成挂载单元,以便您的系统注册新的 /etc/fstab 配置:

    # systemctl daemon-reload
  7. 立即激活 swap 文件:

    # swapon /swapfile

验证

  • 要测试新 swap 文件是否已成功创建并激活,请使用以下命令检查活跃 swap 空间:

    $ cat /proc/swaps
    $ free -h

26.6.5. 在 LVM2 逻辑卷中扩展 swap

您可以在现有 LVM2 逻辑卷上扩展 swap 空间。假设 /dev/VolGroup00/LogVol01 是您要将其扩展为 2 GB 的卷。

先决条件

  • 您有足够的磁盘空间。

流程

  1. 为关联的逻辑卷禁用交换:

    # swapoff -v /dev/VolGroup00/LogVol01
  2. 将 LVM2 逻辑卷调整为 2 GB

    # lvresize /dev/VolGroup00/LogVol01 -L +2G
  3. 格式化新 swap 空间:

    # mkswap /dev/VolGroup00/LogVol01
  4. 启用扩展的逻辑卷:

    # swapon -v /dev/VolGroup00/LogVol01

验证

  • 要测试是否成功扩展并激活 swap 逻辑卷,请检查活跃 swap 空间:

    # cat /proc/swaps
    Filename                Type        Size        Used        Priority
    /dev/dm-1          partition    16322556           0              -2
    /dev/dm-4          partition     7340028           0              -3
    # free -h
                   total        used        free      shared  buff/cache   available
    Mem:            30Gi       1.2Gi        28Gi        12Mi       994Mi        28Gi
    Swap:           22Gi          0B        22Gi

26.6.6. 在 LVM2 逻辑卷中减少 swap

您可以减少 LVM2 逻辑卷上的 swap。假设 /dev/VolGroup00/LogVol01 是您要缩小的卷。

流程

  1. 为关联的逻辑卷禁用交换:

    # swapoff -v /dev/VolGroup00/LogVol01
  2. 清理 swap 签名:

    # wipefs -a /dev/VolGroup00/LogVol01
  3. 将 LVM2 逻辑卷减少 512 MB:

    # lvreduce /dev/VolGroup00/LogVol01 -L -512M
  4. 格式化新 swap 空间:

    # mkswap /dev/VolGroup00/LogVol01
  5. 在逻辑卷中激活 swap:

    # swapon -v /dev/VolGroup00/LogVol01

验证

  • 要测试是否成功缩小 swap 逻辑卷,请使用以下命令检查活跃 swap 空间:

    $ cat /proc/swaps
    $ free -h

26.6.7. 为 swap 删除 LVM2 逻辑卷

您可以删除 swap 的一个 LVM2 逻辑卷。假设 /dev/VolGroup00/LogVol02 是您要删除的交换卷。

流程

  1. 为关联的逻辑卷禁用交换:

    # swapoff -v /dev/VolGroup00/LogVol02
  2. 删除 LVM2 逻辑卷:

    # lvremove /dev/VolGroup00/LogVol02
  3. /etc/fstab 文件中删除以下关联的条目:

    /dev/VolGroup00/LogVol02 none swap defaults 0 0
  4. 重新生成挂载单元以注册新配置:

    # systemctl daemon-reload

验证

  • 测试逻辑卷是否被成功删除,使用以下命令检查活跃的 swap 空间:

    $ cat /proc/swaps
    $ free -h

26.6.8. 删除交换文件

您可以删除一个 swap 文件。

流程

  1. 禁用 /swapfile swap 文件:

    # swapoff -v /swapfile
  2. 相应地从 /etc/fstab 文件中删除其条目。
  3. 重新生成挂载单元以便您的系统注册新配置:

    # systemctl daemon-reload
  4. 删除实际的文件:

    # rm /swapfile
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.