Files
MyBlog/src/programming/linux/Linux_Mint/scripts/expand_swap.sh

105 lines
2.8 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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 ""