`

СПЕЦИАЛЬНЫЕ
ПАРТНЕРЫ
ПРОЕКТА

Архив номеров

Как изменилось финансирование ИТ-направления в вашей организации?

Best CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

Юрий Жуковский

Уровни кеширования данных в дисковой подсистеме сервера

+77
голосов

Как известно, «кеш» – это промежуточный буфер с быстрым доступом, содержащий информацию, которая может быть запрошена с наибольшей вероятностью. Доступ к данным в кэше идёт быстрее, чем выборка исходных данных с основного носителя, за счёт чего уменьшается среднее время доступа и увеличивается общая производительность.

При чтении данных кэширование  даёт однозначный прирост производительности системы.

При записи данных получить повышение производительности за счет  кэширования  можно только ценой снижения надёжности.

Существуют две основные политики записи — «сквозная запись» (write-through) и «отложенная запись» (write-back).

При «сквозной записи» данные записываются непосредственно на основной носитель, и только потом дублируется в кэш. Таким образом, операции записи не кэшируются.

При «отложенной записи» данные записываются в кэш, а запись на основной носитель производится позже, группируя в одной операции несколько операций записи. Технология «обратной записи» на некоторое время делает данные на основном носителе неактуальными.

А теперь давайте посчитаем уровни кеширования, которые могут быть задействованы в современном сервере и риски, которые несет каждый из них.

1. Уровень кеширования приложения. Наиболее яркий пример – SQL-сервер, который при наличии достаточного объёма оперативной памяти вполне способен разместить всю базу данных (БД) в этой самой оперативной памяти. Как правило, при стандартных настройках большинство SQL-серверов используют кеширование на запись с отложенной записью, тем самым подвергая данные риску в случае любого сбоя.

2. Уровень кеширования операционной системы. В большинстве случаев операционная система «по умолчанию» позволяет кэширование операций записи на диски в оперативной памяти севера. Одно из самых известных исключений, когда ОС Windows Server блокирует использование кеширования на запись для диска – установка на диск Active Directory. А вот для MS SQL и Exchange кеширование на запись в ОС «по умолчанию» - разрешено. Со всеми вытекающими рисками.

3. Уровень кеширования файловой системы. При больших нагрузках некоторые файловые системы, например NTFS, записывают не файлы, а «сплошную ленту данных». Чаще всего -  при заполнении кэша ОС и его «сбросе» на диск. Затем, «при наличии свободного времени» либо при перезагрузке (обязательно), производят разборку такой «ленты» на составляющие и записывают блоки данных в файлы, которым они принадлежат. Если «сплошные ленты» становятся слишком длинными, или идет обращение к данным, часть которых хранится в этих «лентах» - ОС вынуждена «притормаживать» дисковые операции и производить разборку «сплошной ленты» на файлы. Как правило, риск повреждения данных в этой ситуации минимален, а вот риск неожиданного «проседания» производительности дисковой подсистемы и всего сервера на некоторый временной промежуток – весьма высок.

4. Уровень оперативного кэша RAID-контроллера. Большинство аппаратных RAID-контроллеров содержат встроенный кэш-буфер на основе выделенной и размещенной на контроллере оперативной памяти объемом 64MB-1GB. Которая «по умолчанию» включена как кэш на чтение. При наличии в RAID-контролера аккумулятора (BBU) или суперконденсатора – появляется возможность использовать этот кэш в т.ч. на запись.
У «порядочных» RAID-контролеров использование кеша на запись без BBU по умолчанию отключено, или даже заблокировано. Чего нельзя сказать о большинстве так называемых «программных», или soft-RAID. В качестве кэш буфера как на чтение, так и на запись, программные RAID используют часть оперативной памяти сервера. Со всеми вытекающими рисками. При этом «по умолчанию» кеширование на запись у soft-RAID, как правило, включено. О чем, безусловно, упоминается где-то и в какой-то документации. И о чем в подавляющем большинстве случаев даже не подозревают пользователи.
Как результат – около 90% обращений в сервис по поводу разрушения RAID и потери данных как раз и приходятся на эти soft-RAID.

5. Уровень SSD кэша RAID-контроллера. Наибольшую распространенность получили технологии использования SSD в качестве кэша Adaptec MaxCache (MaxIQ) и LSI CacheCade. И MaxCache 1.0, и CacheCade 1.0 обеспечивали исключительно кеширование на чтение, не неся никакого риска для данных. Зато позволяли повысить производительность дисковой подсистемы от 30% до 11 раз, в зависимости от приложений.  MaxCache 2.0 и CacheCade 2.0 уже способны обеспечивать кеширование и на чтение, и на запись (MaxCache 2.0 исключительно для RAID 0). При этом производительность дисковой подсистемы может возрастать до 16 раз!
Если есть кеширование в SSD на запись – автоматически возникает вопрос защищенности от сбоев по питанию самого SSD. К примеру, такие модели, как Intel SSD 320 series и Intel SSD 710 series содержат в себе суперконденсатор, и сбоев по питанию не боятся. А модели  Intel SSD 330 series и Intel SSD 520 series такой защиты по питанию не содержат. Так что, выбирая SSD диски для MaxCache 2.0 и CacheCade 2.0, и включая кэширование на запись, нужно хорошо понимать, какой SSD там установлен.

6. Уровень кеширования на HDD/SSD.  Все современные HDD и SSD содержат кэш в виде энергозависимой оперативной памяти объемом 32-64MB. Который успешно используется для переупорядочивания команд на чтение и запись, а также для кеширования на чтение… и запись. Причем, в стандартной поставке дисков что SATA, что SAS, что SSD этот кэш на запись на самом диске «по умолчанию» как раз включен. А его отключение – требует приложения некоторых усилий и, как правило, использования специализированных утилит производителя диска. Исключение – отказоустойчивые дисковые массивы, в которых поставщик массива модифицирует прошивки диска и просто блокирует кэширование на запись.
Рисков потери данных при аварийном отключении питания лишены модели современных SSD, снабженные суперконденсаторами.

Таким образом, в современном сервере на пути от основного носителя данных и до приложения, эти данные обрабатывающего, может находится до шести, а и иногда и более, уровней кэширования. От того, на сколько грамотно они будут сконфигурированы, напрямую зависит и производительность, и надежность хранения данных.

P.S.: Данный материал предоставляет в структурированном виде информацию, изложенную в предыдущей статье «Твердые телом».

+77
голосов

Напечатать Отправить другу

Читайте также

А вот для MS SQL и Exchange кеширование на запись в ОС «по умолчанию» - разрешено.

А "и" там точно нужно? Т.е говоря "Exchange", разве не подразумеваем базу MS SQL как основное хранилище данных?
И второй вопрос, а разве сам MS SQL не управляет системной политикой кеширования (ну, хотя бы на уровне - вкл/выкл)? У любой сколь-нибудь "серьезной" БД свой менеджер памяти, в том числе, и кеша. И максимальной его эффективность и отказоустойчивость будет только в том случае, когда разные "системные" кеши не будут путаться под ногами.
Теоретически, это должно легко проверяться тестами - при включенной или выключенной политике отложенной записи в настройках ОС.

Под "и" подразумевается "обратите внимание".
Сам MS SQL умеет много чего - только это нужно обсуждать в привязке к конкретой версии. Ведь сейчас эксплуатируются версии от "2000" до "2012".
Суть всей публикации - привлечь внимание администраторов к "настройкам по умолчанию".
Идеально - проверить, как и что конктено настроено на вашем сервере по всей цепочке.
И еще раз подумать, что надо и что не надо.

 
 
IDC
Реклама

  •  Home  •  Рынок  •  ИТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Сети  •  Безопасность  •  Наука  •  IoT