Last active 1744360515

在Linux服务器添加SWAP虚拟内存,提高服务器使用率

swap.sh Raw
1#!/bin/bash
2
3# ============================
4# 创建一个 4GB 的 Swap 文件
5# ============================
6
7# 步骤 1:创建 4GB 的 Swap 文件
8echo "步骤 1:创建 4GB 的 Swap 文件"
9
10# 使用 fallocate 创建一个 4GB 的 swap 文件
11echo "创建 swap 文件..."
12sudo fallocate -l 4G /swapfile
13
14# 如果 fallocate 不可用,使用 dd 创建 swap 文件(备选方法)
15# echo "使用 dd 创建 swap 文件..."
16# sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
17
18# 设置 swap 文件权限为 600,确保只有 root 用户可以访问
19echo "设置文件权限为 600..."
20sudo chmod 600 /swapfile
21
22# 使用 mkswap 格式化文件为 swap 空间
23echo "格式化为 swap 空间..."
24sudo mkswap /swapfile
25
26# 启用 swap 文件
27echo "启用 swap 文件..."
28sudo swapon /swapfile
29
30# ============================
31# 配置系统使 Swap 文件在重启后自动启用
32# ============================
33
34echo "步骤 2:配置系统使 Swap 文件在重启后自动启用"
35
36# 修改 /etc/fstab 文件,确保重启后 swap 自动启用
37echo "修改 /etc/fstab 文件以启用 swap..."
38echo "/swapfile none swap sw 0 0" | sudo tee -a /etc/fstab
39
40# ============================
41# 调整 vm.swappiness 设置
42# ============================
43
44echo "步骤 3:调整 vm.swappiness 设置"
45
46# 临时修改 vm.swappiness 参数
47echo "临时修改 vm.swappiness 为 60..."
48sudo sysctl vm.swappiness=60
49
50# 永久修改 vm.swappiness 设置,编辑 /etc/sysctl.conf
51echo "编辑 /etc/sysctl.conf 文件以永久设置 vm.swappiness..."
52echo "vm.swappiness=60" | sudo tee -a /etc/sysctl.conf
53
54# 使配置生效
55echo "使配置生效..."
56sudo sysctl -p
57
58# ============================
59# 验证 Swap 文件是否启用
60# ============================
61
62echo "步骤 4:验证 Swap 文件是否启用"
63
64# 使用 free 命令查看系统内存和 swap 状态
65echo "查看当前内存和 swap 状态..."
66free -h
67
68# ============================
69# 检查 Swap 状态
70# ============================
71
72echo "步骤 5:检查 Swap 状态"
73
74# 使用 swapon --show 查看当前启用的 swap 文件
75echo "显示当前启用的 swap 文件..."
76swapon --show
77
78echo "脚本执行完毕!"
79