第 15 章 swap 空间


当物理内存(RAM)已满时,将使用 Linux 中的 交换空间。如果系统需要更多的内存资源并且 RAM 已满,内存中的不活动页面将移到交换空间。虽然交换空间可以帮助具有少量 RAM 的计算机,但不应将其视为更多 RAM 的替代品。交换空间位于硬盘驱动器上,其访问时间比物理内存要慢。交换空间可以是专用的交换分区(推荐)、交换文件,或者交换分区和交换文件的组合。请注意,Btrfs 不支持 swap 空间。
过去数年,推荐的 swap 空间会随系统中的 RAM 量增加而线性增大。然而,现代系统通常包含了成百 GB 内存。因此,推荐的交换空间被视为系统内存工作负载的功能,而不是系统内存的功能。
表 15.1 “推荐的系统交换空间” 根据系统中的 RAM 量以及是否有足够的内存供系统休眠显示推荐的交换分区的大小。推荐的 swap 分区会在安装过程中自动建立。但是,为了允许休眠,您需要在自定义分区阶段编辑交换空间。
表 15.1 “推荐的系统交换空间” 中的建议对于内存不足的系统(1 GB 及更少)尤为重要。无法在这些系统中分配足够 swap 空间可能会导致问题,如不稳定,甚至会导致安装的系统无法引导。
表 15.1. 推荐的系统交换空间
系统中的 RAM 量 推荐的 swap 空间 如果允许休眠则推荐使用 swap 空间
⩽ 2 GB RAM 量的 2 倍 RAM 量的 3 倍
> 2 GB – 8 GB 与 RAM 量相等 RAM 量的 2 倍
> 8 GB – 64 GB 至少 4 GB RAM 量的 1.5 倍
> 64 GB 至少 4 GB 不推荐休眠
注意
不建议使用超过 64 GB RAM 的系统进行休眠的原因有两个。首先,休眠需要额外的空间用于 inflated (可能不经常使用)交换区。其次,将驻留的数据从 RAM 移到磁盘并回到磁盘的过程可以花费大量时间完成。
表 15.1 “推荐的系统交换空间” 中列出的每个范围之间的边界(例如,具有 2 GB、8 GB 或 64 GB 系统 RAM 的系统),可以根据所选交换空间和休眠支持进行判断。如果您的系统资源允许这样做,增加交换空间可能会导致更好的性能。
请注意,将交换空间分布到多个存储设备也可以提高交换空间的性能,特别是在具有快速驱动器、控制器和接口的系统上。
重要
在修改时,不应 使用分配被为交换空间的文件系统和 LVM2 卷。如果系统进程或内核正在使用交换空间,则任何修改交换的尝试都会失败。使用 freecat /proc/swaps 命令验证交换的使用量以及位置。
在系统以 救援模式 引导时,您应该修改交换空间,请参阅 Red Hat Enterprise Linux 7 安装指南 中的 在 Rescue Mode 中引导您的计算机。当提示挂载文件系统时,请选择 Skip

15.1. 添加交换空间

有时,需要在安装后添加更多的交换空间。例如,您可以将系统中的 RAM 量从 1 GB 升级到 2 GB,但只有 2 GB 的交换空间。如果您执行内存密集型操作或运行需要大量内存的应用程序,则最好将交换空间大小增加到 4 GB。
您有三个选项:创建一个新的交换分区、创建一个新的交换文件,或者扩展现有 LVM2 逻辑卷上的交换空间。建议您扩展现有逻辑卷。

15.1.1. 在 LVM2 逻辑卷上扩展交换空间

默认情况下,Red Hat Enterprise Linux 7 在安装过程中使用所有可用空间。如果您的系统是这种情况,那么您必须首先向交换空间使用的卷组中添加一个新的物理卷。
在交换空间的卷组中添加额外的存储后,现在可以扩展它了。要做到这一点,请执行以下步骤(假设 /dev/VolGroup00/LogVol01 是您要扩展为 2 GB 的卷):

过程 15.1. 在 LVM2 逻辑卷上扩展交换空间

  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
  5. 要测试是否成功扩展并激活 swap 逻辑卷,请检查活跃 swap 空间:
    $ cat /proc/swaps
    $ free -h

15.1.2. 为交换空间创建 LVM2 逻辑卷

要添加一个 swap 卷组 2 GB,假设 /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   swap     swap    defaults     0 0
  4. 重新生成挂载单元以便您的系统注册新配置:
    # systemctl daemon-reload
  5. 在逻辑卷中激活 swap:
    # swapon -v /dev/VolGroup00/LogVol02
  6. 要测试是否成功创建并激活 swap 逻辑卷,请检查活跃 swap 空间:
    $ cat /proc/swaps
    $ free -h

15.1.3. 创建一个交换文件

添加一个交换文件:

过程 15.2. 添加交换文件

  1. 以 MB 为单位确定新交换文件的大小,再乘以 1024 来确定块的数量。例如: 64MB swap 文件的块大小为 65536。
  2. 创建一个空文件:
    # dd if=/dev/zero of=/swapfile bs=1024 count=65536
    使用与所需块大小相等的值替换 count
  3. 使用以下命令设定 swap 文件:
    # mkswap /swapfile
  4. 更改交换文件的安全性,使其不可读。
    # chmod 0600 /swapfile
  5. 要在引导时启用 swap 文件,以 root 用户身份编辑 /etc/fstab,使其包含以下条目:
    /swapfile          swap            swap    defaults        0 0
    下次系统引导时,它会激活新的 swap 文件。
  6. 重新生成挂载单元,以便您的系统注册新的 /etc/fstab 配置:
    # systemctl daemon-reload
  7. 立即激活 swap 文件:
    # swapon /swapfile
  8. 要测试新 swap 文件是否已成功创建并激活,请检查活跃 swap 空间:
    $ cat /proc/swaps
    $ free -h
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.