среда, 11 января 2012 г.

Обработка отказа СХД в vSphere 5

К сожалению, бывают случаи, когда vSphere теряет доступ к системе хранения данных по той или иной причине. В vSphere 4 отказ доступа к СХД мог привести к непредсказуемому результату: от немедленного BSoD у высоконагруженных ВМ до нормальной работы у простаивающих серверов за счёт работы с локальным кэшем. В vSphere 5 обработка отказов СХД была существенно переработана и улучшена.
vSphere 5 теперь различает два состояния отказа LUN: отказ всех путей (APD – All Paths Down) и перманентный отказ устройства (PDL – Permanent Device Lost). Разница между APD и PDL видна в названии – в первом случае система временно не имеет доступа к LUN (например, вышел из строя свитч к СХД), тогда как во втором случае LUN был удалён из СХД.

С технической стороны разница состоит в SCSI кодах, получаемых vmkernel при попытке обращения к LUN. Детальное описание всех кодов и сообщений в логах доступно в этой статье VMware KB.

Данные о APD/PDL никак не передаются виртуальной машине, и обрабатываются на уровне гипервизора, так что если в случае APD/PDL не записанные из-за истечения тайм-аута данные будут сброшены, виртуальная машина попытается снова записать их на диск.
Гипервизор же в случае отказа всех путей к LUN будет хранить данные в кэше vmkernel вплоть до восстановления доступа к устройству, тогда как в случае с перманентным отказом устройства данные даже не будут кэшироваться, чтобы избежать ситуаций с переполнением буфера процесса hostd, что приводило к неотзывчивости системы в vSphere 4.

Нюанс обработки удаления LUN в некоторых СХД

Некоторые низкоуровневые СХД не поддерживают технологию multi LUN, и используют схему 1 LUN – 1 таргет. Если такой LUN удалить из СХД, то при обращении в ответ не будут высланы соответствующие SCSI коды и vSphere не сможет понять, что LUN удалён навсегда (PDL), а будет считать, что это временный отказ путей к хранилищу (APD).

3 комментария:

  1. Константин, а как собственно гипервизор различает APD это либо PDL?

    ОтветитьУдалить
  2. "С технической стороны разница состоит в SCSI кодах, получаемых vmkernel при попытке обращения к LUN. Детальное описание всех кодов и сообщений в логах доступно в этой статье VMware KB."

    Другими словами, если у гипервизора отпали все пути к массиву, то он просто не сможет достучаться до массива, в случае же удаления LUN`а с массива, то массив будет отправлять в ответ SCSI команду о том, что данного LUN`a на массиве нету.

    Я ответил на Ваш вопрос?

    ОтветитьУдалить
  3. Да, супер! Спасибо Костя!

    ОтветитьУдалить