Linux :合并旧 Swap 并无缝扩容至 16G

前置知识:关于 Linux Swap

在开始操作之前,简单了解一下 Swap(交换空间)的机制和选择:

1. 什么是 Swap? Swap 是 Linux 的虚拟内存。当物理内存(RAM)快被用满时,系统会将不常访问的数据移动到硬盘上的 Swap 空间,从而为当前运行的程序腾出物理内存。它就像是内存的“备用轮胎”,能防止系统因内存耗尽(OOM)而崩溃。

2. Swap 文件 vs. Swap 分区 早期的 Linux 习惯使用独立的硬盘分区做 Swap,但这导致调整大小非常麻烦(通常需要重新对硬盘分区)。 现在的最佳实践通常是使用 Swap 文件。它就是一个普通的文件,最大的优势是灵活:你可以随时创建、删除、或调整它的大小,而无需改动硬盘分区结构。

3. 为什么合并? 如果系统中有多个散乱的 Swap 文件(如 /swapfile/swap.img),不仅管理混乱,还涉及优先级的调度问题。将它们合并为一个大文件,既整洁又便于通过 fstab 进行统一管理。

最近发现服务器上挂载了两个较小的 Swap 文件(一个 4G,一个 6G),管理起来比较乱,且容量开始捉襟见肘。

为了提升管理效率和系统稳定性,决定将它们合并为一个 16G 的大 Swap 文件。整个过程在系统运行中完成(Live Migration),无需重启,且通过“先建后删”的策略保证了数据平滑迁移。

1. 现状分析

首先检查当前的 Swap 状态:

Bash

sudo swapon --show

输出:

Plaintext

NAME        TYPE SIZE USED PRIO
/swap.img   file   4G 514M   -2   <-- 正在使用,存有数据
/swapfile   file   6G   0B   -3   <-- 完全空闲

策略:

  1. 先删除那个空闲的 6G /swapfile,释放磁盘空间。
  2. 原地重建一个 16G 的新 /swapfile
  3. 关闭旧的 /swap.img(系统会自动将那 514M 数据迁移到新 Swap 或内存中)。
  4. 删除旧文件并更新配置。

2. 操作步骤

第一步:清理闲置 Swap

由于 /swapfile (6G) 没有被使用,可以直接关闭并删除,为新文件腾出空间。

Bash

sudo swapoff /swapfile
sudo rm /swapfile

第二步:创建新的 16G Swap

使用 fallocate 快速预分配空间(比 dd 快很多)。

Bash

# 1. 分配 16G 空间
sudo fallocate -l 16G /swapfile

# 2. 设置权限(关键安全步骤,仅 root 可读写)
sudo chmod 600 /swapfile

# 3. 格式化为交换空间
sudo mkswap /swapfile

# 4. 立即启用
sudo swapon /swapfile

第三步:平滑迁移旧数据

此时系统挂载了两个 Swap。执行 swapoff 关闭旧的 /swap.img 时,Linux 内核会自动将其中的数据(514M)“挤”到物理内存或新的 Swap 中。

Bash

# 关闭旧 Swap,触发数据迁移
sudo swapoff /swap.img

# 确认迁移完成,现在应该只剩下一个 16G 的 Swap
sudo swapon --show

# 删除旧文件
sudo rm /swap.img

第四步:持久化配置

修改 /etc/fstab 防止重启后 Swap 失效。

Bash

sudo nano /etc/fstab

修改内容:

  • 删除 或注释掉包含 /swap.img 的行。
  • 保留 或修改包含 /swapfile 的行,确保如下所示:

Plaintext

/swapfile none swap sw 0 0

3. 结果验证

最后检查内存和 Swap 使用情况:

Bash

free -h

最终状态:

Plaintext

              total        used        free      shared  buff/cache   available
内存:         14Gi       8.8Gi       3.2Gi       1.9Gi       5.0Gi       6.0Gi
交换:         15Gi          0B        15Gi

总结:

  • Swap 总量已成功升级为 16G(显示为 15Gi 是因为换算单位差异)。
  • 旧数据已成功回收到 RAM 中(因为当前 RAM 充足),Swap 使用率归零,系统状态健康。

Read more

steam blue archive

年龄验证 使用 mmddyyyy 八位而不是yyyymmdd 八位 Maintenance in progress, closing app 梯子 开 tui 覆盖网络路由,或者使用加速器 登录已有账号 ▎必讀!Steam 用戶端帳號連結 & 解除指南🎈 《蔚藍檔案》Steam 用戶端可以至 Steam 商店頁面 [立即前往] 下載。 目錄 1. Steam 帳號 – NEXON 帳號連結方法 2. 解除以及變更連結至 Steam 的 NEXON 帳號(使用其他 NEXON 帳號連結 Steam) 🕹 本指南介紹的 Steam 用戶端 – NEXON 帳號連結操作僅可透過 Steam

By bakamake