Biztonsági mentés, 3. rész: A duplicity és duplicati áttekintése és tesztelése

Biztonsági mentés, 3. rész: A duplicity és duplicati áttekintése és tesztelése

Ebben a megjegyzésben azokat a biztonsági mentési eszközöket tárgyaljuk, amelyek archívumokat hoznak létre a biztonsági szerveren.

A következő eszközök felelnek meg a követelményeknek: a duplicity (melyhez van egy kellemes interfész a deja dup formájában) és a duplicati.

Egy másik figyelemre méltó biztonsági mentési eszköz a dar, de mivel széleskörű opciók listája van — a tesztelési módszer alig fedi le a képességeinek 10%-át —, ezért ezt a megfelelő ciklus keretein belül nem teszteljük.

Várt eredmények

Mivel mindkét jelölt valahogy archívumokat hoz létre, a normál tar fájlt is lehet referenciaként használni.

Továbbá értékeljük, hogy mennyire optimálisan tárolódnak az adatok a biztonsági mentési szerveren, úgy, hogy csak a teljes másolat és a fájlok aktuális állapota közötti eltérés, vagy a múltbeli és jelenlegi archívumok közötti eltérés kerül tárolásra (inkrementális, dekremetális stb.).

Biztonsági mentés létrehozásának viselkedése:

  1. Viszonylag kevés fájl található a biztonsági mentési szerver tárolójában (összehasonlítva a biztonsági mentések számával vagy a gb-ban mért adatok méretével), de elegendően nagy méretben (tízes-hundrek megabájtnyi).
  2. A tároló mérete csak a változásokat fogja tartalmazni — a másolatok nem fognak tárolódni, így a tároló mérete kisebb lesz, mint ha rsync alapú szoftverrel működne.
  3. Nagyobb CPU-terhelés várható a tömörítés és/vagy titkosítás alkalmazásakor, és valószínűleg elegendő terhelés a hálózaton és a lemezalrendszeren, ha a tömörítési és/vagy titkosítási folyamat a biztonsági mentési szerveren végzi a munkáját.

Referenciaértékként futtatjuk a következő parancsot:

cd /src/dir; tar -cf - * | ssh backup_server "cat > /backup/dir/archive.tar"

A végrehajtás eredménye a következő:

Biztonsági mentés, 3. rész: A duplicity és duplicati áttekintése és tesztelése

A végrehajtási idő 3m12s. Látható, hogy a sebesség a biztonsági mentési szerver lemezalrendszerének korlátjába ütközött, mint a példában a rsync. Csak egy kicsit gyorsabb, mivel az írás egy fájlba történik.

A tömörítés értékelésére ugyanazt a verziót futtatjuk, de bekapcsolva a tömörítést a biztonsági mentési szerver oldalán:

cd /src/dir; tar -cf - * | ssh backup_server "gzip > /backup/dir/archive.tgz"

Az eredmények a következők:

Biztonsági mentés, 3. rész: A duplicity és duplicati áttekintése és tesztelése

Futási idő: 10m11s. Valószínűleg a szűk keresztmetszet az egyszálú tömörítő a fogadó oldalon.

Ugyanez a parancs, de a tömörítést az eredeti adatok szerverére helyezzük át, hogy ellenőrizzük a hipotézist, hogy a szűk keresztmetszet az egyszálú tömörítő.

cd /src/dir; tar -czf - * | ssh backup_server "cat > /backup/dir/archive.tgz"

Így alakult:

Biztonsági mentés, 3. rész: A duplicity és duplicati áttekintése és tesztelése

Futási idő: 9m37s. Egyértelműen látható a tömörítő egy magjának terhelése, mivel a hálózati sebesség és a forrással szembeni lemezrendszer terhelése hasonló.

A titkosításhoz használható az openssl vagy a gpg, egy további paranccsal csatlakozva openssl vagy gpg a pipe-on. Itt egy ilyen parancs lesz az irányadó:

cd /src/dir; tar -cf - * | ssh backup_server "gzip | openssl enc -e -aes256 -pass pass:somepassword -out /backup/dir/archive.tgz.enc"

Az eredmények a következőek lettek:

Biztonsági mentés, 3. rész: A duplicity és duplicati áttekintése és tesztelése

Futási idő: 10m30s, mivel 2 folyamat fut a fogadó oldalon — a szűk keresztmetszet ismét az egyszálú tömörítő, plusz a titkosítás miatt kis többletterhelés.

UPD: Bliznezz kérésére hozzáadom a teszteket pigz-zel. Ha csak a tömörítőt használjuk, 6m30s-ra sikerült, ha a titkosítást is hozzáadjuk, körülbelül 7m-re. Az alsó grafikonon a zuhanás — a ki nem ürített lemezpuffer:

Biztonsági mentés, 3. rész: A duplicity és duplicati áttekintése és tesztelése

Duplicity tesztelése

A Duplicity egy Python alapú szoftver, amely titkosított archívumokat készít tar formátumban történő biztonsági másolat készítése érdekében.

Az inkrementális archívumokhoz a librsync alkalmazása szükséges, ezért a fent említett viselkedésre lehet számítani az előző ciklus jegyzetében.

A biztonsági másolatokat titkosítani és aláírni lehet gnupg segítségével, ami fontos, ha különböző szolgáltatókat használunk a biztonsági másolatok tárolásához (s3, backblaze, gdrive stb.)

Nézzük meg, mik lesznek az eredmények:

Íme ezek az eredmények, amikor titkosítás nélkül futottak

spoiler

Biztonsági mentés, 3. rész: A duplicity és duplicati áttekintése és tesztelése

Minden tesztindítás futási ideje:

Indítás 1
Indítás 2
Indítás 3

16m33s
17m20s
16m30s

8m29s
9m3s
8m45s

5m21s
6m04s
5m53s

Íme a gnupg titkosítás használatával kapott eredmények, 2048 bites kulcsmérettel:

Biztonsági mentés, 3. rész: A duplicity és duplicati áttekintése és tesztelése

Ugyanezek a adatok titkosítással futó ideje:

Indítás 1
Indítás 2
Indítás 3

17m22s
17m32s
17m28s

8m52s
9m13s
9m3s

5m48s
5m40s
5m30s

A blokkméret 512 megabájt volt, amit a grafikonokon világosan látni lehet; a processzor terhelése gyakorlatilag 50%-on állt, tehát a program nem hasznosít több mint egy processz magot.

A program működésének alapelve is jól látható: egy adatdarabot vettünk, tömörítettük, és elküldtük egy biztonsági mentési tároló szerverre, amely elég lassú lehet.
Egy másik jellemző a program működésének előre jelezhető ideje, amely csak a megváltozott adatok méretétől függ.

A titkosítás bekapcsolása nem különösebben növelte a program működési idejét, de körülbelül 10%-kal megnövelte a CPU terhelést, ami lehet némi kellemes bónusz.

Sajnos, ez a program nem tudta helyesen észlelni a könyvtár átnevezésének helyzetét, és a kapott tároló mérete megegyezett a változások méretével (tehát mind a 18 GB), de a lehetőség, hogy megbízhatatlan szervert használjunk biztonsági mentéshez, határozottan megcáfolja ezt a viselkedést.

Duplicati tesztelése

Ez a szoftver C# nyelven íródott, a Mono könyvtárainak használatával fut, van GUI-ja és cli verziója is.

A főbb funkciók listája hasonló a duplicityhoz, beleértve különféle szolgáltatókat a biztonsági mentéshez, azonban a duplicitytól eltérően a legtöbb funkció harmadik fél eszköze nélkül is elérhető. Hogy ez előny vagy hátrány, az a konkrét esetektől függ, de valószínűleg a kezdők számára egyszerűbb, ha az összes lehetőséget egy listában látják, mint hogy Python csomagokat kelljen telepíteni, mint a duplicity esetében.

Még egy kis részlet — a program aktívan ír egy helyi sqlite adatbázist annak a felhasználónak a nevében, aki a biztonsági mentést indítja, ezért figyelni kell a megfelelő adatbázis helyes megadására minden egyes cli indításnál. GUI vagy WEBGUI használata esetén a részletek rejtve maradnak a felhasználó elől.

Nézzük meg, milyen mutatókat tud adni ez a megoldás:

Ha kikapcsoljuk a titkosítást (bár a WEBGUI ezt nem ajánlja), az eredmények a következők:

Biztonsági mentés, 3. rész: A duplicity és duplicati áttekintése és tesztelése

Működési idő:

Indítás 1
Indítás 2
Indítás 3

20m43s
20m13s
20m28s

5m21s
5m40s
5m35s

7m36s
7m54s
7m49s

Titkosítással bekapcsolva, aes használatával, az eredmények a következők:

Biztonsági mentés, 3. rész: A duplicity és duplicati áttekintése és tesztelése

Működési idő:

Indítás 1
Indítás 2
Indítás 3

29m9s
30m1s
29m54s

5m29s
6m2s
5m54s

8m44s
9m12s
9m1s

Ha a gnupg külső programot használjuk, az eredmények a következők:

Biztonsági mentés, 3. rész: A duplicity és duplicati áttekintése és tesztelése

Indítás 1
Indítás 2
Indítás 3

26m6s
26m35s
26m17s

5m20s
5m48s
5m40s

8m12s
8m42s
8m15s

Mint a program képes párhuzamosan működni, de ettől még nem hatékonyabb megoldás, és ha az érések működését összehasonlítjuk — egy külső program indítása
gyorsabb lett, mint a Mono könyvtár használata. Ezt valószínűleg az magyarázza, hogy a külső program jobban optimalizált.

Kellemes meglepetés volt, hogy a tároló mérete pontosan annyi, amennyi a ténylegesen módosított adatokat jelenti, azaz a duplicati észlelte a könyvtár átnevezését és megfelelően kezelte a helyzetet. Ezt a második teszt futtatásakor láthatjuk.

Összességében, nagyon pozitív benyomásaim vannak a programról, beleértve a kezdők számára való elég barátságos kezelhetőséget is.

Eredmények

Mindkét jelölt viszonylag lassan működött, de összességében a hagyományos tar-hoz képest van fejlődés, legalábbis a duplicati esetében. Ennek a fejlődésnek az ára is érthető - jelentős terhelés
a processzorra. Összességében nincsenek különösebb eltérések az eredmények előrejelzésekor.

Következtetések

Ha nincs hova sietni, és van tartalék a processzorban - bármelyik vizsgált megoldás megfelel, mindenesetre elég nagy munkát végeztek el, amit nem érdemes újra megcsinálni a tar-nál elhelyezett szkriptek írásával. A titkosítás megléte nagyon szükséges tulajdonság, ha a biztonsági mentések tárolására szolgáló szerver nem teljes mértékben megbízható.

Ha a megoldásokat összehasonlítjuk a rsync - a teljesítmény több mint kétszer rosszabb lehet, annak ellenére, hogy a tiszta tar 20-30%-kal gyorsabban működött a rsync-nél.
A tároló méretének megtakarítása csak a duplicati-nál van.

Bejelentés

Biztonsági mentés, 1. rész: Miért van szükség biztonsági mentésre, a módszerek és technológiák áttekintése
Biztonsági mentés, 2. rész: A rsync-alapú biztonsági mentési eszközök áttekintése és tesztelése
Biztonsági mentés, 3. rész: A duplicity, duplicati, deja dup áttekintése és tesztelése
Biztonsági mentés, 4. rész: A zbackup, restic, borgbackup áttekintése és tesztelése
Biztonsági mentés, 5. rész: A bacula és a veeam backup for linux tesztelése
Biztonsági mentés, 6. rész: A biztonsági mentési eszközök összehasonlítása
Biztonsági mentés, 7. rész: Következtetések

A publikáció szerzője: Pavel Demkovics

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster