*** Alex Kicelew <arko...@gmail.com> [2017-07-16 21:02]: >2) дожидаемся окончания ресилвера, однократно делаем этот диск >загрузочным, говорим ему zpool offline и отсоединяем его; пул остается в >degraded state, но полностью работоспособный (в этом моменте я уверен не >до конца, и хотелось бы выслушать его подтверждение или опровержение);
Да, всё верно. >Цель этих нетривиальных действий: если в процессе эксплуатации основного >диска (когда резервный отключен) на нем возникнет checksum error, есть >предположение (в котором я как раз совершенно не уверен), что когда >вечером будет подключен резервный и окажется, что поврежденные данные >есть в неповрежденном виде на резервном, zfs поправит их на основном, >как он поступает в случае, если в момент обнаружения ошибки доступны оба >зеркала. Тоже всё верно. Но есть засада. Время от времени ZFS делает checkpoint -- обновляет überblock ссылающийся на самое свежее дерево метаданных. У этого checkpoint есть, грубо говоря, timestamp, который только увеличивается. Во время вставки диска для resilvering он пытается понять не был ли он частью этого пула и если был, то он понимает насколько checkpoint-ов он "отстал" от основного. Найдя в основном поле старый checkpoint, он может создать "diff", который будет заresilverен. Но если прошло достаточно большое время, то настолько старого checkpoint-а не будет и он вынужден будет делать resilvering полностью всех данных с нуля, ведь он же не может "вечно" хранить все прошлые известные ему checkpoint-ы/überblock-и. Я точно не уверен, но вот терзают смутные сомнения что он будет хоть как-то смотреть на данные которые там всё же были -- поэтому такой старый диск для него будет как пустой. Кол-во checkpoint-ов на пуле вроде как фиксировано и что-то порядка полутысячи (где-то слышал). То есть минуты отключенного состояния он конечно переживёт спокойно, но вот часы уже навряд ли. -- Sergey Matveev (http://www.stargrave.org/) OpenPGP: CF60 E89A 5923 1E76 E263 6422 AE1A 8109 E498 57EF