Ram disk: Porovnání verzí
(→zram system) |
(→shm) |
||
(Není zobrazeno 10 mezilehlých verzí od stejného uživatele.) | |||
Řádka 1: | Řádka 1: | ||
+ | == 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 == | == tmpfs == | ||
Řádka 23: | Řádka 55: | ||
Poté do otevřeném souboru vložíme následující text. Pozor, musíme zmenit user, na platného uživatele. | 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 == | == ramfs == | ||
Řádka 52: | Řádka 97: | ||
rm -r var/log/journal | rm -r var/log/journal | ||
− | + | mv /var/log/syslog /dev/shm/syslog | |
ln -s /dev/shm/syslog /var/log/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 | 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 | ln -s /dev/shm/daemon.log /var/log/daemon.log | ||
Aktuální verze z 6. 11. 2023, 21:41
Obsah
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