From: Sergey Matveev Date: Sun, 17 Jan 2016 22:12:31 +0000 (+0300) Subject: Обожаю удобство ZFS X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=3df04ced3bebb15c49f874f2f3674a170ac61358;p=stargrave-blog.git Обожаю удобство ZFS Очередная радость от использования ZFS. dmesg стал говорить регулярно что на ada1 диске возникают unrecoverable ошибки DMA. ada1 это зеркало ada0. Возможно порт SATA плохой в корзине, возможно шлейф, возможно диск или ещё чего. Самое простое это просто переткнуть диск в другой слот корзины. Можно выключить систему, переткнуть, включить. Это будет большое время простоя, не хочется выключать систему. Можно сделать по горячему: вынуть и вставить. Будь это обычный RAID, то не миновать полного rebuild-а всего трёхтерабайтного диска. Но в ZFS это тривиально: # zpool offline zroot ada1 Через пару секунд ada1 диск можно вынуть, он отключен от пула. Перетыкаем в другой слот. # zpool online zroot ada1 И видим что он автоматически понял что диск из этого пула, и быстро сделал resilvering: pool: zroot state: ONLINE scan: resilvered 33.5M in 0h0m with 0 errors on Mon Jan 18 00:23:43 2016 То есть ему пришлось всего 33.5 мегабайта данных синхронизировать. Он находит superblock, находит ближайший checkpoint в одном и другом диске. У каждого checkoint-а есть монотонно инкрементирующийся timestamp. По нему он понимает насколько кто отстаёт. Используя деревья Меркле он шустро находит разницу между ними и её дописывает во время resilvering на второй диск. Теперь они синхронизированы точно. Никакого downtime, 33.5 мегабайта переданных данных, вместо трёх терабайт, пара команд, всё работает как ни в чём не бывало. ---