Linuxon (amit online nem lehetséges hallgatni, nézni) zenét, videót RAM-ba is le lehet tölteni, a háttértárakat kímélendő?
Pl linux-on van megoldás RAM-ból virtuális partíciót készíteni? Nem kockáztatos a RAM számára, ha van ilyen megoldás?
Vagy más megoldás létezik erre?
Olyan esetre gondolok, amikor azonnal, vagy kisvártartva a zenét, videót amúgy is meghallgatom, megnézem, tehát amikor nem muszáj archiválnom, tárolnom.
Ramdisk néven keress rá a megoldásra:
Köszi! Ha mount-olok ramdisk-et a /mnt mappa alá, és megadok neki kapacitást, akkor onantól az általános célú RAM felhasnzálásom ugye ennyivel kisebb kapacitású lesz?
Rendszeresen vissza is lehet csinálni? Azaz a mount-olt ramdisk probléma nélkül le is szedhető később, ha nem lesz már rá szükségem?
A szokásosnál jobban terheli a RAM-ot a ramdisk? Van különösebb hardverhiba-kockázata a ramdisk alkalmazásának?
Több ilyen megoldás is létezik, a RAMnak egyiktől sem lesz baja. A legegyszerűbb (és nagy eséllyel a neked legmegfelelőbb) a tmpfs használata, így:
mount -t tmpfs -o size=8192m barmi /itt/lesz/elerheto
A "barmi" az eszköz neve, ami itt ugye nincs, tehát szabadszöveges a dolog. Ez meg fog jelenni a mount és a df kimenetében, más jelentősége nincs. A /itt/lesz/elerheto ugye az a könyvtár, ahová csatolni akarod a "ramdiszket".
A másik lehetőség a ramfs használata. Ez majdnem ugyanaz, mint a tmpfs:
mount -t tmpfs barmi /itt/lesz/elerheto
A ramfst nem lehet korlátozni, az addig nő, amíg van memória (hiába adsz neki "size" mount opciót, nem veszi figyelembe).
A harmadik lehetőség a "rendes" ramdiszk használata, ezt a "brd" modul betöltésével tudod elérni. Ez általában megvan minden Linux rendszeren, de sehol nincs alapértelmezettként betöltve. A modul rd_nr paramétere határozza meg, hogy hány diszked lesz (alapértelmezettként 8, de gondolom egynél több nem kell, tehát tökmind1), az rd_size pedig, hogy egyenként mekkorák (kilobyte-ban). Ezek /dev/ram* néven lesznek elérhetőek, és "rendes" blokkeszközként működnek, tehát kell rájuk fájlrendszer ahhoz, hogy csatolni tudd. Valahogy így lehet brd ramdiszket csinálni (ez egy 8 gigás diszk):
modprobe brd rd_size=8388608
mkfs.ext4 /dev/ram0
mount /dev/ram0 /itt/lesz/elerheto
Amit tudni kell ezekről:
- Egyik sem foglalja le a memóriát "egy az egyben", csak ha írsz rájuk fájlokat, akkor látod, hogy fogy a memória.
- A tmpfs és a ramfs felszabadul, ha umountolod, így az odaírt dolgok ilyenkor elvesznek (és visszakapod a memóriát)
- A /dev/ram* (mivel "blokk eszköz") megtartja az adatokat addig, amíg a brd modult ki nem kukázod, vagy le nem törlöd az adatokat kézzel az eszközről. Egyszerű umount nem törli a tartalmát, és nem adja vissza a memóriát.
- A tmpfs képes rá, hogy swapeljen, a másik kettő nem tesz ilyet.
- Mivel a /dev/ram* dolgokra kell fájlrendszer, így azoknál a használható méret mindig kicsivel kisebb lesz, mint az eszköz mérete.
- Bármelyikkel tudsz olyan helyzetet teremteni, hogy megegye a memóriát, és olyankor le fog állni minden, mivel az OOM killer nem öl meg kernel processzt, és a ramdiszk mount az ilyen. Ezért célszerű tmpfs-t vagy brd-t használni, értelmesen beállított mérettel.
"Ha mount-olok ramdisk-et a /mnt mappa alá, és megadok neki kapacitást, akkor onantól az általános célú RAM felhasnzálásom ugye ennyivel kisebb kapacitású lesz?"
Amíg nem helyezel el a felcsatolt könyvtárban állományokat, addig nem lesz felhasználva.
"Azaz a mount-olt ramdisk probléma nélkül le is szedhető később, ha nem lesz már rá szükségem?"
umount paranccsal le tudod csatolni
Nagyon szépen köszi, előző, a részletes válaszod! :) Kérdezek erről is.
Az szeretném elérni, hogy elsősorban ideiglenes legyen a RAM foglalás és teljesen mellőzze a háttértárakat, hiszen azon tehermentesítése a fő célom evvel.
Mindeképp be szeretnék állítani konkrét kapacitás határt, mégpedig elég kicsit. A devram ezek szerint nekem nem nyerő megoldás.
Viszont azt írod, swap-el a tmpfs, ugye? Swap-elés háttértárra megy, nem? Ha ez a helyzet, ez is kiesik nekem.
Akkor a megoldás számomra a ramfs volna?
Az is érdekel, bármelyik esetén ha áramtalanítom a gépet (kilépést követően), akkor elveszik a tartalom akkor is, ha nem történt unmount, se nem töröltem előzőleg manuálisan?
Igen, a swapelés háttértárra megy, tehát ha abszolút, mindenképpen ki akarod kerülni a "rendes" diszk használatát, akkor a tmpfs sem annyira jó, ilyenkor marad a "rendes" ramdiszk. Mondjuk ha elég kicsi kapacitást állítasz be, akkor elég valószínűtlen, hogy kiswappelje a fájljaidat, de nyilván nincs rá garancia, hogy a fájlokból semennyi nem fog megjelenni diszken, akármilyen kicsi méretet is állítasz be.
Persze az is egy megoldás, hogy kikapcsolod a swapet arra az időre, amíg a ramdiszket használod, akkor tuti nem fog swapelni. Swap nélkül is működik a rendszer, és bár azért vannak hátrányai egy ilyen működésnek, simán lehet, hogy semmit nem fogsz észrevenni belőle, ha elég sok memóriád van.
Bármelyiket is használod, kikapcsolásnál (de egy újraindításnál is) mindenképpen elveszik a tartalom.
"akkor a tmpfs sem annyira jó, ilyenkor marad a "rendes" ramdiszk."
Az pontosan melyik verzió?
És a swap-ot hogyan lehet kikapcsolni átmenetileg?
"Az pontosan melyik verzió?"
ramfs
"És a swap-ot hogyan lehet kikapcsolni átmenetileg?"
swapoff
A "rendes" ramdisk alatt a /dev/ram* eszközöket értettem. A ramfs is jó, csak ugye ott nem tudod a max. méretet szabályozni.
Hogy _pontosan_ mikor és mennyi swapet használ a rendszer az egy kicsit bonyolultabb téma, ha nagyon érdekel, itt van egy jó írás róla:
Swap kikapcsolásánál a swapoffnak mondd, hogy "-a", az kikapcsol minden swapet (ha ezt nem mondod neki, akkor meg kell adnod, hogy pontosan melyik eszközön levő swapet akarod kikapcsolni). Visszakapcsolni a "swapon -a" paranccsal tudod.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!