Záloha pomocí ZFS mirror na druhý disk

Obrázek uživatele Kenji

Jestli máte laptop jako já, určitě nějakým způsobem řešíte zálohy dat (pokud neřešíte, tak byste měli začít). Do doby než jsem začal používat OpenSolaris jsem zálohoval pomocí Rsync na druhý disk. ZFS ale nabízí mnohem lepší řešení a to zálohu formou ZFS mirroru.
Funguje to tak, že připojíte disk (např přes USB), přidáte ho do svého poolu jako mirror raid, systém automaticky synchronizuje data (resilvering) a pak disk jen odeberete z poolu, fyzicky odpojíte a jedete dál. Případně pokud chcete, můžete ho nechat připojený a získat tím vyšší rychlost čtení.

Nejprve si zjistíme názvy disků příkazem

pfexec format

$ pfexec format
Searching for disks...done
AVAILABLE DISK SELECTIONS:
       0. c7t0d0 <DEFAULT cyl 38910 alt 2 hd 255 sec 63>
          /pci@0,0/pci17aa,20f1@1d,7/storage@2/disk@0,0
       1. c9t0d0 <DEFAULT cyl 30398 alt 2 hd 255 sec 63>
          /pci@0,0/pci17aa,20f8@1f,2/disk@0,0
Specify disk (enter its number):

U mě je disk #1 (c9t0d0) disk v poolu a disk #0 (c7t0d0) zálohovací disk.
Pomocí nástroje format a podnástroje fdisk náš zálohovací disk vyčistíme a vytvoříme na něm 100% Solaris partition.
Pak přepíšeme formát disku na zálohovacím disku formátem z našeho stávajícího disku (nezapomeňte na s2).

$ pfexec prtvtoc /dev/rdsk/c9t0d0s2 | pfexec fmthard -s - /dev/rdsk/c7t0d0s2

A teď můžeme připojit zálohovací disk k poolu jako mirror. Po připojení začne synchronizace, která může trvat až několik hodin. Resilvering beží s nejnižší prioritou, takže při něm můžete normálně pokračovat v práci.

$ pfexec zpool attach -f rpool c9t0d0s0 c7t0d0s0

Ještě můžeme nainstalovat Grub na druhý disk, kdybysme z něj v budoucnu potřebovali nabootovat.
$ pfexec installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c7t0d0s0

Příkaz
zpool status

nám ukáže stav našeho raidu.
$ zpool status
  svazek: rpool
 stav: ONLINE
status: Na alespoň jednom zařízení probíhá resilvering.  Svazek bude
	pokračovat ve funkci, je však možné, že v omezeném rozsahu.
akce: Počkejte než skončí resilvering.
 operace scrub: resilver in progress for 0h46m, 26,77% done, 2h7m to go
nastavení:
	NAME          STATE     READ WRITE CKSUM
	rpool         ONLINE       0     0     0
	  mirror      ONLINE       0     0     0
	    c9t0d0s0  ONLINE       0     0     0
	    c7t0d0s0  ONLINE       0     0     0  49,8G resilvered
chyby: Žádné známé chyby dat

Až budeme chtít, můžeme druhý disk zase odebrat, tím náš raid zrušíme. Já osobně ho neruším, ale prostě vytáhnu zálohovací disk čímž se raid nezruší, ale pouze degraduje (více viz. poznámky pod čarou).

$ pfexec zfs detach -f rpool c7t0d0s0

Na závěr vám přeji, abyste svůj zálohovací disk nikdy nemuseli použít :-)

Zdroj v EN

----------------------------------------------------------------
Poznámky pod čarou

  • Při unplugnutí jednoho z disků systém označí raid za degradovaný a vypojený disk jako offline. Pokud disk znovu připojíte, systém automaticky provede resilvering a znovu ho začlení do raidu. To vše bez jediného příkazu.