61 lines
1.6 KiB
Bash
Executable File
61 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# nbd-swap: High-speed RAM swap over network (192.168.1.104 bazina -> 192.168.1.100 t520)
|
|
set -euo pipefail
|
|
|
|
SERVER="192.168.1.104"
|
|
PORT="10809"
|
|
EXPORT="t520_swap"
|
|
DEV="/dev/nbd0"
|
|
|
|
status() {
|
|
echo "=== NBD Network Swap Status ==="
|
|
if swapon --show | grep -q "$DEV"; then
|
|
echo "Swap active on $DEV:"
|
|
swapon --show | grep "$DEV"
|
|
else
|
|
echo "Swap is NOT active on $DEV."
|
|
fi
|
|
if [ -b "$DEV" ] && lsblk "$DEV" | grep -q "$DEV"; then
|
|
lsblk "$DEV"
|
|
fi
|
|
}
|
|
|
|
start() {
|
|
sudo modprobe nbd
|
|
if swapon --show | grep -q "$DEV"; then
|
|
echo "Swap already active on $DEV."
|
|
exit 0
|
|
fi
|
|
# If device is connected, disconnect first
|
|
if lsblk "$DEV" 2>/dev/null | grep -q "nbd0"; then
|
|
sudo nbd-client -d "$DEV" 2>/dev/null || true
|
|
sleep 1
|
|
fi
|
|
echo "Connecting $DEV to $SERVER:$PORT ($EXPORT)..."
|
|
sudo nbd-client "$SERVER" "$PORT" -N "$EXPORT" "$DEV"
|
|
echo "Initializing and activating swap on $DEV (priority 100)..."
|
|
sudo mkswap "$DEV" >/dev/null
|
|
sudo swapon -p 100 "$DEV"
|
|
status
|
|
}
|
|
|
|
stop() {
|
|
echo "Deactivating swap on $DEV..."
|
|
if swapon --show | grep -q "$DEV"; then
|
|
sudo swapoff "$DEV"
|
|
fi
|
|
if lsblk "$DEV" 2>/dev/null | grep -q "nbd0"; then
|
|
echo "Disconnecting NBD client..."
|
|
sudo nbd-client -d "$DEV"
|
|
fi
|
|
echo "NBD swap stopped."
|
|
}
|
|
|
|
case "${1:-status}" in
|
|
start) start ;;
|
|
stop) stop ;;
|
|
status) status ;;
|
|
restart) stop; sleep 1; start ;;
|
|
*) echo "Usage: $0 {start|stop|restart|status}" ; exit 1 ;;
|
|
esac
|