Portál AbcLinuxu, 20. července 2025 00:00
cp --reflink=always
) a data duplicit smaže,
- a tím se uvolní místo na HDD.
Použil jsem příkaz:
sudo duperemove -dr /mnt/btr_archive --hashfile=/mnt/btr_archive/Duperemove/duperemove_archive.hashfile
Už to jede asi 10 dnů a zatím se žádné místo neuvolnilo. Hashfile už zabírá 11 GB. Ze začátku HDD byl slyšet permanentně jak načítá data, teď už jen občas. V termínálu to vypisuje něco jako:
0x55b96b1268e0] Dedupe for file "/mnt/btr_archive/Duperemove/duperemove_archive.hashfile" had status (1) "data changed". [0x55b96b1269a0] (5/5) Try to dedupe extents with id a78ec70c [0x55b96b1269a0] Dedupe 49 extents (id: a78ec70c) with target: (131072, 131072), <jméno souboru>a pak to stojí třeba hodinu, HDD nic nedělá, ale proces duperemove vytěžuje CPU na 25%. Mám to nechat běžet dál a čekat, že za pár dnů to skončí a uvolní místo na HDD nebo to mám stopnout a zkusit jinak?
Řešení dotazu:
a pak to stojí třeba hodinu, HDD nic nedělá, ale proces duperemove vytěžuje CPU na 25%.Řekl bych, že máš jedno jádro ze čtyř vytíženo na 100%. Doporučil bych raději bees, verzi 0.11.
Je. A má být?
Je bambilion způsobů jak vytvořit subvolume. A deduplikace nemusí fungovat vždy podle tvých představ.
Já to řešil tak, že jsem měl lokální Btrfs ale ty snapshoty jsem rsyncoval na sdílený disk - pak to vyrábělo jen rozdíly.
Je bambilion způsobů jak vytvořit subvolume.
Já tedy vím o ± dvou a půl (subvolume create
/ subvolume snapshot
/ receive
). Zbytek z toho bambilionu mi asi nějak unikl. (Stárnu, příliš chlastám, atd.)
Já to řešil tak, že jsem měl lokální Btrfs ale ty snapshoty jsem rsyncoval na sdílený disk - pak to vyrábělo jen rozdíly.
Huh? Odkdy rsync
vyrábí jen rozdíly? Má sice volbu --inplace
, která je velmi žádoucí, ale v žádném případě nemůže nahradit „hlubší povědomí“ :-P o snapshotech.
--inplace
pomáhá, ale vůbec neřeší efektivní přejmenování / přesun souborů / adresářů. V takových případech rsync
brutálně duplikuje. Rozdílové snapshoty na Btrfs se duplikaci vyhnou.cp --reflink
: rsync
umí zachovat pouze hardlinky na úrovni celých souborů, zatímco o cp --reflink
na úrovni bloků nemá ponětí → hurá, zase všechno zduplikovat!Zachování (pouze) rozdílů při synchronizaci mezi zdrojovým Btrfs se snapshoty a cílovým Btrfs s kopiemi příslušných snapshotů lze docílit například (a možná jedině) pomocí btrfs send -p ... | btrfs receive ...
(Hlavně nezapomenout na -p
…)
Neřeším.
Ne že by včely nebyly super, ale nemám pro ně momentálně nasazení, protože moje data nemají příliš mnoho duplicit.
Spíš se snažím existující ne-duplicity (snapshoty, cp --reflink
atd.) zachovat a nezduplikovat omylem. To mi prozatím vždy stačilo (== nezabralo povážlivě moc místa).
Mám jednoduchý zálohovací skript, který (0) sejme snapshot na zdroji, (1) přenese snapshot na cíl (efektivně, pouze rozdíly) a (2) „exponenciálně“ naředí minulé snasphoty, aby byly směrem do minulosti postupně stále řidší. (Je-li zdroj malý a cíl velký, pro úsporu místa stačí držet na zdroji jenom jeden minulý snapshot a víc snapshotů si zachovávat jen na cíli. Aby efektivní diffy fungovaly (na obou stranách), stačí jen ten jeden snapshot.)
rsyncoval na sdílený disk - pak to vyrábělo jen rozdíly.Ty máš zřejmě na mysli rozdíly přírůstkových snapshotů. Já ale potřebuji zdeduplikovat různé větve snapshotů ve kterých jsou shodné soubory. V tom mi rsync ani send/receive nepomůže. Navíc bych považoval za krok zpátky používat rsync místo send/receive.
To byla ještě jiná doba, kdy byla maximální kapacita fyzického disku 1TB. Snapshotovaly se domovské adresáře v rámci nodu, kde ten virtuál běžel. A ten rsync jsem použil, když jsem to pak potřeboval sesypat na jeden disk, jako extra zálohu. Dnes už to nepoužívám, protože jsou uživatelské adresáře sdílené z Netappu.
Snap JE JEN ROZDIL. Vzdy. Tudiz ho jaksi deduplikovat nelzeTo vím
zadna souborova deduplikace na brtfs NEEXISTUJEProč to mají v dokumentaci rozdělené na souborovou a blokovou deduplikaci?
tu databazi ukladas na stejnej disk, kterej se snazis deduplikovat. Coz zcela zjevne delasTo možná nebylo nejmoudřejší, ale to asi nebyla příčina toho, že duperemove ve druhé fázi na disk vůbec nešahal. Používal převážně CPU (jedno jádro), něco počítal.
A vrchol debility je, poustet ten dedup pres snapy, coz zcela zjevne delas taky.Stejné soubory v RŮZNÝCH větvích snapshotů jsem vysvětlil v 1. bodu. Nebo něčemu vadí, že snapshoty jsou read-only?
Takze to ze ti to pobezi mesicE, je zcela vporadku, muzes si za to sam.Už 5 dnů běží bees a pořád šahá na HDD. Ale deduplikuje jen přes den. Kdyby jel měsíce tak bych byl zklamaný.
Protoze ten disk se ti celej bude cist tolikrat, kolik snapu tam mas. On totiz neprekvapive duperemove nevi, ze cte dokola totez.Pokud je to pravda tak je duperemove pěkně na prd. Předpokládám, že u bees takový problém není když je dělaný pro BTRFS.
/mount/btrfs /mount/btrfs/base/pc1 /mount/btrfs/base/pc2 /mount/btrfs/base/pc3 ... Tohle deduplikovat muzes mount/btrfs/snaps/pc1 mount/btrfs/snaps/pc2 mount/btrfs/snaps/pc3 ... Tohle deduplikovat je hovadinaPekne naprd to neni, krumpac taky predpokalda ze krumpacista vi jak se snim dela.
mount/btrfs/DIR-PC1/snaps_date_time mount/btrfs/DIR-PC2/snaps_date_time mount/btrfs/DIR-PC3/snaps_date_time ...Soubory v snaps_date_time v různých DIR-PCx o sobě neví. Jsou na sobě nezávislé. Deduplikace by měla ušetřit místo. Pokud myslíš, že ne, napiš důvod. PS: bees stále běží. Když jsem ho asi před 2 dny přerušil tak jsem si všiml, že zatím žádné volné místo nepřibylo. Stal se opak, volného místa ubylo asi 150 GB. Možná je to nějaký odpad, který na disku vznikl při deduplikaci a BTRFS ho ještě nezahodil.
Snap JE JEN ROZDIL. Vzdy. Tudiz ho jaksi deduplikovat nelze, protoze neni co. To ze tam vidis stejny obrovsky soubory je jaksi vlastnost. Na disku to jsou identicky bloky.Snap deduplikovat ide. Pretoze ten "rozdiel" môže byť rôzny. Napr. ak si si spustíš napr. defragmentáciu, tak ti rozdiel medzi aktuálnymi dátami a snapshotom bude rásť bez toho aby sa zmenil jediný bit v tvojich dátach. A v najhoršom prípade budeš mať dáta veľkosti xyGB a snapshot tiež xyGB. Deduplikácou sa môžes priblížiť znova k ideálnemu stavu, kedy je rozdiel medzi dátami a snapshotom minimálny možný. K pôvodnej otázke ešte taký postreh. Je lepšie si pustiť deduplikáciu nie na celý disk ale po menších kúskoch. Ak máš na disku napr. video, faktury, fotky, mp3 tak pusti dedup na /mnt/disk/video + /mnt/disk/snapshot/video, potom na "/mnt/disk/mp3 + /mnt/disk/snapshot/mp3" a tak ďalej. Jednoducho, keď je možné predpokladať, že takmer žiadane duplicity medziadresárovo neexistujú. Je s tým viacej roboty, ale proces skončí rýchlejšie. Postup po menších kúskoch je dobrý aj na testovanie, keď nečakáš týždeň na výsledok aby si zistil, že si použil nesprávny switch alebo čo a žiadne miesto si neušetril.
Warning Defragmentation does not preserve extent sharing, e.g. files created by cp --reflink or existing on multiple snapshots. Due to that the data space consumption may increase.A mimochodom sú aj iné operácie pri ktorých sa rozbije extent sharing. Koniec koncov keby deduplkácia nemala zmysel, tak by nikto nepísal nástroj na deduplikáciu, že?
Btrfs totiz fragmentuje data z definice svy existence s kazdym jednim zapisem.No a čo?
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.