Linux SW falešný RAID 0 (zrcadlení)

Linux SW falešný RAID 0 (zrcadlení)
« kdy: 26. 12. 2020, 22:17:07 »
Ahoj,

prosím si o radu, jak vytvořit falešný SW RAID 0 (zrcadlení, též mirroring). Raději bych párřádkový bash skript, který nechám jednou měsíčně, nebo dle potřeby spouštět jako automatickou úlohu, než nějaký moloch. Ale pokud to bude stát za to, klidně i utilitu s grafickým ksichtem. Používám CentOS 7/8.

Mám v PC dva disky, jeden klasický 3.5 HDD v pozici pro HDD a druhý 2.5 Notebookový HDD v HDD rámečku namísto CD machaniky. ksandu je pro mě cizí slovo.

Cíl: Mít možnost při selhání bootovacího disku, tento selhaný disk nahradit tím druhým (záložním), na kterém budou data od poslední synchronizace s tím prvním. Výhodou může být třeba denní, provádění přírůstkového zálohování, ale raději bych fakt jednoduchý skript, protože na FS sahám jednou ročně, a to bych raději spustil jednoduchý, ale spolehlivý SH skript, než se spoléhat na kde co, tak raději zálohovat blokově celý disk.

Mělo by fungovat něco jako:
Kód: [Vybrat]
dd if=/dev/sd(starejdisk) of=/dev/sd(novejdisk) bs=1M
dd if=/dev/sd(starejdisk) of=/cesta/nekam/file.img bs=1M

Tohle by měla být rychlejší a méně objemná cesta, pokud chápu, jak to fugnuje, tak by to všechny ty nuly mělo zkomprimovat na skoro nulu, takže img.gz poloprázdného disku by zabíralo polovinu místa a mělo být o polovinu rychleji hotové:
Kód: [Vybrat]
dd if=/dev/sd(starejdisk) of=/cesta/nekam/file.img bs=1M | gzip -c nekam.img.gz
Algoritmus takového zálohování by mohl být jen.
  • Udělej na sekundárním disku img.gz
  • Smaž starý img.gz

Když ten hlavní disk selže, pak hádám stačí koupit nový hlavní disk a z toho záložního disku, to img.gz zase vrátit zpět na hlavní disk a pokračovat.

Děkuji za názory a rady.


Re:Linux SW falešný RAID 0 (zrcadlení)
« Odpověď #1 kdy: 26. 12. 2020, 23:16:14 »
Zrcadlení je RAID 1.

U DD budete mít problém, že může zachytit souborový systém v nekonzistentním stavu. Řešením je např. použití LVM.
1) vytvoříte snapshot LVM svazku, který chcete zálohovat,
2) zkopírujete jej vaším algoritmem (dd),
3) odstraníte snapshot vytvořený v prvním bodě.

RDa

  • *****
  • 1 202
    • Zobrazit profil
    • E-mail
Re:Linux SW falešný RAID 0 (zrcadlení)
« Odpověď #2 kdy: 27. 12. 2020, 02:45:50 »
Nez delat takove veci jak zamyslite, tak zde mate tri lepsi moznosti:

1) RSYNC (sice nebudete mit kompresi, ale na souborove urovni to bude konzistentni)

2) MDRAID a skutecny R1, v cronu pak nejake to sachovani s --fail --remove a --re-add, a spolehnuti na to, ze v bitmape nebude moc bloku, aby se nesyncoval pokazde celej rozsah disku

3) A mozna nejidealnejsi v pripade velkeho rozdilu kapacit vasich disku: BTRFS / ZFS a nastaveni raid urovne pro dulezita data, ktera budou v kopii, a nejaky docasny bordel nebude v raidu (napr. torrenty)

Re:Linux SW falešný RAID 0 (zrcadlení)
« Odpověď #3 kdy: 27. 12. 2020, 08:43:10 »
Tohle je znovuobjevování kola, přemýšlení, kterým si lidé prošli od devadesátých let.

Obyčejné dd na to stačit nebude, protože data nebudou konzistentní - nebo by se to muselo provádět offline. Offline by to šlo provést v rámci initrd, ale přijde mi to jako opičárna.

Prehistorická možnost je použít md raid a ve chvíli, kdy je vše synchronizované, pomocí mdadm odebrat disk. Při záloze ho zase přidat. Mělo by to být bezpečné, ale jen teoreticky. MD na to není určený - ten je určený k tomu, že oba disky jsou rovnocenné. Stačí selhání ve vyhodnocení toho, který z disků má starší, a který mladší data, a máte na světě synchronizaci opačným směrem, než chcete. Riziko není velké, ale existuje. MD bych se vyhnul.

Smysluplnější řešení jsou snapshoty v rámci ZFS / btrfs.

Pokud však jde o to mít možnost rychle obnovit systém, vyprdl bych se na obrazy disků. Obrazy disků jsou závislé na velikosti disku a ne vždy to potřebujete / chcete. Stejně rychle obnovíte z obyčejné zálohy.

Osobně bych použil obyčejné zálohování. Mám rád borg backup - rychle zálohuje, rychle obnovuje. Při havárii nainstalujete jen základní systém a borg a za chvíli natáhnete data ze zálohy. Výhodou bude vyšší rychlost, než u image a taky získáte deduplikovaný a komprimovaný archiv záloh v čase. Do stejného prostoru dostanete násobně víc záloh, než do obyčejného image.

RDa

  • *****
  • 1 202
    • Zobrazit profil
    • E-mail
Re:Linux SW falešný RAID 0 (zrcadlení)
« Odpověď #4 kdy: 27. 12. 2020, 13:10:55 »
Prehistorická možnost je použít md raid a ve chvíli, kdy je vše synchronizované, pomocí mdadm odebrat disk. Při záloze ho zase přidat. Mělo by to být bezpečné, ale jen teoreticky. MD na to není určený - ten je určený k tomu, že oba disky jsou rovnocenné. Stačí selhání ve vyhodnocení toho, který z disků má starší, a který mladší data, a máte na světě synchronizaci opačným směrem, než chcete. Riziko není velké, ale existuje. MD bych se vyhnul.

A jak toto muze nastat, kdyz vyhodnoceni je otazkou porovnani "Events counter" (mimo uuid identifikaci pole, ktere zabranuje vlozeni disku z jineho pole)?

Mimo jine to, ktery disk se pridava je ten, na ktery se bude synchronizovat - nelze do aktivniho degradovaneho mirroru pridat disk za chodu, aby se prepsal bezici. Tak blbej ten raid fakt neni.

Pokud stroj vypnete, pridate disk, zapnete, tak se bud pole neslozi vubec, slozi jako readonly z disku s vetsimi events, nebo zacne synchronizovat (je to o nastaveni mdraid-u, ktere zabezpeci to, aby slo nastartovat stroj bez zasahu uzivatele, s rootfs na degradovanem poli).

Osobně bych použil obyčejné zálohování. Mám rád borg backup - rychle zálohuje, rychle obnovuje. Při havárii nainstalujete jen základní systém a borg a za chvíli natáhnete data ze zálohy. Výhodou bude vyšší rychlost, než u image a taky získáte deduplikovaný a komprimovaný archiv záloh v čase. Do stejného prostoru dostanete násobně víc záloh, než do obyčejného image.

Pokud se nevyzaduje inkrementalni zaloha a vicero kopii - tak lze cas obnovy lze redukovat temer na 0 (tedy na nutne minimum k prohozeni disku / prenastaveni boot from), kdyz udrzujete cilovej disk v bootovatelnem stavu (aktualizujete mu /boot, a zabranite prepisu rootfs identifikace u grub.conf a /etc/fstab, pripadne mate gentoo se svym initrd, ktery pri nenalezeni root= jako disku se zepta kde tedy je.. takze staci jedno obligatne /dev/sdxy enter a jede se ze zalohy).



Re:Linux SW falešný RAID 0 (zrcadlení)
« Odpověď #5 kdy: 27. 12. 2020, 13:29:16 »
Jeden exkolega zrcadlil data pomoci drbd. Kdykoli dorazil domu, odlily se mu zmeny na notebookovem disku na druhy disk v domacim NASu. Pravda, je to netrivialni, vyzaduje to mezivrstvu (drbd), mozna je to trochu opicarna, ale mozna by to na tenhle use case mohlo jit pouzit.

vlna

Re:Linux SW falešný RAID 0 (zrcadlení)
« Odpověď #6 kdy: 27. 12. 2020, 14:11:21 »
SnapRAID by nešlo použít? https://www.snapraid.it/ (mnou nikdy nezkoušeno, takže neznám omezení)

Re:Linux SW falešný RAID 0 (zrcadlení)
« Odpověď #7 kdy: 09. 01. 2021, 22:06:02 »
Díky moc všem za reakce. Zvažují, že si za pár stovek koupím replikovací stanici, do které vložím párkrát ročně oba disky a kliknu na tlačítko na stanici, počkám pár hodin a hotové.

Řešení, které se mi zdá nejlepší: Dám ale ještě šanci mdadm, líbí se mi, zdá se mi, že chápu, že ho stačí nainstalovat a jedním commandem provést replikaci disku na jiný. Ten gzip nebo tak něco to v sobě určitě bude mít, aby to fungovalo nějak efektivně.

@Martin Dráb: Myšlenka by to byla dobré, až na to, že já nepotřebuji snapshot jen LVM, ale celého disku. Abych mohl případný vadný disk zahodit a jen zapojit ten co je zapojený jako sekundární. Ze snapshotu disku nemohu takto pokračovat. Musel bych instalovat systém znovu. Chci mít disk 1:1 komplet. Takže toto řešení mi nevyhovuje. Nevadí mi párkrát ročně udělat kopii celého disku.

@RDa: rsync - Bych mohl zkusit, ale moc se mi nelíbí poznámka, že to bude bez komprese, odříznu si tak možnsost, aby se mi na ten disk vešly třeba tři historické verze img disku.

mdam - To se mi docela líbí, díky. Zdá se, že stačí nainstalovat mdam a použít následující command:
Kód: [Vybrat]
# mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc --spare-devices=/dev/sdd

BTRFS / ZFS - Navrhuješ v případě velkých rozdíl kapacit disků. Rozdíly budou minimální, ale nechi zálohovat jednotlivé rozdíly, prostě mi nevadí párkrát ročně počkat i pár hodin a zreplikovat to 1:1, ať mám jistotu.

@Miroslav Šilhavý: Při použití dd je mi jasné, že to nebude replikace 1:1, ale replikace 1:0,99, což mi nevadí. Zřejmě možná použiji mdam, což ale zřejmě je možná stejný princip, jen je to nějak vychytanější. Zálohovat jen data nechci, chci obnovit celý systém, jelikož je i samotný systém dost upravený.

@RDa: Žádné inkrementální zálohy nechci, stačí mi full backup párkrát ročně. Celý ten systém je v podstatě read-only, změny dělám párkrát ročně. Stačí mi pokaždé po ukončení změn spustit mdam.

@Radek Zajíc: To je úplně mimo moji potřebu, ale díky.

@vlna: Asi šlo, ale mdadm mi přijde jednodušší, případně to zvážím děkuji.
« Poslední změna: 09. 01. 2021, 22:11:48 od scientific »

RDa

  • *****
  • 1 202
    • Zobrazit profil
    • E-mail
Re:Linux SW falešný RAID 0 (zrcadlení)
« Odpověď #8 kdy: 09. 01. 2021, 22:59:42 »
Mas v tom dobrej gulas :)
Ten mdraid se typicky nad diskama nepouziva, ale az na partisnama, ktere jsou oznaceny "Linux RAID".

Ohledne RSYNC a vicero historickych kopii - muzes si udelat /boot a /root1 /root2 /root3 partisny na zalohovacim disku, a do prvni delat rsync denne, do druhe tydne, a do treti jednou mesicne (nebo podobne), pokud je ta zaloha ten vetsi disk. A pak v pripade nabootovani z nej si jen upravis behem bootu v grub editoru kterej root=/dev/sdXY chces pouzit.

Jak vidim ze ten sw raid nechapes, tak se do toho radej nepoustej.. a proste si ty data zkopiruj. Pres DD zkopirujes /boot, pak upravis partition table podle poctu kopii.. a pak kopirujes data do tech partisen, pres cp -a (poprve), nebo rsync (prenese jen zmeny), tento rsync bude mit hromadu parametru, aby to udelalo pouzitelnou kopii.

Re:Linux SW falešný RAID 0 (zrcadlení)
« Odpověď #9 kdy: 09. 01. 2021, 23:27:27 »
Ahá, no viděl jsem example, kde dělali celé disky. Tak jsem to taky chtěl zkusit. :-D
Takže dd přecejen nebyl špatný nápad?

Kód: [Vybrat]
[root@localhost ~]# lsblk
NAME          MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda             8:0    0 232.9G  0 disk
├─sda1          8:1    0     1G  0 part /boot
└─sda2          8:2    0 231.9G  0 part
  ├─cl-root   253:0    0    50G  0 lvm  /
  ├─cl-swap   253:1    0    32G  0 lvm  [SWAP]
  └─cl-centos 253:2    0 149.9G  0 lvm  /home
sdb             8:16   0 298.1G  0 disk
├─sdb1          8:17   0     1G  0 part
└─sdb2          8:18   0 297.1G  0 part
  ├─cl_d-root 253:3    0  14.7G  0 lvm
  ├─cl_d-home 253:4    0 278.6G  0 lvm
  └─cl_d-swap 253:5    0   3.9G  0 lvm
sr0            11:0    1  1024M  0 rom

Chápu tedy správně, že v mém případě stačí párkrát ročně spustit toto?:
Kód: [Vybrat]
dd if=/dev/sda of=/dev/sdb bs=32M
Chápu správně, že se stane to, že stará data na /dev/sdb budou zahozena a přehrána novými daty z /dev/sda? Nebo mám ten disk vždy napřed vyprázdnit?

/dev/sdb je dokonce je disk vložen v ráměčku pro extermí disk, není potřeba, aby se tam vrtěl 24/7, když ho mám v plánu třeba 1-3 ročně použít pro uložení zrcadla disku.

Ale efektivnější je udržovat si nějaké starší verze třeba, to ale vyžaduje šetřit místem, fungovalo by to takto?

Kód: [Vybrat]
dd if=/dev/sda of=/dev/sdb/2021-01-09.img bs=1M | gzip -c > 2021-01-09.img.gz
Obnovení by hádám pak probíhalo stejně, jen nějak opačně? Já určitě napsal nesmysl, jak by to bylo prosím správně?

Kód: [Vybrat]
gzip -d < 2021-01-09.img.gz | dd if=/dev/sdb/2021-01-09.img of=/dev/sda bs=1M
Jenže ty vlastně píšeš, že přes dd jenom /boot a zbytek presrsync nebo cp -a. To si zase neumím vůbec představit, jak řešit.
« Poslední změna: 09. 01. 2021, 23:29:07 od scientific »

RDa

  • *****
  • 1 202
    • Zobrazit profil
    • E-mail
Re:Linux SW falešný RAID 0 (zrcadlení)
« Odpověď #10 kdy: 09. 01. 2021, 23:54:14 »
Myslim ze ve snaze o tyhle pseudo-zalohy brzo prijdes o sva data, kdyz budes psat prikazy beze smyslu.
Prosim odpovezte mu nekdo.. ja na to nemam silu, kdyz je v kazde jeho vete chyba :(
(a jeste si porad meni "zadani/zamer")

k3dAR

  • *****
  • 1 857
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:Linux SW falešný RAID 0 (zrcadlení)
« Odpověď #11 kdy: 10. 01. 2021, 14:05:01 »
- dd delat za chodu je blbost jakkoliv si chced oduvodnit ze to bude aspon 1:0,99 :)
- lvm snapshot se nedela abys mel nekde snapshot jako zalohu, ale ze zazalohujes pak ten stav z snapshotu
- mdadm pouzit na jednorazove/jednorocni clon disku A na disk B je take blbost

dale pises ze chces mit ~1:1 clon disku a kdyz disk pouzivanej odejde jen zapojit ten zalozni, zaroven ale pises ze v tom zaloznim chces mit nekolik zaloh, to take nedavca smysl, bud tam bude 1 posledni zaloha celeho disku tak aby z nej slo rovnou startovat, nebo tam bude nekolik zaloh ktere ale budes muset (klidne na 1 "tuknuti") nejdriv obnovit na novej disk

dd je "idealni" nastroj na clon 1:1 disku A na disk B, ALE POUZE kdyz to dd pustis z USBLive a z "disk A" NEbude nastartovan tedy ten system...

pro vicero zaloh naopak doporucuju ClonezilaLive, provadi kompresi, zalohuje jen pouzite misto, ulozi informace o vsech oddilech a to pak obnovi...

Re:Linux SW falešný RAID 0 (zrcadlení)
« Odpověď #12 kdy: 10. 01. 2021, 14:48:25 »
Lidičky, já vím, že trochu měním zadání nechci nikoho znechutit mi pomoct.

Faktem je, že chci nejspíš obojí.

  • Command, co naklonuje /dev/sda na /dev/sdb, abych přehozením disků mohl kdykoliv ten druhý nahradit ten první, pokud ten první selhal.
  • Command co uloží img.gz na externí disk /dev/sdc pro případ, že by byl problém s sdb i sda zároveň, tak to nějak (nevím jistě jak) obnovím z toho /dev/sdc. :-D

LiveUSB je geniální nápad, vůbec mi nevadí to udělat párkrát ročně tak, že to zapnu z liveusb a spustím dva dd příkazy. Ani clonezillu hádám nepotřebuji, neznám konkrétní místa k zálohování, i samotný systém je dost všude možně upravený a není to v gitu.

Jen potřebuji vědět, zda mi bude fungovat tento postup, nerad bych to nějak tó. :-D :

1. Vypnout PC
2. Vložit LiveUSB a externí disk /dev/sdc
3. Nabootovat Live USb
4. Spustit
Kód: [Vybrat]
dd if=/dev/sda of=/dev/sdb bs=32M
&& dd if=/dev/sda of=/dev/sdc/2021-01-09.img bs=1M | gzip -c > /dev/sdc/2021-01-09.img.gz
5. Vypnout PC.
6. Vyjmout externí disk
7. Zapnout PC, který nabootuje zpět z /dev/sda


Chápu vše správně a bude to takto fungovat jak potřebuji?

Díky moc všem za trpělivost.

RDa

  • *****
  • 1 202
    • Zobrazit profil
    • E-mail
Re:Linux SW falešný RAID 0 (zrcadlení)
« Odpověď #13 kdy: 10. 01. 2021, 15:02:37 »
2. Vložit LiveUSB a externí disk /dev/sdc
4. Spustit
Kód: [Vybrat]
dd if=/dev/sda of=/dev/sdb bs=32M

Zde mas prohozene disky - co je sda, sdb, sdc? Jestli je sdc externi, tak sis zalohu neudelal, ale prepsal fleshkou svuj disk (poradi a,b,c na zarizenich muze byt nahodne).

Krok 3.5 = overit ktery disk je ktery. Dvakrat nebo i trikrat (pres fdisk -l, hddtem, smartct). Protoze jak se jednou spletes, neni navratu zpet!


Kód: [Vybrat]
dd if=/dev/sda of=/dev/sdc/2021-01-09.img bs=1M | gzip -c > /dev/sdc/2021-01-09.img.gz

Ne, takto to NEFUNGUJE.
Jestli chces pouzit pipe z DD, tak tam nesmi byt of= (nebo tam musi byt specialni)
Vystupni soubor nebude v ceste /dev/sdc/soubor, takto linux nefunguje!!
Disk, tak pujde img.gz, musi byt naformatovan (ext4, exfat, ntfs), a nejspis se objevi v /mnt/neco nebo /media/neco.

A pak znova ta pitomost do nebe volajici - NEMUZES delat dd kopii na externi disk a ZAROVEN tam nahrat img.gz, kdyz nevis co delas, protoze dd dela bitovou kopii a tim prikazem jsi si prepsal partition table (takze i kdybys externi vetsi disk mel rozdelenej, tak aby dalsi misto bylo pro exfat, tak jsi si smazal tuhle extra partisnu).

Opravdu tohle nedelej a pouzi nejake zalohovaci klikatko pod Win.

k3dAR

  • *****
  • 1 857
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:Linux SW falešný RAID 0 (zrcadlení)
« Odpověď #14 kdy: 10. 01. 2021, 15:31:34 »
@RDa pripominky k dd "of a pipe" jsou na miste, ale to zakonceni ti uniklo, on (nechame ted stranou ze si neuvedouje sdX se muzou menit) psal ze hlavni disk udela 1:1 dd clon na druhej a pak ten samej hlavni disk chce komprimovanej nahrat na externi treti disk

@scientific jak pise RDa, kdyz pracujes s blokovym zarizenim, tak je to /dev/neco,
ale kdyz pracujes s souborem image tak to NEmuze byt v /dev, ale nekde to musis mit primountovane (napr. /mnt/neco, /media/neco, /media/uzivatel/neco)
zaroven je proste potreba NESPOLEHAT na to ze sda bude vzdy hlavni, sdb vzdy zalozni a sdc vzdy externi, protoze se muzes stat ze se to prehazi... proto se muze vyuzivat k tomu pripravene /dev/disk/by-id kde budes mit nazvy dle pripojeni-model-serial ktere bude vzdy stejne...

ad otazka 2. k tomu prave muze slouzit ta Clonezilla ;-) te nerikas "konkrétní místa k zálohování", to si zjisti sama ktere casti jsou pouzite, jen ji reknes "udelej clon disku na disk" a/nebo "udelej clon disku do komprimovaneho_image"