Hi mindenki!
Kérdezném a közösséget, hogy van-e olyan fájl rendszer, ami zramra telepíthető és (most jön a neheze), ha törlik róla az adatokat, akkor visszazsugorodik minimális (eredeti) méretére.
Próbáltam hagyományos FS-eket (ext2, ext4, btrfs,) és flash alapút is (F2FS).
De mindegyiknél ugyanaz a probléma: induláskor még jó a memfoglalás, írok rá -> elfoglal annyit amennyi szükséges, de miután törlöm a rá felmásolt adatot (tehát üres a "meghajtó") marad a memfoglalás ugyanannyi. Nem szabadítja fel önmagán a keletkezet helyet.
Tehát: egy dinamikusan növekvő/csökkenő fájl rendszert keresek memdisk-re.
Kösz mindenkinek. Üdv.
Hozzászólások
Tmpfs-t nem lehet tömöríteni?
Na igen. Overlay fs-t még nem próbáltam. Jó ötlet lehet. És elvileg a zram már önmaga is tömörít. Mindenképpen teszek egy próbát.
---------------------------------------------------------------
Ritkán szólok hozzá dolgokhoz. Így ne várj tőlem interakciót.
A legtöbb fájlrendszerben normál esetben csak a fájlra mutató bejegyzés törlődik és a tartalom maga nem íródik felül nullákkal, szerintem ezért nem csökken a tömörített méret.
Próbáld ki ezt: zerofree
http://manpages.ubuntu.com/manpages/precise/man8/zerofree.8.html
Szerk:
Használj ext4 fájlrendszert discard opcióval. Elvileg zram érti és felszabadítja a területet (akár egy SSD).
Forrás: https://code.google.com/p/compcache/issues/detail?id=98
(ez azóta elvileg bekerült a kernelbe)
Az ext4-nél próbáltam discardot. Nem volt hatása. De talán a zerofree-vel kombinálva működhet.
Mindenesetre köszi.
---------------------------------------------------------------
Ritkán szólok hozzá dolgokhoz. Így ne várj tőlem interakciót.
+1, érdekel az eredmény
Na. Kipróbáltam ext4-et zerofree-vel kombinálva. Félsiker: kicsit körülményes, és nem automatikus, de végülis eléri a célt. Még futok a problémával 1-2 kört. Aztán meglátjuk.
De kösz a tippet mégegyszer.
---------------------------------------------------------------
Ritkán szólok hozzá dolgokhoz. Így ne várj tőlem interakciót.
Esetleg kipróbálhatod az fstrim-et, de ha a discard nem működött, akkor valószínűleg ez se fog.
+1 a tmpfs-nek
tmpfs automatikusan kikerül swapre, ha szükséges. A swapot pedig úgy konfiguráld, hogy a zramon létrehozottnak legyen nagyobb prioritása.
-----
“Firefox, you say? No I don't play Pokémon”
Sejtem hogy gondolod, de ez így már nem biztos hogy jó nekem. Túl körülményes. A lényeg hogy ideiglenesen szükséges, de a háttérben mindig elérhető megoldás kell. Ami ha nem használom, szinte észrevehetetlen.
---------------------------------------------------------------
Ritkán szólok hozzá dolgokhoz. Így ne várj tőlem interakciót.
Az úgy nem elegendő, hogy van egy
zswap.zpool=zsmalloc
kernel paraméter, továbbá tmpfs-t használsz? Ekkor ugyan nem lesz tömörítve, csak akkor, ha fogytán a RAM, és elkezd swap-elni. Kompromisszumnak esetleg?tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
Tehát a megoldás: Röviden: végül a TMPFS győzött. Ugyan próbáltam hagyományos block(?) alapú fájl rendszereket (ext*, btrfs, F2fs), de nem volt gördülékeny/automatikus. Csak valami scripttel, és harmadik progival megoldható a kívánt működés.
Hosszabban: Abból indultam ki, hogy a zram alapból tömörít. Így elvileg bármit húzok is rá, kis helyet fog foglalni. Ext*-ekkel ez működött is, csak beragadt a helyfoglalás. És azért 1,6 giga a memcsiből csak úgy, azért sok. A discard sem használt. Az fstrimmet ki se próbáltam mert..... tettem egy próbát a TMPFS-sel. És láss csodát: egyből és egy paranccsal ment.
A méretfoglalásról csak annyit, hogy amíg van helye, addig kétszeresen foglal. Mert ugye a zram, és lemez cache is. De ha fogytán a mem, akkor a lemez cachet újrahasznosítja. A tömörítésről sem tudok még nyilatkozni, mert nincs nagy mennyiségű, jól tömöríthető fájlom. Bár df -h szerint 2-2,5 gigám van a memdisken. Mindegy. Így nekem most megfelelő. A célomra tökéletes.
Azért idebiggyesztem a parancsokat (nulláról):
modprobe zram num_devices=1; echo 1600M > /sys/block/zram0/disksize; mount -o noexec -t tmpfs /dev/zram0 /mnt/memdisk; chmod a+w /mnt/memdisk
ez a legutolsó szerintem elhagyható. Én biztos ami biztos alapon használom.
És én speckó az rc.local-ban használom, de bárhova máshova is rakható (gondolom).
Nos. Köszönöm a javaslatokat, ötleteket. Szeretek ide járni gondolkodni.
Üdv mindenkinek.
---------------------------------------------------------------
Ritkán szólok hozzá dolgokhoz. Így ne várj tőlem interakciót.
ez biztos jol mukodik? en ugy tudtam a tmpfs nem hasznal "backend" devicet
--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
Mire gondolsz a "biztos jól működik?" alatt. Lehet ez egy újabb verzió? Használat alatt szépen nyomon követhető a változás free -m -el. A shared-be dolgozik. És min mondtam a df szerint is "létező" lemez.
---------------------------------------------------------------
Ritkán szólok hozzá dolgokhoz. Így ne várj tőlem interakciót.
Biztos jól működik? = reboot után marad bármi a tartalmából? valóban a zramban tárolja az adatokat?
Mert a tmpfs a virtuális memória (RAM + swap terület) éppen kihasználatlan blokkjaiban tárol adatot, rebootnál a tartalma elveszik. A tmpfs mount úgy néz ki, hogy a block device mezőbe random bármit írhatsz (tipikus: none), mert ő nem használ block device-t, hiszen nem perzisztens a tárolása, nincs is rá szüksége.
Ha ez a célod, akkor minden szép és jó, bár nem értem, hogy minek a zram hozzá, mert az szerintem nem tesz hozzá a tmpfs működéséhez már semmit se...
Mivel RAM-ban tárol, nyilván elvész a tartalma kikapcsoláskor. Gondolom, azért rakhatta zram-ba, hogy valós időben tömörödjön, kevesebb RAM-ot faljon fel a file-ok tárolása.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
Arra a kérdésedre a válasz hogy nem baj-e ha felejt, a válasz hogy nem. Nem az a cél hogy ne felejtsen, hanem hogy ideiglenesen legyen elérhető egy fájl. Az eredetije tárolva van máshol.
---------------------------------------------------------------
Ritkán szólok hozzá dolgokhoz. Így ne várj tőlem interakciót.
mount -o noexec -t tmpfs /dev/zram0 /mnt/memdisk
itt a dev/zram0 helyett irhatnal csigabigabatkamano-t is, nincs ertelme, mert a tmpfs mindig memoriabol (ram + swap) veszi a helyet, ezt a parametert figyelmenkivul hagyja.
a zram eszkozt swapkent tudod hasznalni, amit igy majd a tmpfs is fogja (meg a firefox 100 tabbal :D)
mkswap /dev/zram0
swapon /dev/zram0 -p 10
--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
A zswap.zpool=zsmalloc kernelparaméter is járható út.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
Igen. Ezt már egyszer javasoltad. Eltettem.
---------------------------------------------------------------
Ritkán szólok hozzá dolgokhoz. Így ne várj tőlem interakciót.
Bocsánat, figyelmetlen voltam. Mást is csinálok közben.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
Hmmm... ebben igazad van. Úgy látszik alaposabban tesztelnem kell ezt a megoldást. Csak azt nem értem, hogy hogy foglal kevesebb helyet a másolt fájl, mint amennyi ő maga? Vagy félreértelmeznék valamit? Na majd utánajárok.
---------------------------------------------------------------
Ritkán szólok hozzá dolgokhoz. Így ne várj tőlem interakciót.
És azon gondolkodtál, hogy nem lehetne ezt fstab-bal elintézni? A gugli ad pár jónak tűnő találatot a "zram fstab" kifejezésre.