Homebrew (Wikipedie), správce balíčků pro macOS a od verze 2.0.0 také pro Linux, byl vydán ve verzi 4.5.0. Na stránce Homebrew Formulae lze procházet seznamem balíčků. K dispozici jsou také různé statistiky.
Byl vydán Mozilla Firefox 138.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 138 je již k dispozici také na Flathubu a Snapcraftu.
Šestnáctý ročník ne-konference jOpenSpace se koná 3. – 5. října 2025 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytvářejí všichni účastníci, se skládá z desetiminutových
… více »Richard Stallman přednáší ve středu 7. května od 16:30 na Technické univerzitě v Liberci o vlivu technologií na svobodu. Přednáška je určená jak odborné tak laické veřejnosti.
Jean-Baptiste Mardelle se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 25.04.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.
TmuxAI (GitHub) je AI asistent pro práci v terminálu. Vyžaduje účet na OpenRouter.
Byla vydána nová verze R14.1.4 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5, Wikipedie). Přehled novinek i s náhledy v poznámkách k vydání. Podrobný přehled v Changelogu.
Bylo vydáno OpenBSD 7.7. Opět bez písničky.
V Tiraně proběhl letošní Linux App Summit (LAS) (Mastodon). Zatím nesestříhané videozáznamy přednášek jsou k dispozici na YouTube.
Ono je garantované že to BTRFS ballance presunie všetky dáta na začiatok disku?No, proto je tam ten resize.
btrfs fi resize -8g /home/user/dav
Tak ten som si nevšimol, priznám sa.Já napoprvé také ne a vrtalo mi to hlavou. A zjistil jsem, že
btrfs check
je úplně jedno, že se mu zmenšil blockdevice. lvcreate -L 64G -n btrfs VGData btrfs fi show ... devid 1 size 64.00GiB used 20.00MiB path /dev/mapper/VGData-btrfsZmenšíme to:
lvreduce -L 16G /dev/VGData/btrfs btrfs fi show ... devid 1 size 64.00GiB used 20.00MiB path /dev/mapper/VGData-btrfsA check ani nepípne:
btrfs check /dev/VGData/btrfs Opening filesystem to check... Checking filesystem on /dev/VGData/btrfs UUID: a1f63e1d-33d0-4759-bb81-987c2b37f099 [1/7] checking root items [2/7] checking extents [3/7] checking free space cache [4/7] checking fs roots [5/7] checking only csums items (without verifying data) [6/7] checking root refs [7/7] checking quota groups skipped (not enabled on this FS) found 655360 bytes used, no error found total csum bytes: 0 total tree bytes: 131072 total fs tree bytes: 32768 total extent tree bytes: 16384 btree space waste bytes: 124530 file data blocks allocated: 524288 referenced 524288Oni asi věděli, proč ho nepsali. Ještě by někdo chtěl, aby fungoval.
Pozrel som si to ako nápad, vytvoril sparse loopback, nahodil BTRFS, plnil mu FS náhodnými dátami (z ktorých som trochu odmazával aby nastávala fragmentácia) a potom som jednoducho pustil FSTRIM.Jo, toto funguje, pokud se výchozí "blockdevice" vytvoří jako sparse. Což asi ne každý dělá nebo chce. Umějí to i widle na iscsi, svého času jsem takto měl ntfs disky ve widlích přes iscsi, protože se mi nechtělo mít v herním kompu rotační disky a ssd byly malý.
toto funguje, pokud se výchozí "blockdevice" vytvoří jako sparse.Čudné na tom je to, že som si nevytvoril sparse file, a fungovalo mi to.
# dd if=/dev/zero of=bigfile bs=1M count=16384 # du bigfile 16777216 bigfile # losetup --find --show bigfile /dev/loop0Zajímavé je, že BTRFS detekuje SSD. A teď proč? Buď mu schopnost discard posílá přímo LOOP, nebo LOOP ví, že je na SSD a tuto vlastnost propouští. Bohužel nemám k disposici HDD, na kterém bych to teď rychle vyzkoušel:
# mkfs.btrfs /dev/loop0 btrfs-progs v5.9 See http://btrfs.wiki.kernel.org for more information. Detected a SSD, turning off metadata duplication. Mkfs with -m dup if you want to force metadata duplication. Label: (null) UUID: ecb9cfc8-1269-45d8-ba11-4f745233f3ed Node size: 16384 Sector size: 4096 Filesystem size: 16.00GiB Block group profiles: Data: single 8.00MiB Metadata: single 8.00MiB System: single 4.00MiB SSD detected: yes Incompat features: extref, skinny-metadata Runtime features: Checksum: crc32c Number of devices: 1 Devices: ID SIZE PATH 1 16.00GiB /dev/loop0 # mount /dev/loop0 /mnt/btrfsProtrimujem to:
# fstrim /mnt/btrfs
# ls -l total 262960 -rw-r--r-- 1 root root 17179869184 Dec 23 18:38 bigfile # du * 262960 bigfileJo, takže to prostřílel, i když to na začátku nebyl sparse file. Jestli budu mít čas a vzpomenu si na to, tak to ještě zkusím na HDD. Podkladový FS XFS. Debian Testing, 5.9.0-4-amd64
Súbor umožňuje vystreliť prázdne miesto (punch hole) o ktoré sa zmenší obsadená veľkosť daného súboru.To je jasné, ale to ještě neznamená, že loop musí tuto vlastnost automaticky použít. Tj aktivně tomu FS reportovat, že blockdevice loop0 umí discard. To není automatická vlastnost všech blockdevice a před pár lety to byla spíše výjímka. A ano, do souboru se umí dělat díry, ale ne každý admin to automaticky chce. Nenašel jsem možnost ten loop nějak nastavit (krom size, offest, apod), třeba to nějak jde.
Nerozumiem prečo by mal túto vlastnosť povoľovať alebo zakazovať podľa toho či je ten disk na SSH alebo HDD.To byla jen úvaha, že by tuto vlastnost dědil z FS na kterém je ten zdrojový soubor. Tj aby FS v loopu měl stejné podmínky, jako FS na kterém leží zdrojový soubor.
Preto že tvoja úvaha že by sa mal loopback chovať pri príkaze TRIM podľa toho či je na SSD alebo HDD je scestná.Ne, není. Blockdevice běžně dědí (nebo může) vlastnosti z nadraženého blockdevice nebo poskytují další data (třeba velikosti a rozložení stripu). Tj tato moje myšlenka vedla právě k tomu dědění. Nic víc! O žádném wear levelingu apod jsem nikdy nemluvil! Aneb jak jedna malá věta dokáže někoho vést na zcestí. Jinak, pokud tuhle zbytečnost teda ukončíme a vrátíme se k věci, tak ono je to teda ještě horší, než jsem si myslel: Pokud chce vyšší vrstva (tedy FS v loop device) DISCARD, dostane automaticky PUNCH_HOLE (bez možnosti konfigurace):
case REQ_OP_DISCARD: return lo_fallocate(lo, rq, pos, FALLOC_FL_PUNCH_HOLE);Jenže, pokud to chce jen vynulovat, tak dostane by default taky PUNCH_HOLE, pokud si neřekne jinak (a zatím jsem nenašel možnost to nastavit).
case REQ_OP_WRITE_ZEROES: /* * If the caller doesn't want deallocation, call zeroout to * write zeroes the range. Otherwise, punch them out. */ return lo_fallocate(lo, rq, pos, (rq->cmd_flags & REQ_NOUNMAP) ? FALLOC_FL_ZERO_RANGE : FALLOC_FL_PUNCH_HOLE);A to je to, o čem jsem mluvil, že to automaticky dělá díry do souborů i když admin nechce. Tj do toho FS to reportuje vlastnost discard (tj fs to detekuje jako SSD, viz výpis
mkfs.btrfs
), a na základě toho, že mu tam FS posílá discard, dělá díry do souboru (což nejde vypnout; tj že by admin třeba nastavit to vynulování - discard vždy dělá díry). U toho zeroout by to nějak snad mohlo jít vypnout, ty vynutit si zákaz disard v tom fs v loopu a potom ten loop nějak přesvědčít, aby nedělal díry, ale zkutečně tam zapsal ty nuly.
nechápemAno a po x té už to prostě psát nebudu. Upnul ses na nesmysl, který jsem nikdy nenapsal.
ako stále tvrdíšKde to stále tvrdím? Nikde jsem to netvrdil, 5x jsem to vyvrátil. Tohle je nějaká vánoční společenská hra? Tak ještě tak dvě kola, ok? Potom jdu dělat něco užitečnějšího
Aha, tak že by loop uměl prostřílet díry i v normálním souboru? Jako jde to, ale (asi) by měl respektovat původní nastavení.Takže naozaj by mal loop device pri TRIM rešpektovať či je na SSD (a vystrieľať diery) alebo či je na HDD (a nič nerobiť) aj keď hole punching nemá nič s podkladovou vrstvou SSD/HDD? Nuž to znie veľmi zaujímavo, a rád by som vedel ako by sa mal loop device zachovať napríklad na stále bežných hybridných diskoch, DVD RAM vynecháme ako módny výstrelok ktorý sa neuchytil. Kľudne pokračuj, rád sa dozviem niečo o strategickom plánovaní funkcionality ovládačov blokovej vrstvy.
Ono sa to točí okolo tvojho rešpektovania pôvodného nastaveniaKde není o SSD ani slovo. Je to reakce na tvůj komentář:Aha, tak že by loop uměl prostřílet díry i v normálním souboru? Jako jde to, ale (asi) by měl respektovat původní nastavení.
Čudné na tom je to, že som si nevytvoril sparse file, a fungovalo mi to.A i komentář před tím se točí okolo sparse vs normální soubor. Tj o SSD (z mé strany) nepadlo ani slovo a diskuse se vedla kolem toho, zda loop respektuje klasický soubor. Další (moje) bádání přineslo informaci, že nerespektuje a naopak preferuje vytváření sparse file pomocí punch hole. Ani slovo o SSD.
Jo, takže to prostřílel, i když to na začátku nebyl sparse file.
A to je to, o čem jsem mluvil, že to automaticky dělá díry do souborů i když admin nechce.Akorát je otázka, jestli admin skutečně nechce, tj. jestli v reálném (nikoliv teoretickém) nasazení existuje důvod, proč ty díry nechtít dělat. Vzhledem k tomu, že za ty roky nikomu nestálo za to věnovat čas tomu, aby to šlo (např. bylo přepínatelné pomocí nějakého flagu při vytvoření toho loop device), tak to asi není tak kritické.
důvod, proč ty díry nechtít dělatTak důvodů může být víc. Sparse soubor je ze své přirozenosti mnohem fragmentovanější a tedy mnohem pomalejší (na sekvenční zápis / čtení). Tohle je třeba i vlastnost ZFS ZVOL, kdy se vždy vytváří jako sparse a nelze jej předalokovat, ale výkon teda odpovídá tomuto typu. Tj sekvenční rychlost zvolu je o dost nižší, než při použití skutečného souvislého blokového zařízení (tj třeba LV). Dneska na SSD / NVMe je už to skoro jedno, ale na HDD je rozdíl velký (200MB/s vs 60MB/s a to ještě na poměrně mladém čistém zfs). Proto třeba pro disky VM preferuju LVM, čisté lineární blokové zařízení s plnou rychlostí disku. Potom management místa na disku. Pokud nahraju a připojím (rw) 500GB souboru s image nějakého FS a přes noc se stane naplánovaný
fstrim -a
a smrskne se to na 30GB, tak náhle mám víc volného místa na disku (než bych "měl" mít). Což může být problém při zaplnění disku a následného zápisu do toho připojeného FS. Tedy je to starost navíc. (zfs ve výchozím stavu rezervuje místo na disku pro zvol, lze to vypnout - tj pokud bych ten 500GB image nahrál do zvolu, tak sice bude zabírat jen 30GB, ale těch 500GB bude stále rezerováno - tohle na klasickém FS, kde je loop soubor prostě jen soubor, by default nemám, musel bych dělat quoty apod.)
Další věc, která ale přímo nesouvisí s vytvářením děr do toho souboru je to, že loop se (automaticky? - /sys/block/DEV/queue/rotational
) tváří jako ssd, resp FS jej tak interpretují (tj podporuje discard). To může u některých FS změnit způsob chování k tomu zařízení (viz třeba option ssd / nossd v mountu btrfs). Dopad na výkon toho FS by se musel změřit.
Vzhledem k tomu, že za ty roky nikomu nestálo za to věnovat čas tomuTak ona je spíš otázka, jestli se někde reálně masivně nasazuje loop pro zápis v produkčním prostředí. Loop se používá pro mount různých squashfs nebalíčků (snap), ale tj ro.
Jo, to bude jedno souviset s druhým. Když pominu různé "potřebuju se podívat do ISO souboru", nenapadá mě žádný dobrý důvod, proč v produkci používat loop místo jiného (s největší pravděpodobností rozumnějšího a čistšího) řešení.Vzhledem k tomu, že za ty roky nikomu nestálo za to věnovat čas tomuTak ona je spíš otázka, jestli se někde reálně masivně nasazuje loop pro zápis v produkčním prostředí.
Proto má každý slušný souborový systém možnost TRIM používat nebo nepoužívat (předpokládám, že BTRFS taky).Nějak všichni ignorujete tu druhou větev. Tedy to, že zeroout udělá punch hole. Tj je tu několik nezávislých věcí. Loop device se chová jako nonrotational device. FS uvnitř loopu to tedy detekuje jako ssd. Což má vliv na jeho optimalizaci vůči ne/rotačním diskům. Tohle se dá vypnout pomocí volby mountu. Potom je tady druhý problém. Zařízení loop umí funkci discard (discard není jen vlastností ssd, i dřívější disková pole měla příkaz unmap). Tj fs v tom loopu může posílat příkaz discard do toho loop zařízení. Kde se tohle vždy interpretuje jako punch hole. Ok, v pořádku a píšu to asi po desáté, že by to mohlo být konfigurovatelné. Jenže potom je tu další problém, že i když fs nepošle discard, ale jen pošle příkaz pro vynulování oblasti (REQ_OP_WRITE_ZEROES), tak loop device by default stejně provede punch hole.
Můžeš zkusit někoho přemluvit k tomu, aby do loop dopsal volitelnou podporu pro předávání TRIM.Ale proč bych to měl JÁ dělat? Proč mi tady už dva lidi podsouvají něco, co jsem nikdy neřekl, nechtěl, nemyslel, nenapsal a asi 20x se proti tomu ohradil? Nikde nehovořím nic o tom, že by se mělo něco z loop device předávat na ssd. Nikde. Celá nešťastná diskuse začala tím, zda by měl loop device zachovávat obyčejný soubor, pokud tedy není vytvořen jako sparse. Pohled do zdrojáků jasně ukazuje, že si tam vesele dělá díry a že je preferuje i před nulami. Hotovo, případ vyřešen.
Nikde nehovořím nic o tom, že by se mělo něco z loop device předávat na ssd.A když jsme u toho, zrovna tohle by se u toho trim dít mělo (a pokud dobře chápu, tak i děje.) Pokud něco udělá trim nad tím loop device, měl by ten trim dolézt až na to SSD (thin-lv, ceph, ...)
Pohled do zdrojáků jasně ukazuje, že si tam vesele dělá díry a že je preferuje i před nulami. Hotovo, případ vyřešen.Když tak nad tím přemejšlím, napadá mě, že to bylo zvoleno jako efektivnější způsob (oproti zápisu těch nul), jak tam ty nuly dostat. Zbytek - že se nedetekuje, jestli ten původní soubor byl sparse, a že se to nedá konfigurovat - je podle mě ŽaVeS
A když jsme u toho, zrovna tohle by se u toho trim dít mělo (a pokud dobře chápu, tak i děje.) Pokud něco udělá trim nad tím loop device, měl by ten trim dolézt až na to SSD (thin-lv, ceph, ...)Jasně, já taky neříkám, že se to dít nesmí/musí, jen jsem se k tomu vůbec nevyjadřoval, protože toto je věcí toho podkladového FS, na kterém leží onen soubor nad kterým je loop. Ten si s tím poradí po svém a bude mít pro puch hole vlastní optimalizace.
Když tak nad tím přemejšlím, napadá mě, že to bylo zvoleno jako efektivnější způsob (oproti zápisu těch nul), jak tam ty nuly dostat.OT: když jsem si s tím teď hrál v rámci této diskuse, tak jsem testoval na zfs vynulování ZVOL, což způsobilo snížení zabrané velikosti až na výchozích 128kB. Potom jsem si všiml, že tam je zděděná komprese. Při vypnutí komprese to poctivě uchovává i ty nuly. Výchozí komprese je lz4, ale nabízí i speciální zle (The zle compression algorithm compresses runs of zeros.) Tj zfs s nulama nic nedělá a nechá to až na volitelné kompresní metodě. Tj způsobů, jak se toho zbavit a za každou cenu ušetřit místo na disku, je hodně
Pohled do zdrojáků jasně ukazuje, že si tam vesele dělá díry a že je preferuje i před nulami. Hotovo, případ vyřešen.To vyzerá zaujímavo, ale má to jeden drobný háčik:
golisp@HP-ProBook-6460b:~$ fallocate --length 8G /tmp/loopback golisp@HP-ProBook-6460b:~$ du -sh /tmp/loopback 8.1G /tmp/loopback golisp@HP-ProBook-6460b:~$ losetup -f /dev/loop13 golisp@HP-ProBook-6460b:~$ sudo losetup /dev/loop13 /tmp/loopback [sudo] password for golisp: golisp@HP-ProBook-6460b:~$ sudo dd if=/dev/zero of=/dev/loop13 bs=10M status=progress 8535408640 bytes (8.5 GB, 7.9 GiB) copied, 176 s, 48.5 MB/s dd: error writing '/dev/loop13': No space left on device 820+0 records in 819+0 records out 8589934592 bytes (8.6 GB, 8.0 GiB) copied, 180.96 s, 47.5 MB/s golisp@HP-ProBook-6460b:~$ sync golisp@HP-ProBook-6460b:~$ du -sh /tmp/loopback 8.1G /tmp/loopback golisp@HP-ProBook-6460b:~$ sudo blkdiscard -v /dev/loop13 /dev/loop13: Discarded 8589934592 bytes from the offset 0 golisp@HP-ProBook-6460b:~$ du -sh /tmp/loopback 20K /tmp/loopback golisp@HP-ProBook-6460b:~$ sync golisp@HP-ProBook-6460b:~$ du -sh /tmp/loopback 8.1G /tmp/loopback golisp@HP-ProBook-6460b:~$Takto sa mi to chová pri jadre 5.8 na rotačnom HDD, a rovnaké chovanie som mal aj na SSD. Pri prepise nulami sa nevystrieľali diery a podkladový súbor ostal v pôvodnej veľkosti. Tie diery vystrieľal až TRIM (pre zjednodušenie pomocou blkdiscard). Keď som dal takýto deravý súbor prepísať nulami cez loopback device , tak sa natiahol na pôvodnú veľkosť.
TRIM pri loopback device nerobí discard pri prepise nulami. sudo dd if=/dev/zero of=/dev/loop13 bs=10M status=progressMožná by bylo načase, abyste se tu přestal ztrapňovat předváděním nejenom své neschopností pochopit psaný text, ale také svými neznalostmi.
A taky bych doporučoval se podívat, jak vypadá obsah souboru vytvořeného přes truncate. Ne. Nuly v něm opravdu nejsou.Já bych doporučoval, abyste si to zkusil sám, co by tam mělo být jiného než nuly?
$ truncate -s 128 trupokus.txt $ hexdump <trupokus.txt 0000000 0000 0000 0000 0000 0000 0000 0000 0000 * 0000080
~$ ls -al soubor -rw-r--r-- 1 root root 5 pro 29 10:07 soubor ~$ cat soubor 00000~$ hexdump soubor 0000000 3030 3030 0030 0000005Nuly, které vrací hexdump jsou pouze binální interpretací volného místa. Stačí místo hexdump použít od
~# truncate -s 10 soubor ~$ cat soubor 00000~$ hexdump soubor 0000000 3030 3030 0030 0000 0000 000000a ~# cat soubor | od -a 0000000 0 0 0 0 0 nul nul nul nul nul 0000012
/dev/zero
, tak jste s 0x30 "nulou" úplně mimo téma. Rodíl mezi nulou zapsanou na disku a nulou z volného místa je pak pro praktické aplikace, které s tím souborem pracují, veškerý žádný.
Když vytvoříš prázdný soubor o velikosti X, tak obvykle NECHCEŠ, aby se ti sám od sebe automaticky smrsknul.Ale chceš, aj keď o tom nevieš. Funkcionalita Hole Punching je už dávno hlboko zakorenená v systéme a userspace. A to nielen pri loopbacku, ale aj napriamo do súboru keďže mkfs.ext4 tie diery vystrieľal do súboru aj bez toho obávaného loopbacku. Obavy by som pochopil na 10 ročných diskoch s mizerným IOPS kde mu dá fragmentácia poriadne zabrať. Alebo na prostrediach kde sa človek spolieha že odloží voľačo čo nechce sledovať, ale v tom prípade je to voľačo bezcenné keďže to nestojí za kontrolu. PS: Použil som fallocate, nie truncate. To fallocate mi reálne alokovalo miesto, truncate mi alokovalo prd:
$ fallocate -l 8G /tmp/falloc; du -sh /tmp/falloc 8.1G /tmp/falloc $ truncate -s 8G /tmp/trunc; du -sh /tmp/trunc 0 /tmp/trunc
Oni asi věděli, proč ho nepsali. Ještě by někdo chtěl, aby fungoval.Na 4.9 takový FS šel i bez problému namountovat a dokonce i číst. Jen v okamžiku, kdy si driver sáhnul za konec zařízení, nastal kernel oops. Teď jsem to vyzkoušel na 5.8, namountovat jde, číst jde, a sáhnutí za konec zařízení už se handluje bezpečně. Jen je mrzuté, že ti to neřekne, a přijde se na to až při pokusu o čtení souboru který vyšel za konec, nebo při scrubu. Takže když uděláš chybu, tak na ni můžeš přijít až příliš pozdě (např. v okamžiku, kdy už jsi uvolněné místo něčím přepsal). Konkurenční filesystémy se nenamountují a řeknou ti proč (EXT4-fs (loop1): bad geometry: block count 256000 exceeds size of device (204800 blocks)).
kolik prapodivností dokážeš zkombinovat na produkčním serveru ... pro zvětšní místa na VM není potřeba ani odstávky, že za běhu přidá další disk a vloží jej do LVM VG a jen zvětší příslušné LV.V jednom příspěvku
Tiskni
Sdílej: