Pull to refresh

Объяснение ARC и L2ARC в ZFS

Основные понятия.

ZFS включает в себя две занимательные особенности, которые значительно повышают производительность операций чтения. Я говорю об ARC и L2ARC. ARC — это адаптивная замена (http://ru.wikipedia.org/wiki/Алгоритмы_кэширования). ARC — очень быстрый кэш, расположенный в оперативной памяти сервера (ОЗУ). Количество ARC кэша на сервере, как правило, вся оперативная память, минус 1 ГБ.
Например, наш сервер с файловой системой ZFS 12 ГБ ОЗУ имеет 11GB отведенных для ARC, это будет означать, что ZFS сможет кэшировать 11GB наиболее используемых данных. Любые запросы на чтение данных в кэше могут обслуживаться прямо из кэша памяти ARC вместо постоянной атаки тяжелых на подъем жестких дисков. Это создает заметный прирост производительности для данных, доступ к которым случается наиболее часто.

Как правило, если вы хотите установить больше оперативной памяти на сервере, то необходимо задать ARC новый объем доступной памяти. В какой-то момент, увеличение объема памяти для ARC становится нерентабельно дорогим. С этой целью, нам на замену приходит L2ARC. L2ARC — это второй уровень адаптивной замены. L2ARC, часто называется попросту «кэш дисков" в файловых системах ZFS.
Эти кэш диски должны иметь MLC (http://en.wikipedia.org/wiki/Multi-level_cell), и поэтому должны быть SSD дисками. Эти SSD диски работают медленнее, чем системная память, но все же гораздо быстрее, чем жесткие диски. Более того, SSD-диски намного дешевле, чем оперативная память. Большинство людей считает целесообразным сравнить цену дисков SSD с ценой на обычные жесткие диски, и это делает SSD диски в сравнении, конечно, дорогими. По сравнению с системной памятью, MLC SSD диски на самом деле очень недороги.
Когда кэш дисков присутствуют в пуле дисков ZFS, кэш дисков будет кэшировать часто используемые данные, которые не вписываются в ARC. При запросах на чтение, поступающих в систему, ZFS будет пытаться обслуживать их через ARC. Если данные не в ARC, то ZFS отработает запросы через L2ARC. Жесткие диски становятся доступными только тогда, когда данные не существуют ни в ARC, ни в L2ARC. Это означает, что жесткие диски получают гораздо меньше запросов, что нам, собственно говоря, «на руку», =) учитывая тот факт, что жесткие диски самое медленное из устройств в общем для хранения данных.
В нашем ZFS проекте, мы добавили пару 160 ГБ Intel X25-M MLC SSD дисков на общую сумму 320 Гб L2ARC. Между нашими ARC 11GB и нашими L2ARC на 320 Гб, наши решения ZFS сможет кэшировать в общей сложности 331 GB из наиболее часто используемых данных, учитывая что это 320х2+11 из 12 GB оперативной памяти! Это гибридное решение обеспечивает значительно лучшую производительность для запросов на чтение, потому что это уменьшает количество обращений к большим медленным жестким дискам.

Вещи, которые необходимо иметь в виду,

Есть несколько вещей, которые надо помнить. Кэш диски не получают зеркал. При добавлении кэш дисков, вы не можете установить их в качестве зеркалирующих, но нет никакой необходимости в этом, так как содержание уже продублировано на жестких дисках. Кэш диски — это просто дешевая альтернатива оперативной памяти для кэширования часто запрашиваемых данных.
Другая вещь, которую стоит помнить, это то, что вам все равно придется использовать SLC SSD диски для ZIL приводов, даже если вы используете MLC SSD диски для кэш-дисков. SLC SSD дисков, используемые для ZIL дисков (ZFS Intent Log), значительно повышают производительность операций записи. MLC SSD диски, используемые в качестве кэш дисков, используются для улучшения производительности операций чтения.
Если вы решите использовать MLC SSD диски для фактического хранения вместо использования SATA или SAS жестких дисков, то вам не нужно использовать кэш диски в принципе. Так как все накопители будут уже сверхбыстрыми SSD дисками, то не будет никакой производительности, полученной от также работающих кэш дисков. Вам по-прежнему необходимо для запуска SLC SSD диски для ZIL дисков, хотя бы потому, что это позволит снизить износ MLC SSD диски, которые использовались бы для хранения данных.
Если вы планируете присоединить много дисков SSD, не забудьте использовать несколько контроллеров SAS. Контроллер SAS в материнской плате для нашего проекта ZFS в состоянии выдержать 140 000 IOPS. Если вы используете большое количество SSD дисков, Вы можете фактически перезаполнить SAS контроллер. Как правило, вы можете иметь один дополнительный контроллер SAS на каждые 24 дисков MLC SSD диска.

Эффективное кэширование для виртуализированных сред

На данный момент, вы знаете, насколько эффективно двухуровневое кэширование для наиболее часто используемых данных, особенно когда мы говорим о 9 TB форматированном RAID10 массиве. Будет ли 11 GB для L2ARC и 320 GB для ARC иметь существенное значение для общей производительности? Это будет зависеть от того, какие типы данных будут расположены на массиве хранения данных и как будет осуществляется доступ. Если бы он содержал 9 TB файлов, которые все располагаются совершенно случайным образом, кэширование, скорее всего, не будет эффективным. Тем не менее, мы планируем использовать для хранения виртуальных машин (VPS) файловых систем, и кэширование будет очень эффективно по прямому назначению.
Когда вы планируете развернуть сотни виртуальных машин, первый шаг заключается в создании базового шаблона, чтобы знать откуда начнутся все виртуальные машины. Если вы планируете разместить большое количество Linux/cPanel виртуальных машин, то постройте базовый шаблон с установки CentOS и Cpanel. Когда вы перейдете к шагу, где обычно нужно настроить Cpanel через браузер, вам необходимо выключить виртуальную машину. В этот момент, базовый шаблон готов. Каждая дополнительная виртуальная машина будет просто связанной с базовым шаблоном. Технология виртуализации будет сохранять изменения, характерные для каждой виртуальной машины в своей собственной дочерней виртуализации или разностном файле.
Когда виртуализация настроена таким образом, что базовый шаблон будет храниться в кэше достаточно эффективно в ARC (основной системной памяти), то основные файлы операционной системы и файлов cPanel будут доставляться с таким уровнем производительности, как если бы это было с RAM-диска. L2ARC сможет эффективно кэшировать наиболее часто используемый контент, который не будет зайдествован во всех виртуальных машинах, но будет содержать файлы и папки, например, от самых популярных веб-сайтов или баз данных MySQL. Самые редкие данные, запрошенные из жестких дисков, даже тогда смогут показать хорошие результаты, потому что это будет RAID10 по 20 дисков и ни один из часто используемых запросов на чтение не будет загромождать объем RAID10 массива из-за того, что они уже обслуживаются при помощи ARC или L2ARC.



По материалам http://www.zfsbuild.com/
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.