🎉️ 交换内存

xlauch 2025年12月01日 16 0

🎉️配置交换内存

1. 创建 create_4g_swap.sh

#!/bin/bash
# 一键创建 4GB Swap 交换内存(CentOS 7 专用)

# 检查是否为 root 用户
if [ "$(id -u)" -ne 0 ]; then
    echo "错误:请使用 root 权限执行(sudo -i 切换)"
    exit 1
fi

# 定义 Swap 大小和路径(已改为 4GB)
SWAP_SIZE="4G"
SWAP_FILE="/swapfile"

# 检查是否已存在 Swap 文件
if [ -f "$SWAP_FILE" ]; then
    echo "错误:Swap 文件 $SWAP_FILE 已存在,请先删除(执行 swapoff /swapfile && rm -rf /swapfile)"
    exit 1
fi

# 检查磁盘空间(已改为校验 4GB 剩余空间)
AVAIL_SPACE=$(df -P / | awk 'NR==2 {print $4}')  # 根分区剩余空间(KB)
REQUIRED_SPACE=$((4 * 1024 * 1024))  # 4GB = 4194304 KB
if [ "$AVAIL_SPACE" -lt "$REQUIRED_SPACE" ]; then
    echo "错误:根分区剩余空间不足 4GB,当前剩余 $(echo "scale=2; $AVAIL_SPACE/1024/1024" | bc)GB,无法创建 Swap"
    exit 1
fi

# 创建 4GB Swap 文件(两种方式兼容)
echo "正在创建 $SWAP_SIZE Swap 文件..."
fallocate -l $SWAP_SIZE $SWAP_FILE || {
    echo "fallocate 命令失败,改用 dd 命令创建(约需几分钟,请耐心等待)..."
    dd if=/dev/zero of=$SWAP_FILE bs=1G count=4  # 直接指定 4GB 容量
}

# 设置安全权限(仅 root 可读写)
chmod 600 $SWAP_FILE

# 格式化 Swap 文件
mkswap $SWAP_FILE

# 立即启用 Swap
swapon $SWAP_FILE

# 配置开机自动挂载(永久生效)
echo "$SWAP_FILE    swap    swap    defaults    0 0" >> /etc/fstab
mount -a || {
    echo "fstab 配置验证警告,请检查 /etc/fstab 最后一行是否正确"
    exit 1
}

# 优化 Swap 使用策略(保持推荐值 50,让系统更倾向使用 Swap(适合内存密集型非核心应用,如编译、大数据处理))
sysctl vm.swappiness=50
echo "vm.swappiness=50" >> /etc/sysctl.conf
sysctl -p

# 验证创建结果
echo -e "\n✅ 4GB Swap 创建完成,当前系统内存状态:"
free -h
echo -e "\n当前激活的 Swap 信息:"
swapon --show

echo -e "\n提示:Swap 已永久生效,重启系统后无需重新配置"
echo "如需删除 Swap,执行命令:swapoff /swapfile && sed -i '/swapfile/d' /etc/fstab && rm -rf /swapfile"
```shell
#!/bin/bash
# 一键创建 4GB Swap 交换内存(CentOS 7 专用)

# 检查是否为 root 用户
if [ "$(id -u)" -ne 0 ]; then
    echo "错误:请使用 root 权限执行(sudo -i 切换)"
    exit 1
fi

# 定义 Swap 大小和路径(已改为 4GB)
SWAP_SIZE="4G"
SWAP_FILE="/swapfile"

# 检查是否已存在 Swap 文件
if [ -f "$SWAP_FILE" ]; then
    echo "错误:Swap 文件 $SWAP_FILE 已存在,请先删除(执行 swapoff /swapfile && rm -rf /swapfile)"
    exit 1
fi

# 检查磁盘空间(已改为校验 4GB 剩余空间)
AVAIL_SPACE=$(df -P / | awk 'NR==2 {print $4}')  # 根分区剩余空间(KB)
REQUIRED_SPACE=$((4 * 1024 * 1024))  # 4GB = 4194304 KB
if [ "$AVAIL_SPACE" -lt "$REQUIRED_SPACE" ]; then
    echo "错误:根分区剩余空间不足 4GB,当前剩余 $(echo "scale=2; $AVAIL_SPACE/1024/1024" | bc)GB,无法创建 Swap"
    exit 1
fi

# 创建 4GB Swap 文件(两种方式兼容)
echo "正在创建 $SWAP_SIZE Swap 文件..."
fallocate -l $SWAP_SIZE $SWAP_FILE || {
    echo "fallocate 命令失败,改用 dd 命令创建(约需几分钟,请耐心等待)..."
    dd if=/dev/zero of=$SWAP_FILE bs=1G count=4  # 直接指定 4GB 容量
}

# 设置安全权限(仅 root 可读写)
chmod 600 $SWAP_FILE

# 格式化 Swap 文件
mkswap $SWAP_FILE

# 立即启用 Swap
swapon $SWAP_FILE

# 配置开机自动挂载(永久生效)
echo "$SWAP_FILE    swap    swap    defaults    0 0" >> /etc/fstab
mount -a || {
    echo "fstab 配置验证警告,请检查 /etc/fstab 最后一行是否正确"
    exit 1
}

# 优化 Swap 使用策略(保持推荐值 50,让系统更倾向使用 Swap(适合内存密集型非核心应用,如编译、大数据处理))
sysctl vm.swappiness=50
echo "vm.swappiness=50" >> /etc/sysctl.conf
sysctl -p

# 验证创建结果
echo -e "\n✅ 4GB Swap 创建完成,当前系统内存状态:"
free -h
echo -e "\n当前激活的 Swap 信息:"
swapon --show

echo -e "\n提示:Swap 已永久生效,重启系统后无需重新配置"
echo "如需删除 Swap,执行命令:swapoff /swapfile && sed -i '/swapfile/d' /etc/fstab && rm -rf /swapfile"

2. 赋予执行权限

chmod +x create_4g_swap.sh
```shell
chmod +x create_4g_swap.sh

3. 以 root 权限执行

sudo ./create_4g_swap.sh
```shell
sudo ./create_4g_swap.sh

执行后若看到 ✅ 4GB Swap 创建完成,且 free -h 中 Swap 一行显示约 4GB,则说明配置成功。

[root@iZbp16emwksrr7r40tt9lsZ local]# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.7G        1.2G         80M        3.2M        440M        368M
Swap:          4.0G        264K        4.0G
```shell
[root@iZbp16emwksrr7r40tt9lsZ local]# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.7G        1.2G         80M        3.2M        440M        368M
Swap:          4.0G        264K        4.0G

4. 删除命令,如需删除 Swap,执行命令:

swapoff /swapfile && sed -i '/swapfile/d' /etc/fstab && rm -rf /swapfile
```shell
swapoff /swapfile && sed -i '/swapfile/d' /etc/fstab && rm -rf /swapfile

全局调整 Swap 使用策略(影响所有应用)

通过修改 swappiness 参数,控制整个系统的 Swap 使用倾向,这是最常用的方式。

1. 临时调整(重启后失效,适合测试)

bash

运行

# 查看当前 swappiness 值(默认 30)
cat /proc/sys/vm/swappiness

# 示例 1:让系统尽量不用 Swap(适合核心应用,如 MySQL、Nginx)
sudo sysctl vm.swappiness=5

# 示例 2:让系统更倾向使用 Swap(适合内存密集型非核心应用,如编译、大数据处理)
sudo sysctl vm.swappiness=60

2. 永久调整(重启后生效)

编辑 /etc/sysctl.conf 文件,添加配置:

bash

运行

# 编辑配置文件
sudo vi /etc/sysctl.conf

# 末尾添加以下内容(根据需求选择值)
vm.swappiness=10  # 通用推荐(优先物理内存,内存不足时适度用 Swap)

# 生效配置
sudo sysctl -p

推荐场景配置:

  • 核心服务(数据库、缓存、Web 服务器):swappiness=0-10(避免 Swap 读写影响性能)。
  • 非核心应用(编译、数据分析、后台脚本):swappiness=40-60(允许更多使用 Swap,释放物理内存)。
  • 低内存服务器(≤2GB 物理内存):swappiness=30-50(平衡稳定性和性能).
Last Updated: 2025/12/01 14:29:30
centos7 压缩解压命令 ✨Hello world✨