ich bleibe bei Swap-partitions, sehe keinerlei Vorteil in Swap-Files.
Der Einzige Vorteil ist wohl, dass man "on the fley" den Swapspeicher erweitern kann, ohne das System neu starten zu müssen. Auch ist dieser Swapspeicher beim Neustart des Systems dann nicht mehr vorhanden.
Ist ganz gut, falls man wirklich mal mit seinen Anwendungen an die Speichergrenze von RAM uns Swap kommt.
Bewerkstelligen kann man das ganze mit einem Script.
#!/bin/sh
###########################################################################
# Bash-Shell-Script Anlage eines temporaeren Swapfiles
# zur Erweiterung des Swapbereiches
###########################################################################
# Syntax ./newswap <optional Groesse der Swapdatei als integer>
# Default als Groesse der Swapdatei ist 32 MB
###########################################################################
# Anlagen eines zusaetzlichen Swapfiles als Datei
ver="1.1"
swapdir="/tmp/" # Ablageort der Swapdatei ggf. anpassen
swapfilename="swapfile"
swaptarget=$swapdir$swapfilename
blocksize=1024
isroot=$(whoami)
swapcount=$[$blocksize * 32] # Defaultgroesse = 32MB
if [ $isroot = "root" ]; then
freespace="free -o -k -t"
helptxt="\n\n newswap V ver\n=================================
\nVergroessern des Swapbereiches mittels zusaetzliche temporaerer Swapdatei
\nUsage: $0 (Speicher in MB als integer = 32MB default)\n-(fh)
--help\n-f Anzeige Speicherbelegung\n-h oder --help diese Hilfe\n"
case "$1" in
-f ) echo -e "\nSpeicher und Plattenbelegung im Zielverzeichniss : $swaptarget";
eval $freespace ;eval df $swapdir; exit ;;
-h | --help ) echo -e $helptxt; exit ;;
* ) ;;
esac
# Neue Dateigroesse bei optionaler Eingabe berechnen
if [ "$1" ] ; then
swapcount=$[$blocksize * $1]
fi
# Pruefen, ob Swapdatei existiert, dann anlegen, sonst
# Swapfile ausser Betrieb nehmen und loeschen
if test -e $swaptarget; then
# Swapfile ausser Betrieb nehmen
swapoff $swaptarget
# Swapfile loeschen
rm $swaptarget
#Speicheranzeige
free -o -k -t
else
# Ermitteln, ob Plattenplatz reicht
countall=$(df $swapdir | grep dev | awk '{print $2}')
countcheck=$(df $swapdir | grep dev | awk '{print $4}')
countnew=$[$countcheck - $swapcount]
usepercentnew=$[($countnew * 100) / $countall]
# Bei Plattenplatz < 10 % wird kein Swapdatei angelegt
if [ $usepercentnew -lt 10 ]; then
echo -e "\007Plattenplatz kleiner 10 % !, Swapfile kann nicht angelet werden !!"
else
echo "Bleiben freier Plattenspeicher: " $usepercentnew "%"
# Leerdatei gewuenschter Groesse erzeugen
dd if=/dev/zero of=$swaptarget bs=$blocksize count=$swapcount
# Initialisierung des Swapfiles
mkswap $swaptarget $swapcount
# Zurueckschreiben aller Aenderungen im Dateisystem
sync
# Swapfile in Betrieb nehmen
swapon $swaptarget
# Speicheranzeige
free -o -k -t
fi
fi
else
echo
echo "Dieses Tool funktioniert nur als root..."
echo "... Sie sind hingegen als "$isroot" angemeldet !"
echo
fi
Der Script ist von 2004. Eventuell muss er an heutige Shell Versionen etwas angepasst werden. Auch sollte man die Swap Default-Größe wohl etwas höher setzen.
Das Teil legt beim ersten Aufruf die Swapdatei an und mountet diese.
Beim Zweiten Aufruf wird die Swapdatei unmountet und wird gelöscht.