Я кодовая обезьяна, которая все чаще берет на себя обязанности системного администратора в моей небольшой компании. Мой код - это наш продукт, и мы все чаще предоставляем то же приложение, что и SaaS.
Около 18 месяцев назад я переместил наши серверы от поставщика, ориентированного на хостинг премиум-класса, на стоечное устройство с базовыми уровнями в центре обработки данных уровня IV. (Буквально через улицу.) Мы делаем гораздо больше - такие вещи, как сеть, хранение и мониторинг.
В рамках большого шага, чтобы заменить наше арендованное хранилище с прямым подключением у хостинговой компании, я построил двухузловое NAS емкостью 9 ТБ на основе шасси SuperMicro, RAID-карт 3ware, Ubuntu 10.04, двух дюжин дисков SATA, DRBD и. Все это с любовью задокументировано в трех сообщениях блога: Создание и тестирование нового сетевого хранилища SATA RAID10 NFSv4 емкостью 9 ТБ: Часть I, Часть II и Часть III..
Мы также настраиваем систему мониторинга Cacit. В последнее время мы добавляем все больше и больше точек данных, например значений SMART.
Я не смог бы сделать все это без здорово Boffins в ServerFault. Это был интересный и познавательный опыт. Мой босс счастлив (мы сэкономили кучу долларов в месяц), наши клиенты довольны (стоимость хранения снижена), Я счастлив (веселье, веселье, веселье).
До вчерашнего дня.
Через некоторое время после обеда мы начали получать отчеты о низкой производительности из нашего приложения, CMS потокового мультимедиа по запросу. Примерно в то же время наша система мониторинга Cacti разослала поток электронных писем. Одним из наиболее ярких предупреждений был график ожидания iostat.
Производительность настолько упала, что Pingdom начал отправлять уведомления о сбое сервера. Общая нагрузка была умеренной, скачка трафика не было.
После входа на серверы приложений, NFS-клиенты NAS, я подтвердил, что почти все испытывает очень прерывистый и безумно долгий период ожидания ввода-вывода. И как только я перешел на сам основной узел NAS, те же задержки были очевидны при попытке навигации по файловой системе проблемного массива.
Пора отказываться, все прошло хорошо. В течение 20 минут было подтверждено, что все работает нормально.
После любых сбоев системы я провожу вскрытие, чтобы определить причину сбоя. Первое, что я сделал, - это ssh обратно в ящик и начал просматривать журналы. Он был полностью отключен. Время для поездки в дата-центр. Аппаратный сброс, резервное копирование и запуск.
В /var/syslog
Я нашел эту устрашающую запись:
Nov 15 06:49:44 umbilo smartd[2827]: Device: /dev/twa0 [3ware_disk_00], 6 Currently unreadable (pending) sectors
Nov 15 06:49:44 umbilo smartd[2827]: Device: /dev/twa0 [3ware_disk_07], SMART Prefailure Attribute: 1 Raw_Read_Error_Rate changed from 171 to 170
Nov 15 06:49:45 umbilo smartd[2827]: Device: /dev/twa0 [3ware_disk_10], 16 Currently unreadable (pending) sectors
Nov 15 06:49:45 umbilo smartd[2827]: Device: /dev/twa0 [3ware_disk_10], 4 Offline uncorrectable sectors
Nov 15 06:49:45 umbilo smartd[2827]: Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
Nov 15 06:49:45 umbilo smartd[2827]: # 1 Short offline Completed: read failure 90% 6576 3421766910
Nov 15 06:49:45 umbilo smartd[2827]: # 2 Short offline Completed: read failure 90% 6087 3421766910
Nov 15 06:49:45 umbilo smartd[2827]: # 3 Short offline Completed: read failure 10% 5901 656821791
Nov 15 06:49:45 umbilo smartd[2827]: # 4 Short offline Completed: read failure 90% 5818 651637856
Nov 15 06:49:45 umbilo smartd[2827]:
Итак, я пошел проверить графики Cacti для дисков в массиве. Здесь мы видим, что да, диск 7 ускользает, как и сообщает syslog. Но мы также видим, что ошибки чтения SMART для диска 8 колеблются.
В syslog нет сообщений о диске 8. Более интересно то, что колебания значений для диска 8 напрямую коррелируют с большим временем ожидания ввода-вывода! Моя интерпретация такова:
Возможно, есть более точное или правильное описание, но в конечном итоге один диск влияет на производительность всего массива.
Мне неприятно говорить «не используйте SATA» в критических производственных средах, но я видел такую ситуацию довольно часто. Диски SATA обычно не предназначены для описываемого вами рабочего цикла, хотя вы приводы, специально рассчитанные на круглосуточную работу в вашей настройке. По моему опыту, диски SATA могут выходить из строя непредсказуемым образом, часто затрагивая весь массив хранения, даже при использовании RAID 1 + 0, как вы это сделали. Иногда диски выходят из строя, что может привести к остановке всей шины. Следует отметить, используете ли вы в своей установке расширители SAS. Это может повлиять на то, как сбой диска повлияет на оставшиеся диски.
Но, возможно, имело смысл пойти с средние / ближние (7200 об / мин) диски SAS по сравнению с SATA. По сравнению с SATA есть небольшая надбавка к цене, но диски будут работать / отказываться более предсказуемо. Исправление ошибок и создание отчетов в интерфейсе / протоколе SAS более надежны, чем в наборе SATA. Так что даже с приводами чья механика такая же, разница в протоколе SAS могла предотвратить боль, которую вы испытали во время сбоя накопителя.
Как один диск может вывести из строя массив? Ответ заключается в том, что этого не должно быть, но это зависит от того, что вызывает сбой. Если диск должен умереть таким образом, он не должен его отключать. Но возможно, что это «крайний случай», с которым контроллер не справится.
Вы наивны, полагая, что этого не должно происходить? Нет, не думаю. Такая аппаратная карта RAID должна была решить большинство проблем.
Как это предотвратить? Вы не можете ожидать таких странных крайних случаев. Это часть работы системного администратора ... но вы можете работать над процедурами восстановления, чтобы они не повлияли на ваш бизнес. Единственный способ попытаться исправить это прямо сейчас - либо попробовать другую аппаратную карту (вероятно, не то, что вы хотели бы делать), либо заменить диски на диски SAS вместо SATA, чтобы увидеть, является ли SAS более надежным. Вы также можете связаться с поставщиком карты RAID, рассказать им, что произошло, и посмотреть, что они говорят; в конце концов, это компания, которая должна специализироваться на знании тонкостей неустойчивой электроники приводов. У них может быть больше технических советов о том, как работают приводы, а также о надежности ... если вы сможете найти нужных людей для разговора.
Вы что-то упустили? Если вы хотите убедиться, что в накопителе произошел краевой сбой, извлеките его из массива. Массив будет ухудшен, но у вас не должно быть больше странных замедлений и ошибок (кроме состояния ухудшенного массива). Вы говорите, что сейчас он вроде работает нормально, но если у него есть ошибки чтения с диска, вам следует заменить диск, пока это возможно. Диски с большой емкостью иногда могут иметь ошибки URE (лучшая причина не запускать RAID 5, примечание), которые не появляются до тех пор, пока не выйдет из строя другой диск. И если вы столкнулись с крайним поведением этого одного диска, вы не хотите, чтобы поврежденные данные переносились на другие диски в массиве.
Я не эксперт, но сделаю дикий снимок в темноте, основываясь на моем опыте работы с RAID-контроллерами и массивами хранения.
Диски выходят из строя по-разному. К сожалению, диски могут выйти из строя или выйти из строя, что серьезно скажется на их производительности, но контроллер RAID не считает это отказом.
Если диск выходит из строя очевидным образом, любое программное обеспечение RAID-контроллера должно достаточно хорошо определять отсутствие ответа от диска, удалять его из пула и запускать любые уведомления. Однако я предполагаю, что здесь происходит необычный сбой диска, который по какой-то причине не вызывает сбой на стороне контроллера. Поэтому, когда контроллер выполняет сброс записи или чтение с затронутого диска, требуется много времени, чтобы вернуться назад и, в свою очередь, зависает вся операция ввода-вывода и, следовательно, массив. По какой-то причине этого недостаточно, чтобы RAID-контроллер перешел в режим «ах, отказавший диск», вероятно, потому, что в конечном итоге данные возвращаются.
Мой совет - немедленно заменить вышедший из строя диск. После этого я бы посмотрел на конфигурацию вашей RAID-карты (это 3ware, я думал, они были довольно хороши) и выяснил, что она считает неисправным диском.
P.S. хорошая идея импортировать SMART в кактусы.
Вам нужны функции устройств хранения корпоративного класса. В частности, корпоративные диски WD RE 4 имеют две функции, необходимые для предотвращения такого поведения в массивах RAID. Первая из перечисленных ниже технологий предотвращает вращательную гармоническую вибрацию, вызывающую ненужный износ механических компонентов жесткого диска. Вторая технология - это то, что вызвало вашу проблему, протокол SATA не имеет этой функции. Чтобы получить эти функции, вам понадобится SAS, и если вы настаиваете на дисках SATA, вы можете приобрести карты SAS to SATA Interposer, такие как LSISS9252.
Усовершенствованная технология RAFF Сложная электроника контролирует привод и корректирует как линейную, так и вращательную вибрацию в реальном времени. В результате значительно улучшена производительность в условиях высокой вибрации по сравнению с приводами предыдущего поколения.
Ограниченное по времени восстановление после ошибок (TLER), ориентированное на RAID. Предотвращает выход диска из строя, вызванный расширенными процессами восстановления жесткого диска после ошибок, характерными для дисков настольных ПК.
http://en.wikipedia.org/wiki/Error_recovery_control#Overview
Также см. Ссылку ниже:
http://en.wikipedia.org/wiki/Error_recovery_control#Raid_Controllers
См. Также: Документ Western Digital TLER, в котором подробно объясняется процесс устранения ошибок. Восстановление после ошибок Предотвращение Fallout на жестких дисках WD Caviar RAID Edition Serial ATA:
Просто предположение: жесткие диски настроены так, чтобы повторять попытку чтения при ошибках, а не сообщать об ошибке. В то время как это желательное поведение в настройках рабочего стола, оно контрпродуктивно в RAID (где контроллер должен перезаписать любой сектор, который не читает с других дисков, чтобы диск мог переназначить его).
мой выстрел в темноте:
диск 7 выходит из строя. у него есть окна ошибок, где он недоступен.
на диске 8 тоже есть «более легкие» ошибки; исправлено повторной попыткой.
RAID10 обычно представляет собой «RAID0 из нескольких пар RAID1», являются ли диски 7 и 8 членами одной пары?
Если это так, то, похоже, вы попали в «не должно происходить» в случае отказа двух дисков в одной и той же паре. почти единственное, что может убить RAID10. К сожалению, это может случиться, если все ваши диски из одной партии, поэтому вероятность их одновременного выхода из строя несколько выше.
Я предполагаю, что во время сбоя диска 7 контроллер перенаправил все чтения на диск 8, поэтому любая повторная попытка ошибки вызывала большие задержки, которые вызывали лавину замороженных задач, снижая производительность на некоторое время.
вам повезло, что диск 8, похоже, еще не мертв, поэтому вы сможете исправить без потери данных.
Я бы начал с замены обоих дисков и не забыл проверить кабели. Причиной этого может быть слабое соединение, и, если оно не маршрутизируется надежно, это с большей вероятностью произойдет на соседних дисках. Кроме того, некоторые многопортовые карты имеют несколько двухпортовых разъемов, если привод 7 и диск 8 подключены к одному и тому же разъему, это может быть источником ваших проблем.
Карты SATA Interposer - еще одно решение.
Я недавно испытал точно такую же судьбу и нашел эту ветку. Общий смысл в том, что SAS протокол лучше подходит для RAID, чем SATA, потому что у SATA отсутствуют функции. Вот почему те же физические диски оснащены контроллерами SAS, которые затем продаются как Nearline SAS.
Продолжая поиски, я обнаружил:
http://www.lsi.com/products/storagecomponents/Pages/LSISS9252.aspx
Я собираюсь обновить одно из своих хранилищ партией таких устройств. Прямо сейчас разница в цене между 3 ТБ SATA и SAS составляет 400% (обычная цена, тот же бренд, спецификации и магазин, Германия). Я, конечно, не могу сказать, работает ли эта стратегия, но попробовать стоит.
Комментарии очень приветствуются :-)
Я видел, как SATA-диск со сломанной электроникой надежно блокировал инициализацию прошивки Areca 12, не было возможности получить доступ к BIOS, не говоря уже о загрузке машины с любого носителя, пока неисправный жесткий диск не был обнаружен путем извлечения дисков в двоичном формате поиск моды.