Символом абсурда в доказательстве приоритета может служить шуточная полемика, которая велась между известными работниками культуры советского периода по поводу того, кто первым назвал авоськой плетеную сумку, хотя сама по себе авоська появилась независимо от названия. Много лет спустя нечто подобное, но уже «на полном серьезе» предпринял Джордж Тексирера, директор и основатель DataCore, разослав в средства массовой информации грозное письмо, в котором утверждал, что возглавляемая им компания, а не 3PAR, предложила идею тонкого резервирования дискового пространства (thin provisioning). Подобные споры периодически возникают вокруг открытий, время появления которых прошло: Попов или Маркони, Яблочков или Эдисон, в конечном счете, какое это имеет значение, кто-нибудь да изобрел бы. Без радио и без лампочки нынешнее существование просто не мыслится, то же следует отнести и к динамическому резервированию дисков.
Мы мало задумывались над тем, что, оказывается, десятки лет процедура резервирования выполнялась статически, следствием чего был колоссальный перерасход ресурсов и средств, инвестированных в системы хранения данных. Если бы удалось остановить все бесполезно вращающиеся диски, то на неделю можно было бы отключить десяток крупных электростанций и сэкономить 2 млрд долл.
Термин thin provisioning впервые был использован в отчете Gartner конца 2002 года, а компания 3PAR в 2003 году использовала именно это название для своих технологий, но собственно концепцию динамического резервирования реализовала еще в 1999 году. И еще, как минимум третьей, тоже назвав ее по-своему, в 2001 году VMware реализовала ту же концепцию в VMware Workstation Version 3.0. То есть идея была настолько востребована, что к ней с неизбежностью пришли разные люди. Всеобщая потребность в тонком резервировании вызвана тем, что в условиях неопределенности системные администраторы, подстраховываясь, вынуждены резервировать для приложений существенно больший объем дискового пространства, чем нужно на самом деле. Допустим, приложение в данный момент использует 100 Гбайт, но прогноз его работы показывает, что со временем ему может потребоваться 300 Гбайт, тогда проще всего зафиксировать за ним том емкостью 500 Гбайт, хотя заранее ясно, что этот том вряд ли будет заполнен до предела. Так возникает проблема «брошенной» (stranded) памяти. По мнению аналитиков, ее объем варьируется от 30 до 50% общего, свыше 75% компаний вынуждены покупать новые системы хранения данных, заведомо зная, что существующие недоиспользованы.
Динамическое распределение есть не что иное, как еще одна сторона виртуализации, а его основная идея на редкость тривиальна: достаточно отказаться от резервирования дискового пространства под тома (Logical Unit Number, LUN) в процессе их создания, делая это во время записи тома, по мере того как возникает потребность в увеличении его размеров. На рисунке слева представлен традиционный процесс, при котором весь диск полностью распределен между двумя томами. Справа в дополнение к двум томам есть резервная область, которая может быть меньше общего объема неиспользуемого пространства, а оставшаяся часть высвобождается со всеми вытекающими отсюда положительными моментами.
Существование статического подхода к распределению дискового пространства можно объяснить слабостью контроллеров, обычный диск работает довольно тупо, не зная, есть на нем данные или нет, а просто отрабатывая команды. Контроллер не ведет учета занятости, и у него даже нет карты распределения пространства, следовательно, он не может оптимизировать использование блоков. Управление сводится прежде всего к инвентаризации дисков и в меньшей степени к оптимизации их использования. Заранее можно только предполагать, какое именно пространство для данных потребуется тому или иному приложению. Прогнозировать наперед потребность сложно или даже невозможно, поэтому, чтобы обеспечить удовлетворительное качество обслуживания, администратор может заказать для нового приложения память «с запасом» на случай непредвиденных ситуаций, кроме того существуют мало или вообще невостребованные приложения, за которыми числится зарезервированное пространство. В итоге и образуется брошенное дисковое пространство.
Динамическое резервирование позволяет отказаться от действующей сегодня парадигмы Dedicate-on-Allocation (выделение при введении в эксплуатацию) в пользу новой, которую можно назвать Dedicate-on-Write (выделение при записи), рассчитанной на то, что пространство из имеющегося резерва отдается по мере возникновения в нем потребности. В результате администратору не нужно отслеживать динамику потребностей, а лишь, контролируя общий резерв, пополнять его за счет высвобождающихся мощностей.
Рассмотрим реализацию thin provisioning на примере 3PAR InForm Operating System, как наиболее наглядную. В архитектуре 3PAR InForm выделяются три уровня, примерно так же как в операционных системах, используемых для виртуализации серверов. На первом уровне мелкие блоки объединяются в более крупные модули – порции, или чанклеты (от английского chunklet, то есть порция, колода карт) стандартного размера 256 Мбайт. Размер выбран исходя из того, что он не должен быть слишком большим, чтобы не расходовать напрасно пространство, но и не слишком маленьким, чтобы не усложнять процедуры обмена. На втором уровне из чанклетов собираются логические диски (Logical Disk, LD). Поскольку они виртуальны, то им можно придать нужные стоимостные, надежностные и другие характеристики и собрать из них требуемые RAID-массивы. На третьем уровне диски LD объединяются в виртуальные тома (Virtual Volume, VV).
В схеме 3PAR собственно thin provisioning осуществляется функцией Common Provisioning Group (CPG), расположенной между вторым и третьим уровнями, то есть между VV и LD. В отличие от обычных схем виртуализации дисков, где упаковываются все 100% LD, функция CPG создает LD из свободных чанклетов по мере необходимости, для этого она поддерживает карту занятых областей и поддерживает связь между LD и VV в форме специальных томов Thin Provisioned Virtual Volume (TPVV). Серверы получают пространство в форме TPVV, для них определены операции Virtual Copies, Full Copies и Remote Copies. Кроме того, CPG обеспечивает распределенный доступ к динамическому пулу ресурсов, его размер может изменяться в зависимости от требований. Процедуры работы с пулом можно автоматизировать, что существенно снижает затраты на администрирование.
С небольшим отставанием динамическим резервированием занялись и представители большой виртуализационной тройки: HDS, EMC и IBM, используя для его обозначения собственные названия. Hitachi сделала выбор в пользу Dynamic Provisioning, EMC – Virtual Provisioning, а IBM предпочла вообще не использовать thin provisioning, поскольку есть Space Efficient Volumes/Vdisks (SEV). Но, как бы его ни называли, в той или иной степени динамическое резервирование присутствует в большинстве современных накопителей. Является ли это свидетельством в пользу универсальности thin provisioning как лекарства от нерационального использования дисков?
Достоинства и преимущества динамического резервирования очевидны, но и у него есть слабые места. Во-первых, невозможно исключить опасность переполнения резервного пула, и необходимо вводить специальные средства для его предотвращения. Вторая опасность исходит из преимуществ, неуправляемое распределение данных по большому числу шпинделей может привести
к переполнению трактов, связывающих диски с хостами, каналы могут стать бутылочным горлом на пути данных. Чтобы ограничить параллелизм, производители делают чанклеты достаточно большими, от нескольких десятков килобайтов до нескольких десятков мегабайт. Но передача данных крупными порциями вызывает конфликт с файловыми системами, большинство из которых рассчитано на блоки размером в единицы килобайтов. К тому же возникает проблема неполного использования пространства внутри крупных чанклетов, которая устраняется периодической дефрагментацией, но и тут возникает специфическая проблема. Поскольку требуется ликвидировать фрагментацию диска, имеющего не только физическую, но и логическую разбивку, появляется необходимость в специальных средствах.
Динамическое резервирование с неизбежностью вытеснит статическое, но и у него, как у любого средства, останутся свои сложности, с которыми придется бороться администраторам. Сейчас все крупные производители (EMC, HDS, IBM и HP) работают в этом направлении, но безусловным лидером в этой области признана небольшая компания 3PAR, поставляющая свои решения с поддержкой thin provisioning c 2003 года. В ее продуктах динамика является естественной, то же самое можно сказать о накопителях компании Compellent и iSCSI-накопителях от EqualLogic (теперь часть Dell). Что же касается крупных производителей, то они адаптируют динамическое резервирование к существующим изделиям, поэтому его в шутку называют не thin, тонким, а chubby provisioning,
то есть «пухленьким».