105 lines
2.8 KiB
Bash
Executable File
105 lines
2.8 KiB
Bash
Executable File
#!/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 ""
|