findswap

Z DCEwiki
Skočit na navigaci Skočit na vyhledávání

Původně šlo o skript, který vyhledával swapovací oddíl, aby ho připojil, až během zavádění hlavního disklessového systému. Do ramdisku jsem ho přesunul až v září 2016, poté co mne napadlo využít swapu pro navýšení RAM.

swap

Pokud je na blokovém zařízení jiný linuxový systém, který má na něm vyhrazený swapovací oddíl, lze ho využít také u Disklessů pro navýšení množství dostupné RAM, pokud mají v konfiguraci nastaveno, že si mají stáhnout skript findswap[1]. Ale vyplatí se mít swap k dispozici, i když žádný jiný linuxový systém na blokovém zařízení není, protože to umožní zvětšit kapacitu virtuálního diskového prostoru, je-li použitý overlay. To je důležité hlavně pro Full-Diskless, který má pracovat s velkými soubory. Proto je doporučená velikost swapu u strojů v rámci disklessové infrastruktury 20 až 50 GB.

Princip

Pokud je systémový adresář připojený přes NFS překrytý virtuálním diskem vytvořeným v paměti, je žádoucí aby klientská pracovní stanice (nebo virtuál) měla na lokálním blokovém zařízení k dispozici swapovací oddíl, který umožní - v případě že začne místo v paměti docházet - odsypat data z fyzické paměti na fyzický disk.

Není-li swapovací oddíl k dispozici, tak to sice nevede ke zhroucení systému, ale ten se pak začne chovat stejně jako když dojde místo na disku - podivně. Init skript findswap se při svém spuštění pokusí tento swapovací oddíl vyhledat a připojit.

Poznámka Od jádra ... nabízí NFS server také možnost swapování přes NFS

Verze

MD5SUM Velikost kB Datum vytvoření
2013-03-01 původní verze pro init.d
1626ad7561d692c71284c47878c19af9 800 2016-09-30 první verze vytvořená pro skript overlay
5fe3458dd06fd015c7301ea4d8a2c0e4 843 2017-10-02 druhá verze, která se stále aktivně využívá
Poznámka
#!/bin/sh
### BEGIN INIT INFO
# Provides:          findswap
# Required-Start:    mountall
# Required-Stop: 
# Should-Start:
# Should-Stop:
# Default-Start:     S
# Default-Stop:
# Short-Description: Find all unused swap partitions to enable swapping on them
# Description:
### END INIT INFO

do_start() {
  SWAPCANDIDATES="$(cat /proc/partitions | sed -n -e 's/^.* \([hs]d[a-z][0-9]\)$/\1/p' -e 's/^.* \(xvd[a-z][0-9]\)$/\1/p')"
  for i in $SWAPCANDIDATES ; do
    if [ "$( blkid -s TYPE /dev/$i -o value )" = "swap" ] ; then
      grep -q "/dev/$i" /proc/swaps
      if [ $? -ne 0 ] ; then
        echo "Adding swap device /dev/$i."
        swapon "/dev/$i"
      fi
    fi
  done
}

case "$1" in
  start|"")
	do_start
	;;
  restart|reload|force-reload)
	echo "Error: argument '$1' not supported" >&2
	exit 3
	;;
  stop)
	# No-op
	;;
  *)
	echo "Usage: $0 [start|stop]" >&2
	exit 3
	;;
esac
  1. Natahování skriptu findswap podle potřeby, až v průběhu zavádění umožnil teprve dynamický ramdisk. Původně musel být součástí ramdisku, který předává zavaděč při startu zároveň s jádrem.