本教程聚焦于 Linux 服务器新增 Swap 分区 的实际操作,覆盖从分区规划到分区生效的完整实操步骤,帮助你在内存不足时获得更稳定的系统表现。通过本教程,你将掌握如何在现有磁盘中创建新的 Swap 分区并长期生效。目标明确且可落地,避免错漏导致系统无法启动或 Swap 不可用。
在开始之前,请确保你的服务器具备可用的磁盘空间以及足够的权限进行分区操作。root 权限是必需的,且对分区表类型(GPT/MBR)有所了解有助于选择合适的分区方案。提前备份重要数据以防意外溢出或分区修改导致的数据丢失。
重要提示:本教程明确包含从分区到生效的完整步骤,确保你能够在实际环境中复现,并将新增的 Swap 按计划长期启用。请按照步骤逐条执行,避免跳过配置或跳过验证环节。
在新增 Swap 分区之前,先确认当前系统的 Swap 使用情况以及可用磁盘信息,以便正确定位目标磁盘和分区。了解当前的 Swap 使用情况可以避免意外熄灭已有的 Swap,同时确保新分区不会与现有分区冲突。
接下来需要检查的关键点包括:当前 Swap 是否已经启用、大小和占用情况,以及磁盘的分区结构。下面列出常用命令,帮助你快速获取信息。
# 1) 查看内存与 Swap 的使用情况 free -h# 2) 列出已启用的 Swap 设备 swapon --show# 3) 查看系统中所有分区及挂载信息 lsblk -o NAME,SIZE,TYPE,MOUNTPOINT# 4) 查看分区类型及 UUID blkid# 5) 查看当前分区的文件系统及 Swap 相关信息 cat /proc/swaps
要点提示:确保你能确定目标磁盘的名称(如 /dev/sdb、/dev/nvme0n1 等)以及新分区的潜在名称(如 /dev/sdb1 或 /dev/nvme0n1p3)。
通常有两种常用方法:使用 parted/gpt 分区表创建一个 linux-swap 分区,或在 MV/RPM 系统中使用 fdisk/MBR 搭配 swap 类型。下面给出基于 GPT 的分区创建示例,确保分区对齐并设置为 swap 类型。
# 假设要在 /dev/sdb 上新增一个 Swap 分区,目标容量为 4G # 1) 使用 GPT 分区表 parted /dev/sdb --script mklabel gpt mkpart primary linux-swap 4MiB 4GiB# 2) 将新分区设置为 swap 类型(对于 GPT,每个分区的类型名为 linux-swap) parted /dev/sdb --script set 1 swap on# 注:分区名称可能变为 /dev/sdb1,具体以系统识别为准。
完成分区创建后,务必确认新分区已被创建并显示为可用设备。下列命令可用于验证新分区信息及名称:lsblk、blkid、fdisk -l。
lsblk -f blkid # 也可以快速查看分区表 fdisk -l /dev/sdb
对新分区执行 mkswap 操作,将其转换为可用的 Swap 区域。此步骤不会格式化普通的文件系统数据,只是把分区标记为 Swap 区域。
# 假设新分区为 /dev/sdb1 sudo mkswap /dev/sdb1
重要点:mkswap 才是让分区具备 Swap 功能的关键步骤,确保分区被正确标记为 Swap。随后再执行启用。
启用新创建的 Swap 分区,确保系统在当前会话中可以使用它。强烈建议先临时启用,确认无异常后再永久化。swapon 是启用 Swap 的核心命令。
sudo swapon /dev/sdb1# 快速验证新 Swap 是否生效 swapon --show free -h
为了确保系统每次启动时都自动启用新分区的 Swap,需要将分区的信息写入 /etc/fstab。推荐使用 UUID 作为唯一标识,避免设备名称在重启或热插拔时发生变化。
# 获取新分区的 UUID sudo blkid /dev/sdb1# 假设输出类似: # /dev/sdb1: UUID="1234-ABCD" TYPE="swap" PARTUUID="..." # 将以下内容追加到 /etc/fstab echo 'UUID=1234-ABCD none swap sw 0 0' | sudo tee -a /etc/fstab
要点提示:使用 UUID 能避免设备名变化导致开机失败或 Swap 找不到的问题。追加到 /etc/fstab 后,请再次验证格式正确性。
系统对 Swap 的使用有参数控制,常见的有 vm.swappiness 和 vm.vfs_cache_pressure。默认 swappiness 常见为 60,若需减少 Swap 的使用,可将其调低;若强调缓存保留,可调整 vfs_cache_pressure。
# 查看当前值 cat /proc/sys/vm/swappiness cat /proc/sys/vm/vfs_cache_pressure# 设置运行时生效(示例:swappiness=60,vfs_cache_pressure=75) sudo sysctl -w vm.swappiness=60 sudo sysctl -w vm.vfs_cache_pressure=75
5.2 将调整写入永久配置,确保重启后参数仍然有效。
# 将参数写入到 /etc/sysctl.d/99-swap.conf echo ‘vm.swappiness=60’ | sudo tee /etc/sysctl.d/99-swap.conf echo ‘vm.vfs_cache_pressure=75’ | sudo tee -a /etc/sysctl.d/99-swap.conf# 让新配置即时生效 sudo sysctl -p /etc/sysctl.d/99-swap.conf
完成分区、格式化、启用以及配置后,进行全面验证,确保 Swap 已被系统正确识别并在需要时能够使用。swapon –show、free -h、cat /proc/swaps 等命令应显示新分区为活动 Swap。
swapon –show free -h cat /proc/swaps
重启服务器后再度检查,确认新分区仍然处于 Swap 状态且开机自启配置正确。若有问题,请检查 /etc/fstab 的条目以及 UUID 是否正确。
sudo reboot
重启完成后再次验证
swapon –show free -h
在新增 Swap 分区的过程中,可能遇到以下问题:分区名变化导致的设备路径问题、启动时 Swap 未启用、或 fstab 条目有误。遇到此类情况时,先通过 lsblk、blkid、fdisk -l、cat /etc/fstab 等命令定位原因。
# 重新确认分区信息 lsblk -o NAME,SIZE,TYPE,MOUNTPOINT blkid# 检查开机时的 Swap 是否挂载 systemctl status swap.target
若需要临时关闭或回滚 Swap 变更,可按以下步骤快速执行:停用 Swap、移除 /etc/fstab 中对应条目、确保系统可正常启动。
# 关闭所有 Swap sudo swapoff -a# 移除 /etc/fstab 中的 Swap 条目(使用编辑器注释或删除相应行) sudo sed -i ‘/swap/d’ /etc/fstab# 验证 sudo swapon –show free -h
如果需要在紧急场景中仅临时停用某个 Swap 分区,可指定设备名进行停用,如:swapon /dev/sdb1,并确保分区不会阻塞系统的正常启动。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/257753.html