Недавно мы писали о новых возможностях решения для создания отказоустойчивых кластеров хранилищ VMware vSAN 7 Update 2. Среди новых функций мы упоминали возможность Enhanced Data Durability, позволяющую еще больше защитить кластер хранилищ от аварий и сбоев, которые могут происходить не в один момент, а друг за другом на протяжении некоторого времени.
Как знают администраторы vSAN, этот продукт обеспечивает высокую степень защиты данных от сбоев, в том числе встроенным механизмом избыточности, регулируемым политикой FTT (Failures to tolerate).
Однако при отказе одного или нескольких хостов ESXi в кластере vSAN может произойти ситуация, когда дисковый объект есть на одном из хостов, но только в одном экземпляре. Такая ситуация опасна тем, что если произойдет второй сбой, затрагивающий этот объект - данные могут быть безвозвратно утеряны.
Кстати, при переводе хоста в плановый режим обслуживания такая ситуация тоже может возникнуть - но в vSAN этот момент учитывался и раньше, и на время обслуживания все операции записи сохранялись до момента возвращения хоста в строй, после чего происходило накатывание операций, случившихся за это время:
Теперь же такой механизм появился и для внештатных ситуаций:
При сбое и недоступности хранилищ хост ESXi, который понял, что произошла авария, начинает записывать дельта-данные дискового объекта с этого момента не только на хранилище, где хранится активная реплика, но и в дополнительное хранилище (durability component), чтобы обеспечить надежность данных, записываемых во время сбоя.
По умолчанию в случае сбоя кластер vSAN ждет 60 минут до начала восстановления дискового объекта на другом хранилище хоста ESXi для обеспечения политики FTT. Это связано с тем, что кластер не начинает емкие по ресурсам операции для сбоев, которые могут оказаться временными. Регулируется это настройкой Object Repair Timer (она же настройка vsan.clomrepairdelay в Advanced Settings, подробнее об этом тут):
Если в этот момент случится еще одна авария, которая затронет единственно выжившую копию данных, то виртуальная машина остановится, но возможность восстановить данные будет - как только хост с последней копией данных восстановится, на них накатятся сохраненные инкрементальные операции записи. Это позволит получить состояние виртуальной машины без потери всех последних операций записи.
Надо сказать, что операции по созданию durability component имеют приоритет над стандартными операциями vSAN, такими как синхронизация дисковых объектов, поэтому это происходит очень быстро, чтобы сразу начать записывать дельта-writes. Операции записи в durability component будут продолжаться (он будет в состоянии active), пока синхронизация дискового объекта с его репликой не завершится удачно (либо на восстановившемся хосте, либо на новом, после операции rebuild). После этого durability component для дискового объекта будет удален.
Еще стоит отметить, что если хост с durability component откажет, то новый хост возьмет на себя его функции и создаст свой durability component (число таких операций не ограничено). Также полезно то, что защита данных с помощью durability component работает и для дисковых объектов с FTT=2 или выше - главное, чтобы у вас было для всех этих операций свободное дисковое пространство в кластере.