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

My pwsh profile for linux

之前出过一篇My pwsh profile for windows,并且经常随着使用工具的更迭而修改和随时同步,但是转移到 linux 后,发行版,发行版版本和桌面环境一直不稳定, 所以 pwsh 和 bash 的 profile 这次一起 post 出来方便迁移 My pwsh profile for Windows#修改适配前务必找到正确路径,可能版本不对 #消除一个微软的pwsh启动bug,使在开始菜单启动pwsh时会进入home作为工作目录 if(($PWD).Path -eq “C:\Program Files\WindowsApps\Microsoft.PowerShell_7.5.3.0_x64__8wekyb3d8bbwe” -or ($PWD).Path -eq “C:

By bakamake

wayland gnome gui操作和windows 的差异

gnome和windows有着诸多差异,更不用说是wayland gnome了,本文记录gnome wayland 的一些不适应的差异 file文件io: 双击压缩包文件,逻辑太简单粗暴,后台执行解压程序,但是file gui前台只会提供已经解压的部分,然后提示就是mac风格,几乎看不到,一般是文件夹最先出来,如果这时候进入文件夹,会误以为压缩包内容损坏,实际是io还没有完成 视频,图片等查看软件,一般需要在file复制句柄之类的,总之需要选中文件然后ctrl c,然后在查看器窗口粘贴上去,ctrl v,完成操作,然后可以看到解析结果 flatpak软件,但是仍然是io,这个要夸赞,flatpak 微信,默认只能查看到 ~/下载 位置下的文件,ipc机制同理,所以每次复制粘贴文件之前需要把文件移动到下载目录下面

By bakamake

dell uefi

从上到下依次是 概览/总览 引导配置 集成设备 存储 显示 连接 电源 安全性 密码 更新, 恢复 系统管理 键盘 预引导行为 虚拟化支持 性能 系统日志 引导配置 引导配置 (Boot Configuration) 菜单详解 引导顺序 (Boot Sequence) 看自己的,我的ubuntu在最前,开机会直接进入ubuntu ,如果是usb引导介质(一般是usb disk之类的),就会进入u盘上的小型系统live os 或者win pe 一般只看关键词各种os的名称 ,以及NVMe SSD disk usb disk这些硬盘关键词,没有os boot或者 os坏掉了,就考虑NVMe SSD disk能不能进os 每个boot项的末尾的上下标按钮调整启动顺序,

By bakamake