Files
sysmig/migrations/001-create-swap.sh
wan 84d6f9724c status: fix false DRIFT for non-root invocations
- runner: export sbin-inclusive PATH (util-linux tools live in /usr/sbin)
- 001: read /proc/swaps instead of swapon(8)
- 005: resolve /dev/disk/by-uuid symlink instead of findfs(8); report ?
  (exit 2) when the UUID cannot be resolved
2026-08-31 16:48:06 +09:00

44 lines
1.6 KiB
Bash

#!/usr/bin/env bash
# 001-create-swap - Create 2GB swap + fstab entry + vm.swappiness=10
# up: enable swap (skipped if swap already active)
# down: disable swap and remove file/fstab/sysctl entries
set -euo pipefail
case "${1:-}" in
up)
if swapon --show --noheadings | grep -q .; then
echo " swap already active - skipping"
exit 0
fi
if [[ ! -f /swapfile ]]; then
fallocate -l 2G /swapfile || {
dd if=/dev/zero of=/swapfile bs=1M count=2048 status=none
}
chmod 600 /swapfile
mkswap /swapfile >/dev/null
fi
swapon /swapfile
grep -q '^/swapfile' /etc/fstab || echo '/swapfile none swap sw 0 0' >> /etc/fstab
if ! grep -rqs 'vm.swappiness' /etc/sysctl.d/ /etc/sysctl.conf; then
echo 'vm.swappiness=10' > /etc/sysctl.d/99-swap.conf
sysctl -p /etc/sysctl.d/99-swap.conf >/dev/null
fi
echo " swap 2GB enabled + fstab entry + vm.swappiness=10"
;;
status)
grep -q '^/swapfile ' /proc/swaps || { echo "DRIFT /swapfile not active"; exit 1; }
grep -q '^/swapfile ' /etc/fstab || { echo "DRIFT fstab entry missing"; exit 1; }
swp=$(cat /proc/sys/vm/swappiness 2>/dev/null || echo '?')
[[ $swp == 10 ]] || { echo "DRIFT vm.swappiness=$swp (want 10)"; exit 1; }
echo "OK swap active + fstab entry, swappiness=10"
;;
down)
swapoff /swapfile
rm -f /swapfile
sed -i '\|^/swapfile|d' /etc/fstab
grep -q '^vm.swappiness=10$' /etc/sysctl.d/99-swap.conf 2>/dev/null \
&& rm -f /etc/sysctl.d/99-swap.conf || true
echo " swap removed"
;;
esac