Řešení 1:
Na ZFS Na Linuxu počínaje verzí 0.6.3 to lze celkem elegantně vyřešit pomocí ZFS Event Daemon (zed). Démon událostí může díky přímému monitorování událostí jádra reagovat téměř okamžitě na jakékoli události, které proběhnou, a nezávisí na neustálém dotazování a analýze výstupu nějakého jiného příkazu.
Vytvořte skript shellu s libovolným názvem souboru, který začíná 01
(například 19
). Tento skript může provést jakoukoli vhodnou akci, jako je odeslání e-mailu, zapsání záznamu do protokolu nebo přimět systém, aby zpíval a tančil (OK, možná ne). Jsou uvedeny příklady, které mohou poskytnout výchozí bod.
Pokud vše, co chcete, je obdržet e-mail po dokončení čištění, zadáte 28
skript to udělá dobře. Jednoduše upravte /etc/zfs/zed.d/zed.rc, abyste uvedli, kam má být e-mail odeslán a zda by se měl e-mail odeslat i v případě, že fond nezaznamenává žádné problémy, ujistěte se, že něco s názvem 30 následuje cokoli v /etc/zfs/zed.d vede k tomu a ujistěte se, že je zed spuštěn při bootování.
Řešení 2:
Tento jednoduchý skript používám k čištění zpráv o stavu e-mailem.
- zpadmin
Pokud potřebujete zjistit přechod z 42
až 59
Zkontroloval bych 69
pole 76
výstup. Něco takového:
# start scrubbing
zpool scrub ZPOOL
# wait till scrub is finished
while zpool status ZPOOL | grep 'scan: *scrub in progress' > /dev/null; do
echo -n '.'
sleep 10
done
# send a report
zpool status | mail -s "zpool status: ZPOOL" RECIPIENT
Řešení 3:
I když je tato otázka specifická pro linux, je to první výsledek vyhledávání na Googlu při hledání „počkejte, až se scrub dokončí“ , proto bych rád přidal pár užitečných informací pro lidi, kteří používají OpenSolaris (testováno na OmniOS, ale SmartOS, illumos atd. by měly být podobné) místo Linuxu (normální Solaris by měl také fungovat, ale tam jsem to netestoval).
Můžete použít 84
k registraci událostí jádra. Kompletní seznam lze nalézt v 99
(stačí v tomto souboru vyhledat "ZFS"). Po přidání událostí je třeba službu restartovat, například:
syseventadm add -c EC_zfs -s ESC_ZFS_scrub_finish /path/to/script.sh \$pool_name
syseventadm restart
Tímto způsobem bude skript spuštěn, když skončí jakékoli čištění libovolného fondu - musíte ve skriptu zkontrolovat, zda 103
se rovná požadovanému názvu fondu. Přesto je to mnohem menší režie než průzkumy.
Řešení 4:
Se zfswatcher
jsem měl velký úspěch