Dobrý den,
prosil bych o radu. Provozuji několik (přibližně 10) kontejnerů v lxc a chtěl bych poradit jaké úložiště proto zvolit. Jde mi o to že ve všech kontejnerech je stejná verze debianu takže většinu souborů mají společnou. ( Vzhedem k tomu že většinu konfigurace mam v ansiblu tak nemám problem je všechny přeinstalovat kdyby bylo potřeba )
Rád bych je provozoval na btrfs kvůli snapshotům ale nebráním se čemukoliv jinému.
Napadlo mě
1, udělat base kontejner jako subvolume na btrfs a od něj dělat snapshoty ale podle toho jak chápu princip tak jakmile bych nějaký kontejner aktualizoval tak všechny nové soubory by už nebyly jen reflink na původní ale fyzicky by se uložily na disku. Takže časem by jsem na tom byl stejně jako teď na ext4 protože při aktualizaci kontejneru bych ho vyřadil z množiny těch co sdílí společná data. Takže např po roce užívání by stejné datové bloky sdíleli jen soubory co se za rok nezměnily ale přitom ty systemy by byly na 90% totožné.
2, použít kompresi zabudovanou v btrfs protože jsem myslel že při zaplé kompresi bude X stejných souborů mít velikost jednoho + režie ale po pár testech jsem zjistil že komprese v btrfs probíhá per-file takže to mi také nepomůže.
3, použít deduplikaci. To mi připadá jako nejlepší řešení protože pokud před updatem jsou všechny kontejnery snapshotem základního a updatem se u změněných souborů zruší reflinky na sdílené datové bloky ale deduplikací si zajistím že pokud se mi např aktualizoval ve všech kontejnerech htop tak po deduplikaci všechny soubory htopu budou ukazovat na stejné datové bloky.
Jestli jsem to teda pochopil správně tak tohle by mohlo problém vyřešit.
Nyní ještě jeden dotaz, jak mít snapshoty na úložišti? Pokud by každý kontejner byl vlastní subvolume tak poté by se lehko dělala obnova jednoho kontejneru do staršího snapshotu ale v tomhle případě nevím jak se bude chovat deduplikace když by musela probíhat napříč různými subvolume.
Pokud bych měl vše na jednom subvolume tak by deduplikace určitě fungovala ale zase obnovu kontejneru bych musel dělat pomocí např pomocí rsync a nemohl bych použít na to dělané nástroje jako např "snapper rollback".
Ještě poznamenám že vím že LXD umožňuje výběr backendu pro kontejnery ale bohužel LXD nemůžu kvůli kombinaci OS a architektury nainstalovat. (a navíc rád rozumím jak něco interně funguje a rád se v tom hrabu
)
Budu rád za jakékoliv rady a přeji pěkný den.