Portál AbcLinuxu, 15. května 2025 08:33

Dotaz: Ohledně btrfs subvolumes

Petr Fiedler avatar 8.8.2020 21:30 Petr Fiedler | skóre: 35 | blog: Poradna | Brno
Ohledně btrfs subvolumes
Přečteno: 663×
Odpovědět | Admin

Zdravím,

mám pár otázek ohledně Btrfs, na které se mi nedaří najít odpověď. Před časem jsem si zkusil nainstalovat OpenSUSE a instalátor mi vytvořil ~ 8 subvolumes. Včera jsem si zkusil nainstalovat Mint 20 a v instalátoru jsem vytvořil jeden oddíl 50 GB, přípojný bod / a souborový systém btrfs. Po instalaci bylo vidět, že instalátor vytvořil pouze 2 subvolumes - @/ a @home. Chci se zeptat:

  1. Které adresáře z / je dobré mít jako subvolume a proč?
  2. Musím je vytvořit při instalaci? Pokud ano jak?
  3. Můžu po instalaci, kdy instalátor vytvořil jako subvolumes pouze @/ a @home udělat např. z /var @var? Jak?

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Josef Kufner avatar 9.8.2020 01:20 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Ohledně btrfs subvolumes
Odpovědět | | Sbalit | Link | Blokovat | Admin
Chce to mít uživatelská data, dočasná data a systém oddělené, aby šlo udělat snapshot a vrátit se po nepovedeném upgrade.

Uživatelská data jsou /home, /srv a /var/lib. Dočasná postradatelná data jsou v /tmp, /var/cache a dalších. Systém pak v tom zbytku na /.

Pokud se ti to nechce řešit, tak vyčleň /home a případné další adresáře s uživatelskými daty služeb, které tam provozuješ. Ten zbytek bývá celkem malý a jde s tím snadno hnout. Vytvoření subvolume znamená překopírování dat a úpravu /etc/fstab.
Hello world ! Segmentation fault (core dumped)
Petr Fiedler avatar 9.8.2020 11:42 Petr Fiedler | skóre: 35 | blog: Poradna | Brno
Rozbalit Rozbalit vše Re: Ohledně btrfs subvolumes
Dočasná postradatelná data jsou v /tmp, /var/cache a dalších.

To dalších znamená přesně co?

Vytvoření subvolume znamená překopírování dat a úpravu /etc/fstab.

Pokud vím, tak na stejné úrovni nelze vytvořit subvolume se stejným názvem, jaký už daná úroveň obsahuje. Takže bych musel např. @var vytvořit např. v /home, nastavit stejná práva jako má /var, pak překopírovat soubory, smazat /var, vložit /home/@var do / a pak upravit /etc/fstab, Samozřejmě bych vyčlenil @var/lib a @var/cache jako další subvolumes. OK?

Petr Fiedler avatar 9.8.2020 11:45 Petr Fiedler | skóre: 35 | blog: Poradna | Brno
Rozbalit Rozbalit vše Re: Ohledně btrfs subvolumes

A ještě jsem se zapomněl zeptat, jestli to celé lze pořešit při instalaci? Na netu jsem nic nenašel.

Řešení 1× (Filip Jirsák)
Heron avatar 9.8.2020 12:37 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: Ohledně btrfs subvolumes
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nechápu, odkud se vzal ten zvyk pojmenovávat subvolumes pomocí @.

Z uživatelského hlediska je subvolume obyčejný adresář, nemusí se to nijak mountovat, zadávat do fstabu ani nic podobného.

Celkem bych neřešil, co udělal instalátor. Prostě si pro své projekty (nebo zkrátka oddělené skupiny dat) zvykněte vytvářet subvolume. /home/tomas/projekty/projekt1, projekt2 (projekt1 je pochopitelně nějaký lidský název) budou subvolumes. Osobně používám btrfs sub create skoro denně.

Potom můžete snadno dělat jejich snapshoty, já jsem si zvykl je dávat do složky ~/projekty/.snap, ale můžete je vytvářet kdekoliv. (btrfs sub snap projekt1 ./snap/2020-08-09-projekt1)

Potom je celkem dobré jednotlivé uživatelské homes mít jako subvolumy Tedy ne celý /home, ale /home/tomas, /home/petr apod.

Co se týče systémových adresářů, asi bych to jednak neřešil, ale pokud chcete, můžete si to přesunout po instalaci (tj nabootovat nějaké livecd a z toho si uspořádat disk).
Heron
Petr Fiedler avatar 9.8.2020 12:55 Petr Fiedler | skóre: 35 | blog: Poradna | Brno
Rozbalit Rozbalit vše Re: Ohledně btrfs subvolumes

Díky za vysvětlení.

Nechápu, odkud se vzal ten zvyk pojmenovávat subvolumes pomocí @.

No, takhle mi to pojmenoval instalátor SUSE i Mintu sám.

Co se týče systémových adresářů, asi bych to jednak neřešil, ale pokud chcete, můžete si to přesunout po instalaci (tj nabootovat nějaké livecd a z toho si uspořádat disk).

Jak? Prosím o názorný příklad. Dejme tomu, že chci udělat subvolume z /var. Nabootuji LiveCD a co dál?

Řešení 1× (Filip Jirsák)
Heron avatar 9.8.2020 13:02 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: Ohledně btrfs subvolumes
Jak? Prosím o názorný příklad. Dejme tomu, že chci udělat subvolume z /var. Nabootuji LiveCD a co dál?
Tak je potřeba někam namountovat ten systémový FS, takže dejme tomu do /mnt/rootfs (některé livecd se to snaží někam připojit samy, to lze zjistit třeba v lsblk). Potom stačí:
cd /mnt/rootfs
mv var var.old
btrfs sub create var
rsync -a var.old/ var/
a je to.

Nabootovat zpět OS z disku, zkontrolovat, zda je vše ok a časem /var.old smazat.
Petr Fiedler avatar 9.8.2020 13:51 Petr Fiedler | skóre: 35 | blog: Poradna | Brno
Rozbalit Rozbalit vše Re: Ohledně btrfs subvolumes

Moc ti DĚKUJI!

Heron avatar 9.8.2020 18:41 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: Ohledně btrfs subvolumes
Není zač :-) Na svých stránkách píšu o BTRFS trochu víc, takže je možné si to přečíst pro inspiraci. Jinak man a btrfs wiki jsou dobré zdroje informací.
Petr Fiedler avatar 9.8.2020 19:30 Petr Fiedler | skóre: 35 | blog: Poradna | Brno
Rozbalit Rozbalit vše Re: Ohledně btrfs subvolumes

Na tvých stránkách jsem si o btrfs četl už dávno. Za poslední 3 dny jsem čtením o tomto fs strávil ~ 15 hodin, ale na to, na co jsem se ptal jsem nikde nenarazil. Zatím si jen tak hraji. Dal jsem si Mint 20+btrfs na volný hdd a snažím se v tom zorientovat. Až se tak stane, hodlám na btrfs přejít - čistá instalace. Dost si mi právě pomohl, abych mohl dál sám zkoušet a experimentovat.

Ještě jednou díky.

9.8.2020 15:43 Vantomas | skóre: 32 | Praha
Rozbalit Rozbalit vše Re: Ohledně btrfs subvolumes
Nechápu, odkud se vzal ten zvyk pojmenovávat subvolumes pomocí @.

No, takhle mi to pojmenoval instalátor SUSE i Mintu sám.

OpenSUSE okolo má okolo btrfs subvolumes a snapshotů propracovanou podporu, kdy třeba při update systému automaticky dělá konzistentní snapshot starého a pak z grubu umožňuje nabootovat do těchto starších.

Ta označení se @ se možná berou odtud, aby ty skripty poznaly, co jsou uživatelský a co systémový subvolumes a podle toho to něco dělalo.

Nevím jak je to v Mintu, ale pokud tam už jsou také nějaká klikátka, tak pozor na ruční zásahy do subvolumes, aby to tyhle věci nerozbilo.

Řešení 1× (Filip Jirsák)
9.8.2020 21:11 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: Ohledně btrfs subvolumes
Odpovědět | | Sbalit | Link | Blokovat | Admin
Které adresáře z / je dobré mít jako subvolume a proč?

Já mívám jako subvolume většinou:

Musím je vytvořit při instalaci?

Ne. Ale pak je to celkem voser, když je chceš vytvořit dodatečně a jedná se o nějaký systémový adresář, třeba / nebo /var:

Ne že by to^^^ byl nepřekonatelný problém, to jistě ne; už asi desetkrát mě to potkalo. Ale … právě proto raději vyřeším subvolume už při instalaci.

Pokud ano jak?
btrfs subvolume create ...
Můžu po instalaci, kdy instalátor vytvořil jako subvolumes pouze @/ a @home udělat např. z /var @var?

Ano.

(Předně je dobré si všimnout, že zavináč nemá žádný speciální význam; je to prostě jenom součást názvu subvolume (a subvolume se v Btrfs (na rozdíl od ZFS) (skoro) vždy objevuje jako implicitně namountovaný adresář někde ve filesystému (a nežije v odděleném stromě filesystémů jako u ZFS).)

Jak?

Postup záleží na tom, co je původně /var.

  1. Přesunout data.

    • Pokud je /var subvolume:
      # při bootu z recovery média; ne přímo na systému!
      mv /var /@var
      mkdir /var
      chmod --reference=/@var /var
      chown --reference=/@var /var
      
    • Pokud je /var obyčejný adresář:
      # při bootu z recovery média; ne přímo na systému!
      btrfs subvolume create /@var
      chmod --reference=/var /@var
      chown --reference=/var /@var
      cd /var
      mv * .[^.]* ..?* /@var
      
  2. A ve finále aktualizovat /etc/fstab, aby tam bylo něco rozumného.
    UUID=...  /var  btrfs  defaults,noatime,nodiratime,subvol=@var  0  0
    

Nicméně já osobně bych asi volil trochu popisnější názvy než něco se zavináčem. Třeba opensuse_var, opensuse_root, mint_var, mint_root nebo něco podobného. Jinak není jasné, co se tam sdílí a proč. Kromě toho, žádná distribuce by si neměla myslet, že je na tom filesystému sama — i když tomu tak možná ve většině případů bude.

Petr Fiedler avatar 9.8.2020 21:25 Petr Fiedler | skóre: 35 | blog: Poradna | Brno
Rozbalit Rozbalit vše Re: Ohledně btrfs subvolumes

Díky moc Andreji!
Až bude čas, tak si vše zkusím a když tak se ještě doptám.

Heron avatar 9.8.2020 21:46 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: Ohledně btrfs subvolumes
/@var
Proč to dělají takto? Jako jednak proč je to takto blbě pojmenované a umístěné přímo v rootu a ne schované někde v např: /.subvolumes, ale hlavně, jakou má výhodu mít subvolume "bokem" a potom ji mountovat do /var, když lze mít přímo /var jako subvolume (a nemusím to extra mountovat)? Snapshotovat a "revertovat" to můžu stále. Jediné o co přijdu je možnost to připojit s jinými parametry, další výhody nevidím.
9.8.2020 22:31 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: Ohledně btrfs subvolumes
Proč to dělají takto?

Netuším. :-( A nelíbí se mi to.

…a ne schované někde v např: /.subvolumes…

Nebýt CDDL a nebýt faktu, že ZFS/ZoL se s každým druhým updatem kernelu nepřeloží, přesně kvůli tomuto bych už tu a tam měl na pár strojích ZFS místo Btrfs. Protože ZFS má /.subvolumes on steroids, mírně řečeno.

ZFS má totiž oddělený filesystém filesystémů, který nezáleží na adresářové struktuře. Což je na první pohled nepodstatné, ale na druhý pohled je to asi tak to nejpodstatnější, co může být: ZFS totiž má hierarchii subvolume (inu, říká jim filesystem; každý tomu říká jinak) a v té hierarchii se dají dělat snapshoty atomické přes několik subvolume. Jo, tohle Btrfs nemá ani náhodou, protože nebyl s takovým cílem od začátku navržený a patche, které něco takového dělaly, byly zamítnuté. (Ne proto, že že by měly v nějakém slova smyslu moc těžké zamykání, ale proto, že byly prostě úplně špatně od základu (userspace vs. kernel atd.).)

Heron avatar 10.8.2020 07:49 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: Ohledně btrfs subvolumes
ZFS mám na FreeBSD serveru a nemůžu říct, že bych z toho nějak skákal radostí. Jasně, hierarchie datasetů umožňuje atomický snapshot celého tohoto stromu, ale tím výhody tak nějak končí. Všechno ostatní je spíš horší. Snapshoty nejsou nezávislé od svého původního datasetu, takže datasety nelze libovolně mazat. Clone vytvoří závislost, promote nepomůže. Prostě to moc nejde používat způsobem, jak jsem zvyklý z btrfs, tedy mít hromadu nezávislých snapshotů, všechny RW, pracovat na nich a libovolně je mazat. O multidevice ani nemluvím, koncept vdevů patří někam do minulého tisíciletí. Za další výhodu by šlo označit ZVol, tedy přímý export blokového zařízení, ale nemá to možnost si vytvořit co nejspojitější staticky alokovaný zvol, místo toho to roste postupně se zápisy (místo je jen rezervované). Tj na fragmentovaném zpoolu je to velmi pomalé. To už si můžu vytvořit rovnou normální soubor a exportovat jej přes loop.
10.8.2020 19:46 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: Ohledně btrfs subvolumes
Odpovědět | | Sbalit | Link | Blokovat | Admin
Podle mne nejlepší distribuce se správou snapshotů je openSUSE. Uživateli dovoluje se vrátit k libovolnému snapshotu rootu, jak dočasně tak trvale, pouhými volbami menu v grub2. A jejich dělení na subvolumes i s vysvětleními proč, může proto být inspirativní.
Petr Fiedler avatar 10.8.2020 20:10 Petr Fiedler | skóre: 35 | blog: Poradna | Brno
Rozbalit Rozbalit vše Re: Ohledně btrfs subvolumes

Já vím, že OpenSUSE je na tom co se týká btrfs asi nejlépe, ale Mint mi vyhovuje opticky (lupa, kontrast, nastavení velikosti ikon na panelu atd.), což je pro mě primární. Ale na odkaz se určitě podívám. Díky

11.8.2020 00:57 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: Ohledně btrfs subvolumes
Myslel jsem projít tu stránku a zdůvodnění, proč jednotlivé adresáře oddělit.
Petr Fiedler avatar 11.8.2020 01:03 Petr Fiedler | skóre: 35 | blog: Poradna | Brno
Rozbalit Rozbalit vše Re: Ohledně btrfs subvolumes

Pochopil jsem tě.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.