Как знают пользователи решения для создания отказоустойчивых кластеров VMware vSAN, этот продукт имеет множество средств для обработки ситуаций отказа физических устройств - дисков HDD и SSD. В vSAN есть специальный механизм Degraded Device Handling (DDH), который приводит кластер в жизнеспособное сосотояние при отказе одного диска или всей дисковой группы. При этом отказом устройства считается не только его полная физическая поломка, но и резкое снижение производительности, что ведет к ухудшению качества обслуживания пользователей.
Давайте посмотрим, как это работает:
1. Механизм DDH в VMware vSAN 6.1.
vSAN 6.1 ищет устройства, на которых операции ввода-вывода вызывают задержки более 50 мс. Если такое поведение на устройстве сохраняется в течение 10 минут, то vSAN отключает это устройство и вызывает аларм. Если таким устройством является кэш-диск, то в офлайн выводится вся дисковая группа (к счастью, современные SSD-диски весьма надежны).
Вот что будет в этом случае в логах:
2015-09-15T02:21:27.270Z cpu8:89341)VSAN Device Monitor: WARNING – READ Average Latency on VSAN device naa.6842b2b006600b001a6b7e5a0582e09a has exceeded threshold value 50 ms 1 times.
2015-09-15T02:21:27.570Z cpu5:89352)VSAN Device Monitor: Unmounting VSAN diskgroup naa.6842b2b006600b001a6b7e5a0582e09a
Компоненты на такой дисковой группе механизм DDH помечает как "Absent". Ребилд для таких компонентов начнется через 60 минут после отказа устройства, когда истечет rebuild timer. Если этот компонент не является частью группы RAID-1 или RAID-5/6, то он становится недоступным.
В случае с RAID-1 все продолжает работать, и если компонент witness работает, то вы получите только оповещение в vSphere Client:
Однако по некоторым причинам выдача больших latency для операций ввода-вывода на диске в течение более чем 10 минут может быть обусловлена некоторыми рабочими моментами, а начинать rebuild дисковой группы в этом случае нежелательно. Поэтому в vSAN 6.2 появились следующие улучшения DDH.
2. Улучшения DDH в vSAN 6.2.
Здесь появилось 4 новых момента:
1. DDH размонтрует диск (кэширующий или обычный) только в случае превышения задержек на запись. При появлении задержек на чтение диск не будет выводиться в офлайн, так как это окажет большее негативное влияние на кластер в целом, чем вывод диска и последующий ребилд.
2. По умолчанию DDH не размонтирует кэш-девайсы и в случае превышения latency на запись. Поскольку это ведет к выводу в офлайн всей дисковой группы, было сделано решение, что такое поведение несет больше вреда, чем медленная работа кэш-устройства. Но это дефолтное поведение можно изменить следующей командой (затрагивает не только кэш, но и диски с данными):
После ее выполнения кэш-устройства и их дисковые группы будут размонтироваться при привышении порога latency на запись.
3. DDH мониторит устройства в рамках случайных 10-минутных интервалов и учитывает несколько таких интервалов. Это предотвращает ложные срабатывания механизма в случае таких операций, как vSAN component recovery, ремапинг секторов HDD-дисков, сбор мусора на SSD и прочее. Теперь для срабатывания DDH нужно 4 превышения latency в непоследовательных 10-минутных интервалах, которые случайно распределены в окне 6-7 часов.
4. DDH пытается снова смонтировать устройства vSAN, которые были ранее размонтированы по превышению latency. Число таких попыток - 24 в окне 24 часа (то есть примерно раз в час). Если условие размонтирования сохраняется, то попытки обратного монтирования прекратятся через сутки.
3. Улучшения DDH в vSAN 6.6 и более поздних версиях.
Эти улучшения базируются на улучшениях в прошлых версиях. Если посмотреть на прошлый пункт, то понятно, что DDH отключает только диски с данными (не трогает кэш-устройства) и только если latency на запись превышает заданное значение.
Для HDD дисков был сделан threshold 500 миллисекунд на запись, для SSD - 50 миллисекунд на чтение и 200 миллисекунд на запись.
Теперь, если вышедший из строя диск является последней копией данных, но с него еще как-то можно получить данные, то vSAN не пометит диск как Absent, но начнет эвакуацию данных, таймер vSAN CLOM Rebuild Timer не включится.
В этом процессе есть 4 стадии:
1. Preventative evacuation in progress - желтый аларм сработает, чтобы дать администратору знать о проблеме. vSAN сам превентивно эвакуирует данные, без необходимых действий со стороны администратора.
2. Preventative evacuation is incomplete due to lack of resources - превентивная эвакуация данных не удалась вследствие недостатка ресурсов. В этом случае будет показан красный аларм. Администратору нужно будет высвободить дисковое пространство, например, удалить ВМ или добавить больше дисков, чтобы завершить эвакуацию данных. Разработчики vSAN рекомендуют на такие случаи держать 25-30% кластера свободными.
3. Preventative evacuation is incomplete due to inaccessible objects - это самая плохая ситуация, говорящая о том, что дисковые объекты degraded-устройства недоступны. Если добавление новых ресурсов не помогает, то остается только удалить этот диск из конфигурации vSAN, выбрав опцию "no data migration".
4. Evacuation complete - эвакуация данных завершена, и диск можно безопасно удалить из конфигурации vSAN (не забудьте заменить его рабочим диском).