Benutzer-Werkzeuge

Webseiten-Werkzeuge


swap-datei

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

swap-datei [2021-05-19 19:02:10] – angelegt manfredswap-datei [2021-05-19 19:02:23] (aktuell) manfred
Zeile 1: Zeile 1:
 +====== Swap-Datei ======
 +
 +
 +===== Swap-Datei auf lokaler Platte betreiben =====
 +
 +  > dd if=/dev/zero of=/usr/swap0 bs=1024k count=1024
 +  > chmod 0600 /usr/swap0
 +  > mkswap -L swap0 /usr/swap0
 +  > echo "/usr/swap0    none    swap    sw      0 0" >> /etc/fstab
 +  > swapon /usr/swap0
 +  > free -m
 +                gesamt      belegt       frei     gemeinsam    Zwischen   verfügbar
 +  Speicher:       32044        3285       20928         219        7830       28087
 +  Auslager:        1023                  1023
 +
 +
 +===== Swap-Datei für USB-Stick-System auf lokaler Platte =====
 +
 +<file>
 +#!/bin/bash
 +
 +#
 +# Dieses Skript ist NUR für bootfähige Linux-USB-Sticks geschrieben worden.
 +#
 +# Das Ziel dieses Skriptes ist es,
 +# für ein Linux, welches von einem USB-Stick gebootet ist,
 +# eine nutzbare Swap-Datei bereitzustellen.
 +#
 +# Es ermittelt alle fest verbauten Festplatten,
 +# mountet sie "ro" nacheinander und ermittelt wieviel freier Platz auf der
 +# Partition vorhanden ist.
 +# anschließend wird bewertet ob der freie Platz ausreicht.
 +#
 +# Sollte eine Partition nur per FUSE gemountet werden können,
 +# dann wird automatisch die Swap-Aktivität des Systems auf "1" (Minimum)
 +# reduziert.
 +#
 +# Bei mehreren nutzbaren Partitionen, wir die "beste" ausgewählt.
 +#
 +
 +#set -x
 +
 +VERSION="v2013092200"
 +
 +SWAPMEHR="512" # extra-Swap in MB, der bei Suspend mehr als RAM gebraucht wird
 +SWAPOPTI="$(free | awk -v swapmin=${SWAPMEHR} '/^Mem:/{printf("%.1u\n",(($2/102400)*101)+swapmin)}')"
 +
 +SWAPDATEN="$(for i in $(fgrep 0 /sys/class/block/*/removable | egrep -v '/loop|ram|dm-/' | awk '{gsub("/"," ");gsub(":"," ");print $4}')
 +do
 + blkid /dev/${i}[0-9]*
 +done|while read HDD IDS
 +do
 + umount -f /mnt 2>/dev/null
 + mount -o ro $(echo "${HDD}"|sed 's/[:]//') /mnt
 + PARTINFOS="$(df -lTP -BM /mnt 2>/dev/null | egrep '[ ]+[\/]mnt$')"
 + umount -f /mnt
 + #echo "'${PARTINFOS}'"
 + PARTITION="$(echo "${PARTINFOS}" | awk '{print $1}')"
 + DATEISYST="$(echo "${PARTINFOS}" | awk '{print $2}')"
 + FREIPLATZ="$(echo "${PARTINFOS}" | awk '{gsub("M[ ]"," ");print $5}')"
 +
 + if [ -n "${FREIPLATZ}" ] ; then
 + ### größe beurteilen
 + # ist er groß genug für Suspend ?
 + if [ "${FREIPLATZ}" -gt "${SWAPOPTI}" ] ; then
 + SWAPPINESS=60
 + SWAPGR="${SWAPOPTI}"
 + else
 + ### swappiness muss skaliert werden
 + # ist er größer als minimum ?
 + if [ "${FREIPLATZ}" -gt "${SWAPMEHR}" ] ; then
 + # ist er größer als minimum
 + SWAPID=$(echo "512 8469 ${FREIPLATZ}" | awk '{ram=$2-$1;printf("%.0u\n",$3*(1/(ram/59)))}')
 + SWAPPINESS=$(if [ "${SWAPID}" -gt 2 ] ; then echo "${SWAPID} 2"|awk '{print $1 - $2}';else echo 0;fi)
 + SWAPGR="$(echo "${FREIPLATZ}" | awk '{print $1-10}')"
 + else
 + # ist er kleiner als minimum
 + SWAPPINESS=0
 + fi
 + fi
 +
 + ### bei FUSE den SWAP minimieren
 + TYPFUSE="$(echo "${DATEISYST}" | fgrep -i fuse)"
 + if [ -n "${TYPFUSE}" ] ; then
 + SWAPPINESS=1
 + fi
 +
 + else
 + # keine beschreibbare Platte mit Platz gefunden
 + SWAPPINESS=0
 + fi
 +
 + ### nur ausgeben, wenn neuer vm.swappiness > 0
 + if [ "${SWAPPINESS}" -gt 0 ] ; then
 + echo "${SWAPPINESS} ${PARTITION} ${SWAPGR}"
 + fi
 +done | sort -nr | head -n1)"
 +
 +SWAPPINESS="$(echo "${SWAPDATEN}" | awk '{print $1}')"
 +PARTITION="$(echo "${SWAPDATEN}" | awk '{print $2}')"
 +SWAPGR="$(echo "${SWAPDATEN}" | awk '{print $3}')"
 +
 +#echo "
 +mkdir -p /SWAP
 +mount ${PARTITION} /SWAP
 +dd if=/dev/zero of=/SWAP/LinuxSwap.img bs=1M count=${SWAPGR}
 +mkswap -L swap /SWAP/LinuxSwap.img
 +swapon /SWAP/LinuxSwap.img
 +sysctl vm.swappiness=${SWAPPINESS}
 +#"
 +</file>
 +