#!/bin/bash # Swap空间扩展脚本 # 将 /swapfile 从 8GB 扩展到 24GB set -e # 遇到错误立即退出 echo "==========================================" echo "Swap空间扩展脚本" echo "==========================================" echo "" # 颜色定义 GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' NC='\033[0m' # No Color # 检查是否有sudo权限 if ! sudo -n true 2>/dev/null; then echo -e "${YELLOW}此脚本需要sudo权限,请输入密码${NC}" fi echo "步骤 1/7: 显示当前swap状态" echo "----------------------------------------" swapon --show free -h echo "" read -p "确认要继续吗?这将临时关闭swap空间 (y/n): " -n 1 -r echo "" if [[ ! $REPLY =~ ^[Yy]$ ]]; then echo -e "${RED}操作已取消${NC}" exit 1 fi echo "" echo "步骤 2/7: 关闭现有 /swapfile" echo "----------------------------------------" sudo swapoff /swapfile echo -e "${GREEN}✓ 已关闭 /swapfile${NC}" echo "" echo "步骤 3/7: 删除旧的 swapfile" echo "----------------------------------------" sudo rm /swapfile echo -e "${GREEN}✓ 已删除旧文件${NC}" echo "" echo "步骤 4/7: 创建新的 24GB swapfile" echo "----------------------------------------" echo "使用 fallocate 快速创建(约需10-30秒)..." sudo fallocate -l 24G /swapfile echo -e "${GREEN}✓ 已创建 24GB swapfile${NC}" echo "" echo "步骤 5/7: 设置文件权限" echo "----------------------------------------" sudo chmod 600 /swapfile echo -e "${GREEN}✓ 权限已设置为 600${NC}" echo "" echo "步骤 6/7: 格式化为swap" echo "----------------------------------------" sudo mkswap /swapfile echo -e "${GREEN}✓ 格式化完成${NC}" echo "" echo "步骤 7/7: 启用新的swapfile" echo "----------------------------------------" sudo swapon /swapfile echo -e "${GREEN}✓ 已启用新的swapfile${NC}" echo "" echo "==========================================" echo "扩展完成!当前swap状态:" echo "==========================================" swapon --show echo "" free -h echo "" # 检查 /etc/fstab 配置 echo "----------------------------------------" echo "检查 /etc/fstab 配置..." echo "----------------------------------------" if grep -q "^/swapfile" /etc/fstab; then echo -e "${GREEN}✓ /etc/fstab 已包含 swapfile 配置${NC}" else echo -e "${YELLOW}⚠ /etc/fstab 中未找到 swapfile 配置${NC}" read -p "是否添加到 /etc/fstab 以确保重启后生效?(y/n): " -n 1 -r echo "" if [[ $REPLY =~ ^[Yy]$ ]]; then echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab echo -e "${GREEN}✓ 已添加到 /etc/fstab${NC}" fi fi echo "" echo "==========================================" echo -e "${GREEN}所有操作完成!${NC}" echo "==========================================" echo "总Swap空间: ~31GB (24GB swapfile + 7.3GB zram)" echo ""