Portál AbcLinuxu, 5. května 2025 18:46
Jen poznamka. Snapshot je vlastne inkrementalni diff. Smazat snapshot = aplikovat diff, neni to uplne levna operace. Myslim, ze jedina moznost je vyzkouset to v konkretnim prostredi.Mohu potvrdit - strávil jsem díky tomu o kompu minulou neděli odpoledne, večer i kus noci se sevřeným zadkem. A to jsem rušil "jenom" Btrfs snapshoty. Bylo jich cca 230 tisíc. Poprvé v životě jsem zažil, že namountování disku může trvat déle než dvě hodiny. A btrfs-cleaner čistil uvolněné místo ještě včera odpoledne.. U LVM si to nedokážu ani představit.
LVM a snapshoty je řešení ve stylu vzít si nůžky a zatloukat tím hřebíky. Z LVM snapshotu se nedá korektně zálohovat, protože obsahuje nekonzistentní filesystém, pokud si člověk nemůže dovolit ošklivost typu unmount—snapshot—mount. Na opravdové snapshoty existují hotová udělátka zvaná ZFS a Btrfs. Automatické vytváření snapshotů a „ředění“ starších snapshotů už zajistí nějaký oneliner v cronu. Některé distribuce měly pro takové účely dokonce i GUI nástroj, ale má-li to být automatizované bez podpory ze strany uživatele, cron prostě musí stačit.
Určitě je ZFS a BTRFS snapshot konzistentní?Je konzistentní z hlediska fs. To, že se snapshot pořídí někde uprostřed operace nějakého programu fs neřeší, protože o tom programu nic neví. Lze to ale udělat opačně, tedy stavem toho programu řídit snapshoty. Vzhledem k tomu, že můžete mít subvolumů kolik chcete, můžete data toho programu umístit na vlastní subvolume a snapshotování si budete řídit s ohledem na ten program. (Programu se pošle příkaz "teď si všechno ulož a nic nedělej" a udělá se snapshot a program se volně nechá pokračovat. -- např. pg_start_backup, snapshot, pg_stop_backup) Pochopitelně totéž lze udělat i s LVM, ale tam je zase problém s distribucí volného místa (mít stovky LV a na nich nějak velký fs s nějakým volným místem) není tak jednoduché*. *) Zkoušel někdo LVM a thin provisioning? Potom by ten fs nad tím mohl označovat volné bloky (discard) a do LVM poolu by se vracely bloky. Tím by šlo redistribuovat volné místo i na LVM.
Pochopitelně totéž lze udělat i s LVM, ale tam je zase problém s distribucí volného místa (mít stovky LV a na nich nějak velký fs s nějakým volným místem) není tak jednoduché*.No právě. Myslím, že z hlediska konzistence není mezi přístupem LVM a BTRFS/ZFS principielně rozdíl. Nebo podobně silná konzistence lze dosáhnout i na LVM i když pracněji. To co dělá diametrální rozdíl je samozřejmě, to jak se snapshot vytváří. V ZFS a BTRFS se jenom bloky ve snapshotu neuvolní, v LVM se pořád zapisují rozdíly. A tam se použití přiblížit nedá.
*) xfs_freeze halts new access to the filesystem and creates a stable image on disk. xfs_freeze is intended to be used with volume managers and hardware RAID devices that support the creation of snapshots.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.