[О блоге] [наверх] [пред] [2016-01-18 01:12:31+03:00] [3df04ced3bebb15c49f874f2f3674a170ac61358]
Темы: [tip][zfs]

Обожаю удобство 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 мегабайта переданных данных, вместо трёх
терабайт, пара команд, всё работает как ни в чём не бывало.

    [оставить комментарий]