Open source modální textový editor Helix, inspirovaný editory Vim, Neovim či Kakoune, byl vydán ve verzi 25.07. Přehled novinek se záznamy terminálových sezení v asciinema v oznámení na webu. Detailně v CHANGELOGu na GitHubu.
Americký výrobce čipů Nvidia získal od vlády prezidenta Donalda Trumpa souhlas s prodejem svých pokročilých počítačových čipů používaných k vývoji umělé inteligence (AI) H20 do Číny. Prodej těchto čipů speciálně upravených pro čínský trh by tak mohl být brzy obnoven, uvedla firma na svém blogu. Americká vláda zakázala prodej v dubnu, v době eskalace obchodního sporu mezi oběma zeměmi. Tehdy to zdůvodnila obavami, že by čipy mohla využívat čínská armáda.
3D software Blender byl vydán ve verzi 4.5 s prodlouženou podporou. Podrobnosti v poznámkách k vydání. Videopředstavení na YouTube.
Open source webový aplikační framework Django slaví 20. narozeniny.
V Brestu dnes začala konference vývojářů a uživatelů linuxové distribuce Debian DebConf25. Na programu je řada zajímavých přednášek. Sledovat je lze online.
Před 30 lety, tj. 14. července 1995, se začala používat přípona .mp3 pro soubory s hudbou komprimovanou pomocí MPEG-2 Audio Layer 3.
Výroba 8bitových domácích počítačů Commodore 64 byla ukončena v dubnu 1994. Po více než 30 letech byl představen nový oficiální Commodore 64 Ultimate (YouTube). S deskou postavenou na FPGA. Ve 3 edicích v ceně od 299 dolarů a plánovaným dodáním v říjnu a listopadu letošního roku.
Společnost Hugging Face ve spolupráci se společností Pollen Robotics představila open source robota Reachy Mini (YouTube). Předobjednat lze lite verzi za 299 dolarů a wireless verzi s Raspberry Pi 5 za 449 dolarů.
Dnes v 17:30 bude oficiálně vydána open source počítačová hra DOGWALK vytvořena v 3D softwaru Blender a herním enginu Godot. Release party proběhne na YouTube od 17:00.
McDonald's se spojil se společností Paradox a pracovníky nabírá také pomocí AI řešení s virtuální asistentkou Olivii běžící na webu McHire. Ian Carroll a Sam Curry se na toto AI řešení blíže podívali a opravdu je překvapilo, že se mohli přihlásit pomocí jména 123456 a hesla 123456 a získat přístup k údajům o 64 milionech uchazečů o práci.
-baseweb -web -snap20240513 -snap20240602 atd ...a moje představa je teď
-web -snapshots -web -snap20240513 -snap20240613Tedy data budou ve svých adresářích ( subvolumes ) a snapshoty v subvolume snapshots. Tuto změnu bych rád provedl v rámci jednoho disku, se zachováním dat a pokud možno i těch snapů. Možná je řešení triviální, ale btrfs důkladně neznám, tak se raději nejdříve zeptám vás. Děkuji za nápomocné odpovědi ..
Řešení dotazu:
V rámci jednoho btrfs filesystému použij mv
.
A co přesně to je, taková verze?
mv
je v balíku zvaném coreutils
, většinou. Obvyklá verze coreutils
je momentálně 9.5.
Záleží na tom? (Proč?)
/dev/sda1
vytvořím btrfs (mkfs.btrfs /dev/sda1
). Mountnu top-level subvolume filesystému (mount /dev/sda1 /mnt/t -o subvol=/
). Vytvořím další subvolumy (btrfs subvolume create /mnt/t/{a,b,c
}. Mountnu subvolume toho stejného filesystému (mount /dev/sda1 /mnt/a -o subvol=/a
). Když teď přesunu subvolume pomocí mv
, tak mv /mnt/t/b /mnt/t/a/
funguje, zatímco mv /mnt/t/c /mnt/a/
nefunguje. Resp. ono funguje oboje (ve smyslu, že to něco udělá a nehlásí to chybu), akorát to c
už po přesunu není subvolume, ale je to adresář.
Mountnu subvolume toho stejného filesystému (mount /dev/sda1 /mnt/a -o subvol=/a
).
Ano, souhlasím, že tenhle případ nefunguje správně. mv
na jedné straně správě rozezná, že se jedná o stejný adresář / subvolume, a to i skrz explicitní mount point. Na druhé straně ale nerozezná možnost přesouvat skrz různé explicitní mount pointy efektivně. To je ošklivé.
Moje doporučení je nepoužívat explicitní mount pointy pro subvolume, pokud to jenom trochu jde. Znám případy, kdy to nejde: Když mám několik distribucí na jednom Btrfs a mám například subvolume /root_arch
a /root_fedora
a k nim /var/arch
a /var/fedora
(mountované dle potřeby jako /
a /var
). Nebo když nějaký backup systém na automatické snapshotování / verzování celého stromu používá různé dynamické názvy svých snapshotů, které automaticky vybírá a mountuje do známých názvů.
V takových situacích bohužel bude mv
dělat brute-force kopie. (Na druhé straně: třeba mv
mezi /
a /var
je podivný případ a všude možně jinde bych měl mít implicitní mount pointy (například mám-li ve svém /home
pár subvolume, „mezi kterými“ (obrazně řečeno; v reálu nemají hierarchii) bych chtěl přesouvat jiné subvolume).)
Tady je názorně ten problém s brute-force kopií způsobenou explicitním mount pointem na subvolume:
btrfs subvolume create sub{1{,/{a,b}},2} mkdir mnt{1,2} { IFS='[ ]' read -r device subvolume _; read -r mountpoint; } < <( until findmnt -cfnoSOURCE -dbackward .; do cd ..; done echo "$PWD") mount -o subvol="${subvolume}${PWD#"${mountpoint}"}/sub1" "$device" mnt1 mount -o subvol="${subvolume}${PWD#"${mountpoint}"}/sub2" "$device" mnt2 mv sub1/a mnt1/ # mv: 'sub1/a' a 'mnt1/a' jsou jeden a tentýž soubor mv sub1/a mnt2/ # OK <<< POZOR, brute-force kopie! mv sub2/a sub1/ # OK <<< POZOR, brute-force kopie! (sub2/a je už jen adresář) mv sub1/b sub2/ # OK <<< zachová subvolume mv sub2/b sub1/ # OK <<< zachová subvolume umount mnt{1,2} rmdir mnt{1,2} btrfs subvolume delete sub1/a # ERROR: Not a Btrfs subvolume: Invalid argument btrfs subvolume delete sub{2,1{/b,}}
…jeden sendne a druhý to bude přijímat ?
Rozhodně NE. send
a receive
je potřeba pouze pro kopírování mezi různými FS; v rámci jednoho FS je to naprosto zbytečný overkill.
Subvolume lze v rámci jednoho filesystému přesouvat a přejmenovávat skoro jako běžné adresáře. Pojďme si to předvést!
btrfs subvolume create sub1{,/a} sub2{,/b} ls -R sub{1,2}
Jenom tak, čistě bezdůvodně, prohodíme „vnořené“ subvolume — ve skutečnostni nejsou nikam vnořené, viz níže —, nejjednoduším možným způsobem:
mv sub2/b sub1/ mv sub1/a sub2/ ls -R sub{1,2}
A teď to prohodíme zase zpátky, ale schválně jiným způsobem, jenom tak pro zajímavost a pro ilustraci a pro potěšení a pro zábavu a pro dobrý pocit typu „tak teď fakt používám Btrfs“:
btrfs subvolume snapshot sub1/b sub2/b btrfs subvolume snapshot sub2/a sub1/a ls -R sub{1,2} btrfs subvolume delete sub1/b sub2/a ls -R sub{1,2}
A teď ten zbývající bordel zase po sobě uklidíme:
btrfs subvolume delete sub1{/a,} sub2{/b,}
Klíčové pozorování z předchozí kapitoly: Zahnízdění do sub1
a sub2
je v tomto případě v podstatě zbytečné. Stejně jako jakékoliv pokusy o hierarchii subvolume.
Na rozdíl od ZFS, který má paralelní strom subvolume, který přímo nesouvisí s adresářovým stromem souborového systému ani s mout pointy a je hierarchicý, Btrfs nic takového nemá.
Subvolume a snapshoty v Btrfs (což je z hlediska použití skoro totéž) jsou ploché, bez hierarchie, identifikované pouze pomocí subvolid
. Manuálová stránka o tom malinko mlží, ale v podstatě to tam je.
A subvolume in BTRFS can be accessed in two ways:
• like any other directory that is accessible to the user
• like a separately mounted filesystem (options subvol or subvolid)
In the latter case the parent directory is not visible and accessible. This is similar to a bind mount, and in fact the subvolume mount does exactly that.
Tady ještě jednoduchý přehled, jak je to s tou atomicitou:
Btrfs | ZFS |
|||
reprezentace subvolume z pohledu uživatele | plochý prostor | stromovitá hierarchie subvolume, nezávislá na samotném souborovém systému, každý uzel v hierarchii má nastavitelný (implicitní) mount point, případně nemusí být namountovaný vůbec | ||
co představuje hierarchie subvolume | nic; u Btrfs žádná viditelná hierarchie subvolume není; copy-on-write vztahy mezi různými subvolume a snapshoty (ať už lokálně vytvořenými nebo odzrcadlenými z | vztah předek / zadek / potomek v copy-on-write hierarchii, částečně (v určitém smyslu) taky časovou osu, historii, kterou lze pomocí | ||
rozsah atomicity snapshotů | pouze a výhradně pro daný subvolume; další subvolume “uvnitř” jeho adresáře jsou úplně oddělené, neúčastní se snapshotů (daného subvolume), nejsou atomické v rámci snapshotů jejich “mount pointu”, prostě fungují stylem | přes celý podstrom oddělené hierarchie subvolume, bez ohledu na jejich mount pointy a bez ohledu na to, zda jsou namountované; snapshot podstromu hierarchie subvolume je atomický přes všechny jeho pod-uzly | ||
subvolume a snapshot je totéž | skoro jo, víceméně | ne tak úplně, viz příkaz |
Cituji z manuálové stránky:
What should be mentioned early is that a snapshotting is not recursive, so a subvolume or a snapshot is effectively a barrier and no files in the nested appear in the snapshot. Instead there's a stub subvolume (also sometimes empty subvolume with the same name as original subvolume, with inode number 2). This can be used intentionally but could be confusing in case of nested layouts.
Tady je jednoduchý příklad (ne)atomicity (ne)hierarchických subvolume:
btrfs subvolume create sub1{,/a} touch sub1/a/blah btrfs subvolume snapshot sub1 sub2
Tedy ještě jednou: Subvolume (ani snapshoty) u Btrfs nejsou hierarchické; nefunguje to jako oddělená hierarchie subvolume u ZFS:
ls -Rl sub{1,2} # <<< sub2/a NENÍ subvolume a NEOBSAHUJE blah stat -c%i sub2/a # <<< 2, přesně jak říká manuálová stránka! touch sub2/a/blah # <<< zamítnuto! tohle není běžný adresář!
Důvod, proč sub2/a
není (ani) skutečný adresář (jakým by byl třeba běžný mount point) je předcházení omylům a nesrovnalostem, kdy někdo v daném adresáři buď něco očekává, nebo do něj něco zapisuje atd. Pojďme to zase uklidit! A povšimněme si, že sub2/a
není třeba nijak uklízet, protože to není usbvolume:
btrfs subvolume delete sub1{/a,} sub2
Počkat! Ale co kdybychom chtěli mít také snapshot sub1/a
v sub2/a
? Inu, museli bychom ho odzrcadlit manuálně a neatomicky. Například:
btrfs subvolume create sub1{,/a} touch sub1/a/blah btrfs subvolume snapshot sub1 sub2 # <<< Začátek race window!!1 rmdir sub2/a # <<< Jo! Tohle jako fakt! btrfs subvolume snapshot sub1/a sub2/a # <<< Konec race window!!! ls -Rl sub{1,2} # <<< sub2/a JE subvolume a OBSAHUJE blah stat -c%i sub{1,2}/a # <<< subvolid kořene (!= 2) (nedokumentováno) btrfs subvolume delete sub{1,2}{/a,} # <<< Teď jsou obě sub{1,2}/a subvolume.
V případě Btrfs se tedy atomicita snapshotů nepropaguje „přes mount point“.
V mnoha případech to není příliš podstatné; potřeba atomicity přes několik subvolume může svědčit o špatném návrhu adresářové struktury — například použití subvolume tam, kde by měly být obyčejné adresáře.
Leč pravda je, že ZFS má v tomhle jednom ohledu jakousi drobnou „výhodu“ — nebo přinejmenším feature navíc.
Ten dotaz byl napsán nejednoznačně. Jak uvedl Andrej, v rámci jednoho FS nic zvláštního netřeba. Ovšem v rámci jednoho disku může být těch FS více, a všechny mohou být namountované do jedné adresářové struktury a pak pochopitelně příkaz mv bude mít úplně odlišný efekt.
Tiskni
Sdílej: