Ram disk

Z Poznámkový blok
Přejít na: navigace, hledání

shm

V současné době je standartně k dispozici ramdisk na cestě /dev/shm. Pro použití můžeme provést nastavení.

Soubory btmp, wtmp a lastlog jsou definovány v /lib/tmpfiles.d/var.conf. ten pak upravíme ve stylu

sudo mcedit /lib/tmpfiles.d/var.conf


f  /dev/shm/wtmp 0664 root utmp -
L+ /var/log/wtmp - - - - /dev/shm/wtmp

f  /dev/shm/btmp 0660 root utmp -
L+ /var/log/btmp - - - - /dev/shm/btmp

f  /dev/shm/lastlog 0664 root utmp -
L+ /var/log/lastlog - - - - /dev/shm/lastlog
sudo mcedit /etc/tmpfiles.d/shm.conf


L+ /var/log/syslog     - - - - /dev/shm/syslog
L+ /var/log/auth.log   - - - - /dev/shm/auth.log
L+ /var/log/daemon.log - - - - /dev/shm/daemon.log
sudo rm -r var/log/journal

sudo mv /var/log/syslog /dev/shm/syslog
sudo ln -s /dev/shm/syslog /var/log/syslog
sudo mv /var/log/auth.log /dev/shm/auth.log
sudo ln -s /dev/shm/auth.log /var/log/auth.log
sudo mv /var/log/daemon.log /dev/shm/daemon.log
sudo ln -s /dev/shm/daemon.log /var/log/daemon.log

tmpfs

Prvně vytvoříme adresář pro namapování ramdisku a následně vlastni ramdisk který rovnou do vytvořeného adresáře namapujem.

sudo mkdir /mnt/ramdisk
sudo mount -t tmpfs -o rw,size=128M tmpfs /mnt/ramdisk

(Velikost disku můžeme zadávat jak v MB - M, tak třeba GB - G)

Pomocí příkazu `df -h` ověříme, že je ramdisk namapován.

Autostart fstab

Do tabulky /etc/fstab přidáme v tomto případě řádek:

tmpfs   /mnt/ramdisk    tmpfs    rw,size=128M     0      0

Autostart cron

Do crontab systemu vložíme radek:

@ mount -t tmpfs -o rw,size=128M tmpfs /mnt/ramdisk

Úschova dat

Pokud chceme zajistit, aby se data při korektním restartu nesmazala, vytvoříme službu která zajistí při restartu uložení dat na disk a při startu je opětovně načte. Pro uložení dat vytvoříme pomocný adresář pro data z ramdisku a poté vytvoříme vlastní konfiguraci služby.

sudo mkdir /mnt/ramdisk_backup
sudo nano /lib/systemd/system/ramdisk-sync.service

Poté do otevřeném souboru vložíme následující text. Pozor, musíme zmenit user, na platného uživatele.

.

var/log

V adresaři /var/log jsou přirozeně soubory, do kterých se průběžně zapisuje. Pokud nepotřebujeme jejich obsah po restartu, můžeme nastavit symlink a nechat je ukladat na ram disk, nebo třeba /dev/shm což je také ramdisk, ktery ale již vytvaří systém. Pro některé systémové soubory ale memůžeme vytvořit jen tak symlink, je potřeba tuto informaci zanest do konfigurace.

Například soubory btmp, wtmp a lastlog jsou definovány v /lib/tmpfiles.d/var.conf. ten pak upravíme ve stylu

f /dev/shm/wtmp 0664 root utmp -
L /var/log/wtmp - - - - /dev/shm/wtmp

f /dev/shm/btmp 0660 root utmp -
L /var/log/btmp - - - - /dev/shm/btmp

f /dev/shm/lastlog 0664 root utmp -
L /var/log/lastlog - - - - /dev/shm/lastlog

ramfs

Existuje obdobné nastavení, ale zde není zajištěna fixní velikost a pak se může stát, že ramdisk zaplní celou pamět. To v praxi může být nevhodne. Postup je obdobný z předchozím způsobem. Prvně vytvoříme adresář pro namapování ramdisku a následně vlastní ramdisk který rovnou namapujem.

sudo mkdir /mnt/ramdisk
mount -t ramfs none /mnt/ramdisk/ -o size=1g

I pro zajištění automatického vytvoření po restartu, či uložení dat při restartu použijeme předchozí postup (pozor jen na rozdil ramfs a tmpfs)

zram manual

Další variantou je modul zram. Ten má fixní velikost a navíc data komprimuje. Tím se do stejného prostoru dostane více dat. To ale má za následek zase větčí zátěž na CPU což může být z druhé strany nevýhoda.

modprobe zram num_devices=1
print "velikost_disku" /sys/block/zram0/disksize
mkfs -t "zvolte_fs" /dev/zram0
mount "dle libosti"

Nasledne provedeme nastaveni v souboru `/etc/default/zramswap`.

https://blog.brichacek.net/vyuziti-technologie-zram-u-systemu-gnulinux-s-malou-pameti/

zram system

Pro system debian axistuje přímo nastroj, který po nainstalování převezme funkci dočasného souboru swap.

apt install zram-tools

Dále budem chtít asi zajistit, aby se na disk co nejméně zapisovalo. Jeden z važných kandidátu je adresář /var/log/ kde se ukládají logy, které ale po restartu ani nepotřebujeme.

  • /var/log/journal - adresář pro journal, pokud jej smažeme, bude se journal ukladat /run/log/journal, tudiž na ramdisk.
  • /var/log/syslog - stačí vytvořit symlink na ramdisk
  • /var/log/auth.log - stačí vytvořit symlink na ramdisk
  • /var/log/daemon.log - stačí vytvořit symlink na ramdisk
  • /var/log/lastlog - (0664 root utmp)
rm -r var/log/journal
mv /var/log/syslog /dev/shm/syslog
ln -s /dev/shm/syslog /var/log/syslog
mv /var/log/auth.log /dev/shm/auth.log
ln -s /dev/shm/auth.log /var/log/auth.log
mv /var/log/daemon.log /dev/shm/daemon.log
ln -s /dev/shm/daemon.log /var/log/daemon.log

echo "f  /var/log/lastlog 0664 root utmp - -\n"       >  /etc/tmpfiles.d/lastlog.conf
echo "C  /dev/shm/lastlog - - - - /var/log/lastlog\n" >> /etc/tmpfiles.d/lastlog.conf
echo "L+ /var/log/lastlog - - - - /dev/shm/lastlog\n" >> /etc/tmpfiles.d/lastlog.conf


Další soubory / adresáře záleží na nainstalovaných službách:

  • ntpstats - slouzi pro log z ntp serveru
echo "d /dev/shm/ntpstats 0755 ntp ntp - -\n" > /etc/tmpfiles.d/ntpstats.conf
move /var/log/ntpstats/* /dev/shm/ntpstats/
ln -s /dev/shm/ntpstats /var/log/ntpstats