WAFL – удивительное изобретение, сохранявшее свою актуальность на протяжении более чем 20 лет, с него начиналась история NetApp, а сегодня оно оказалось востребованным при создании современных дисковых массивов на флэш-памяти.
В недавней статье NetApp выпустила новое поколение флэш-систем хранения All Flash FAS из-за ограничений по размеру и без должной аргументации было сказано, что та удивляющая простота, с которой NetApp переходит от традиционных массивов, построенных на жестких дисках (HDD), к массивам, построенным на твердотельных дисках, объясняется преимуществами операционной системы Data ONTAP и , в частности, используемой в ней файловой системы WAFL. У заинтересованного читателя возникают естественные вопросы: «А в чем, собственно говоря, состоят эти преимущества?» и «Почему именно NetApp, а не кто-то иной оказалась в таком выигрышном положении при переходе от HDD к SSD? и, в конце-концов, «Что такое WAFL?»
Вот почему в данной статье мы попробуем дать ответы на эти вопросы, сознательно оставляя некоторые аспекты архитектуры СХД NeyApp в стороне. Сосредоточимся исключительно на роли WAFL (Write Anywhere File Layout), что можно перевести как «запись файла с произвольным размещением».
Что такое WAFL?
Прежде всего надо сказать, что WAFL это зарегистрированная двадцать лет назад трейд-марка NetApp и, несмотря на давность, связанное с ней содержание сохраняет актуальность по сей день. В условиях быстроразвивающейся компьютерной отрасли такого рода феномены долголетия встречается, но изредка. Поэтому сказать, что WAFL исключение, будет несправедливо, найдется несколько аналогичных примеров долголетия. У NetApp, как и у некоторых других коммерчески успешной компании, начинавших с инженерного стартапа, годами сохраняются какие-то свои собственные удачные «фишки», WAFL – одна из них. Показательно, в интервью, данном по поводу двадцатилетия созданной им компании, ныне вице-президент NetApp Дэйв Хитц отдельно выделил WAFL, назвав ее главной инновацией за весь период существования компании. Начало отсчета жизни WAFL датируется зимой 1994 года, когда она была впервые представлена на конференции, проведенной ассоциацией USENIX. Есть опубликованный в солидном журнале отчет File System Design for an NFS File Server Appliance, среди трех его авторов Дэйв Хитц. Из названия статьи следует, что авторы-разработчики считали WAFL файловой системой, предназначенной для нового типа, предназначенной для специализированных сетевых накопителей (аppliance) типа NAS, которые известны как NetApp-файлеры.
Спустя годы WAFL не потеряла своей актуальности, более того в обновленном виде она стала теоретической основой для современных массивов All-Flash Arrays (AFA), построенных исключительно на твердотельных накопителях SDD. Но, как не странно, как раз в это же время возникло серьезное сомнение в том, что такое WAFL? Сомнение было высказано в 2008 году, в, скажем так, эпатажной статье Костадиса Руссоса с провокационным заголовком соответствующим содержанию: «Почему я считаю, что WAFL это не файловая система?» В ней автор утверждает: «WAFL включает в себя средства и методы для построения файловой системы, но при этом она по сути не вовсе файловая система как таковая». Английскую версию этого материала обнаружить не удалось, но на счастье он переведен на русский и размещен по этому адресу. Статья Руссоса завершается следующим утверждением: «Таким образом, WAFL это не файловая система. На самом деле WAFL это некоторая совокупность средств и методов, предоставляющих возможность различным файловым системам и технологиям получать доступ к блокам на диске. Средства и методы WAFL обеспечивают лидирующую в отрасли производительность, но вместе с тем и гибкость использования любых наших элементарных операций с данными (data management primitives), не идя на компромиссы в отношении скорости работы».
Дэйв Хитц, как непосредственно причастный к созданию WAFL, ответил на выраженное Руссосом сомнение в правоте его взглядов короткой записью в своем блоге. Ниже приведен дословный перевод:
«Многие считают, что WAFL это файловая система, я и сам так думал, когда в девяностых написал ее, но есть люди, которые думают иначе, например Костадис Руссос, он утверждает, что я неправ, заметим, при этом будучи сотрудниками NetApp! Разберемся в чем причина этого предубеждения и как на самом деле структурирована WAFL.
Структурно WAFL делится на два уровня частей, верхней и нижней. Верхний (top-half) имеет дело с каталогами файлов, он отслеживает кто и когда создал файл, кто может смотреть и модифицировать его и т.д., что очень похоже на обычные действия файловой системы. Top-half поддерживает различные протоколы файловых систем, мы начали с NFS для UNIX, но предполагали расширение, думали о Novell Netware, но следующим оказался Windows CIFS и к Netware мы больше не возвращались.
На нижнем уровне WAFL (bottom-half) оперирует физическими дисками системы, она собирает диски в отдельно управляемые пулы, отслеживает принадлежность дисков RAID-массивам и организует данные таким образом, чтобы максимальным образом повысить производительность при чтении и записи. Bottom half берет на себя создание снэпшотов, удаленное зеркалирование, клонирование, дедупликацию и другое, словом то, что обычно делает менеджер томов или выполняется на уровне виртуализации блоков.
Уникальной особенностью WAFL является способ интеграции этих двух уровней. Он допускает введение многих новых функций и оптимизаций в том случае, если их спроектируете их должным образом. Когда мы решили поддерживать iSCSI и Fibre Channel SAN, то оказалось, что WAFL отлично справляется с этой задачей на уровне bottom-half. Осознание этого факта подвигло меня к принятию решения о поддержке блочных систем хранения в решениях NetApp. Именно эта двухуровневая структура объясняет недоразумения, связанные с пониманием того, что представляет собой WAFL. По моему теперешнему представлению WAFL содержит в себе в том числе и файловую систему или даже множество файловых систем, что делает WAFL отличным более простых вещей, которые принято назвать файловыми системами».
Модель WAFL
О полемике пятилетней давности можно было забыть или вообще не знать, если бы не ренессанс интереса к WAFL, вызванный переходом от классических массивов на жестких дисках к гибридным, сочетающим жесткие диски с твердотельными, и накопителям целиком построенным на твердотельных дисках (AFA, All Flash Array). На поверку оказалась, что для многих других, альтернативных NetApp подходов к проектированию СХД, xfcnj более остро заточенных на специфике HDD, этот переход оказался непростым. Дело в том, что с появлением SDD происходит быстрое моральное старение, становятся ненужными хорошо апробированные технологии, которые были призваны компенсировать недостатки и слабые стороны HDD. А далее случилось неожиданное, именно в этот момент многоуровневая модель WAFL хранения с делением на top-half и bottom-half продемонстрировала свои лучше качества, оказалось, что ее гораздо удобнее и проще адаптировать к новым условиям, чем аналоги. NetApp оказалась в выигрышном положении, иэто далеко не случайно.
В общем случае построение сложных систем по многоуровневой модели придает конструкции невероятную живучесть, достаточно вспомнить незаменимую по сей день модель стека сетевых протоколов OSI/ISO. Поскольку природа работы с дисками проще, здесь для долгожительства оказалось достаточно всего двух уровней. Главное преимущество, отличающее многоуровневую модель от монолитной, в ее способности к адаптации к изменениям, достаточно модифицировать требуемый уровень, а вся система за счет прописанных межуровневых в целом сохраняется. В нашем случае при переходе от СХД на жестких дисках к гибридным, а затем и к AFA оказывается достаточным внести изменения в нижний уровень, а верхний остается неизменным. Скрытый потенциал WAFL, о котором писал Хитц, обнаружился при появлении флэш и стало ясно, что WAFL удачно соответствует свойствам флэш как носителя данных и может с успехом использоваться в будущем. В связи с этим стоит возвратиться к устройству WAFL. О том, как WAFL работает с HDD, говорить не будем, есть очень удачное описание этого механизма, лежащего в основе нижней половины (Файловая система WAFL — «фундамент» NetApp). Статья представляет собой популярное изложение отчета «File System Design for an NFS File Server Appliance», поэтому повторяться не стоит.
В целом WAFL отличает наличие двух встроенных механизмов: один обеспечивает способ записи и выбор места для записи на диск, второй – оптимальное распределение записываемых данных по выделенным блокам.
Первый механизм основан технологии работы с записями, которая называется Redirect-on-Write (RoW). Существует альтернативная ей технология Copy-on-Write (CoW). RoW более эффективна с точки зрения использования дискового пространства. RoW-снэпшоты оптимизированы по параметру производительности при записи. Вместо того, чтобы записывать оригинальные данные в зарезервированное для снэпшотов адресное пространство, как это делает CoW, RoW пишет только изменения в новые блоки. Детальное сравнение CoW и RoW можно найти по этому адресу.
Принятая в NetApp архитектура реализации снэпшотов RoW обладает рядом конкурентных преимуществ по сравнению с архитектурой CoW). Технология копирования NetApp Snapshot использует текущие указатели на образы хранимых данных (point-in-time image of storage system data). Сочетание WAFL с технологией виртуализации СХД, являющейся частью NetApp Data ONTAP позволяет создавать копии снэпшотов минимального размера (low-overhead Snapshot copies). В WAFL, как в СУБД используются указатели на конкретные блоки данных, но в отличие от тех же СУБД новые блоки повторно не перезаписываются, а записываются только изменения в новые блоки и указатели на них. технология NetApp Snapshot манипулирует указателями на блоки, создавая «замороженные», доступные только для чтения представления томов, которые позволяют приложениям получать доступ к старым версиям файлов и каталогов. Создание копий-снэпшотов чрезвычайно эффективно с точки зрения затрат времени и дискового пространства. При использовании NetApp Snapshot на создание копии тома уходит менее секунды независимо от размера тома и степени загруженности СХД. После того, как сделана снэпшот-копия все изменения отражаются в апдейтах к ней, а сама копия остается неизменной.
Второй из механизмов, о которых речь шла выше, определяет выбор места для записи. Название Write Anywhere File Layout подчеркивает, что для записи файлов место может быть выбрано произвольно. Однако произвольным, не значит любое, WAFL выбирает то место на диске, куда запись наиболее целесообразна, причем целесообразность определяется в первую очередь физической природой дисков, например, HDD критерии много лет были одни, а для SSD принципы места выбора другие.
Для иллюстрации принципа работы WAFL используют образную аналогию с хорошо известной игрой Тетрис. В некоторых документах NetApp применяют даже применяют название tetris для обозначения механизма, осуществляющего распределение блоков дискового пространства. Тетрис стал популярной игрой по двум причинам: на экране очередная фигурка появляется неожиданно и время на ее укладку ограничено. Но представьте себе ситуацию, когда вы можете видеть поток падающих фигурок на много ходов вперед и вас достаточные средства для подбора оптимального варианта. В таком случае вы сможете укладывать фигурки с необходимой плотностью или по каким-то иным правилам, ну разумеется игровой момент в таком случае пропадает. Поток записываемых файлов, состоящих из блоков можно уподобить потоку фигурок, а WAFL, как играющий в Тетрис в раскладывает файлы на дисковом пространстве. Изначально алгоритмы WAFL разрабатывались под особенности HDD как носителя, но с таким же успехом можно перейти на другой носитель, другими свойствами, нужно всего лишь изменить стратегию выбора преимущественного места записи.
WAFL и SSD
Наличие этих двух механизмов обеспечивает бесшовный переходный процесс от HDD к SSD, который начался в 2008 году с работы по проекту Hybrid Aggregates. Цель этого проекта заключалась в адаптации ОС Data ONTAP к требованиям SSD. Тогда, с одной стороны, флэш-память была еще очень дорогой и речь могла идти, как следует из названия проекта, только о гибридных массивах, сочетающих более быстрые, но и более дорогие диски SSD с более медленными, за то дешевыми HDD. С другой, еще недостаточно понимали различие между HDD и SDD, иногда в SDD видели простую более быструю замену HDD и SDD. Поэтому задачи, решаемые в Hybrid Aggregates, сводились к поиску баланса между двум типами накопителя в одном устройстве. Их было три. Первая – научиться передавать в WAFL информацию о составе устройства с тем, чтобы можно было решать задачу о распределении по двум типам носителя. Вторая – модификация существующих механизмов миграции и размещения данных. Третья – выработка правил для миграции данных между HDD и SDD. Все три были успешно решены путем внесения изменений в WAFL. Есть статья Hybrid Aggregates: Combining SSDs and HDDs in a single storage pool, где данная работа детально описана.
При переходе к массивам класса AFA главной проблемой становится учет физических особенностей флэш-памяти, в случае NetApp ее решение относительно несложно, поскольку двухуровневая модель позволяет реализовать преимущества WAFL заложенные в RoW. Выше было сказано, что почти все известные файловые системы ведут свою родословную от Berkeley Fast File System (BFFS), поэтому они реализуют функционал, который является величайшим достоинством с точки зрения HDD, но совершенно и абсолютным рудиментом с точки зрения SSD. Все традиционные системы стремятся обеспечить максимально близкое размещение блоков одного файла (locality) с тем, чтобы можно было так или иначе оптимизировать процедуры чтения. Файловые системы COW, в том числе и RoW, создающие теневые страницы-копии, по определению уступают им в возможности локализовать файл, создаваемые копии будут размещаться где-то в другом месте. Такие системы быстрее выполняют запись на HDD, но медленнее чтение и больше страдают от дефрагментации.
Однако то, что является недостатком в случае HDD, оказывается преимуществом в случае SDD. Когда смотришь на пару RoW в исполнении WAFL и SDD, складывается впечатление, что их не разделяет 20 лет, что они созданы друг для друга. NAND Flash SSD, как носитель, обладает двумя не слишком привлекательными качествами. Во-первых, если вы хотите осуществить запись в желаемый блок, то вы должны прежде стереть его содержимое, а уже затем непосредственно осуществить запись. Во-вторых, локальность противопоказана, чтобы носитель жил как можно дольше, желательно равномерно использовать все пространство хранения, в таком случае не будут выжигаться наиболее часто используемые блоки. И тот, и другой вполне компенсируются средствами WAFL. В статье All-Flash FAS: A Deep Dive, написанной по результатам испытания массивов AFA FAS8000 подчеркивается значение WAFL. «Возможно вам приходилось слышать, что ОС Data ONTAP существовала задолго до появления флэш-памяти, что она не проектировалась с учетом особенностей этого типа памяти. Но практика показала, что благодаря Write Anywhere File Layout (WAFL) обладает свойствами идеально соответствующими требованиям флэш».
Автор: Леонид Черняк