status convention: print one line, exit 0 OK / 1 DRIFT / 2 unknown (e.g. needs root). sysmig status now shows [applied ✓/✗/?] per migration and exits 1 on drift. DB checks fall back to peer auth when non-root.
45 lines
1.6 KiB
Bash
45 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)
|
|
swapon --show --noheadings 2>/dev/null | grep -q '^/swapfile ' \
|
|
|| { 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
|