История разделения массивов
Большая часть устоявшихся знаний в IT-отрасли, особенно в сегменте SMB, сложилась в самом конце 1990-х годов под влиянием целого ряда факторов. Главными из них стали: стремительная компьютеризация всё более мелкого бизнеса; достижение Windows NT 4 такого уровня стабильности, что она стала стандартной основой для всего SMB-IT; окончательное утверждение эпохи интернета; и запуск Microsoft программ сертификации и обучения, кардинально изменивших распространение знаний в отрасли. Вместе всё это породило как потребность в новых методиках и лучших практиках, так и мощный всплеск новых идей, публикаций, документации, обучающих материалов, правил, эвристических рекомендаций и т. д.
В течение нескольких лет практически вся отрасль обучалась на одном и том же небольшом массиве знаний, и многие эвристические правила стали де-факто стандартами. Значительная часть знаний того времени передавалась путём зубрёжки и от наставника к стажёру в цикле, который перенёс большой пласт технических знаний 1998 года в непреложные, высеченные в камне процессы 2012-го. Тогда это было эффективно, поскольку практики оставались актуальными, но с тех пор прошло пятнадцать лет, и технологии, экономика, сценарии использования и знания изменились значительно.
Одним из лучших примеров стала знаменитая рекомендация Microsoft SQL Server: RAID 1 для операционной системы, RAID 5 для файлов базы данных и ещё один RAID 1 для журналов. Эта конфигурация просуществовала почти весь жизненный цикл продукта и была настолько широко распропагандирована, что распространилась практически на все аспекты проектирования серверов в SMB-пространстве. Использование RAID 1 для операционной системы и RAID 5 для данных настолько повсеместно, что его нередко просто принимают как само собой разумеющееся, не задумываясь о причинах, по которым оно было рекомендовано в своё время.
Давайте изучим историю и разберёмся, почему конфигурация R1/5/1 была хороша в 1998 году и почему сегодня она не должна применяться. Важно сохранять перспективу: разрыв между временем появления этих рекомендаций (начиная с 1995 года) и сегодняшним днём огромен. Мысленно вернитесь в 1995 год и подумайте об аналогичном временном разрыве на тот момент. Это было бы всё равно что применять в эпоху раннего интернета рекомендации, основанные на потребностях домашних вычислений первых владельцев Apple ][! Эпоха 8-битного домашнего компьютера только-только начиналась в 1978 году. До выпуска Commodore первого домашнего компьютера (VIC-20) оставалось ещё два года; компания успеет пройти через целые эпохи Commodore и Commodore Amiga, обанкротиться и исчезнуть — и всё это до 1995 года. До выхода Apple ][+ оставался ещё год. Люди были на пороге использования аналоговых кассетных накопителей. COBOL и Fortran были единственными языками, применявшимися в серьёзном бизнесе. По существу, разрыв колоссален. Всё меняется.
Прежде всего необходимо рассмотреть факторы, существовавшие в конце 1990-х годов, которые и обусловили нашу историческую конфигурацию.
- Диски были маленькими, очень маленькими. Большой массив базы данных мог состоять из четырёх SCSI-дисков по 2,1 ГБ в R5-массиве, давая всего около 6 ГБ используемого пространства на одном массиве. Область отказа для parity RAID была крошечной (по сравнению, например, с вероятностью ошибки чтения URE).
- Технологии подключения дисков были параллельными и медленными. Жёсткие диски того времени были лишь немного медленнее, чем сегодня, однако технологии подключения представляли собой значительное узкое место. Разделение трафика применялось для снижения нагрузки на шину.
- Технология SCSI была единственной, использовавшейся для серверов. Применение PATA (IDE, как его тогда называли) в сервере было немыслимым.
- Диски были дороги в пересчёте на гигабайт, поэтому экономия при сохранении ёмкости была ключевым вопросом для практически любого бизнеса.
- Файловые системы были хрупкими и отказывали чаще, чем диски.
- Аппаратный RAID был обязателен, и широко доступны были только базовые уровни RAID 1 и RAID 5. RAID 6 и RAID 10 стали доступны большинству предприятий лишь спустя годы. RAID 0 не рассматривается, поскольку не обеспечивает избыточности.
- Системы хранения практически никогда не были общими между серверами, поэтому доступ почти всегда был выделенным для одной очереди запросов.
- Кэш хранилищ был крошечным или отсутствовал, что означало прямое влияние ограничений доступа к дискам на операционную систему. Это требовало использования разных массивов с разными характеристиками для разных соотношений операций чтения/записи или случайного/последовательного доступа.
- Отказ дисков был частым явлением и главной проблемой при проектировании систем хранения.
- Размер дискового массива нередко ограничивался физическими ограничениями, поэтому решения о разделении массивов зачастую принимались по необходимости, а не по выбору.
- Сочетание вышеперечисленных факторов означало, что RAID 1 лучше всего подходил для тех частей системы, где допустим малый размер, а доступ носил преимущественно последовательный или интенсивно-записывающий характер, тогда как RAID 5 был предпочтительнее там, где ёмкость важнее надёжности, а доступ был преимущественно случайным и интенсивно-читающим.
За почти два прошедших десятилетия с момента выпуска первоначальных рекомендаций все эти факторы изменились. В некоторых случаях изменения носят каскадный характер: переход от повсеместного использования RAID 5 к повсеместному использованию RAID 10 привёл к тому, что два прежде распространённых типа массивов — RAID 1 и RAID 10 — стали иметь схожие характеристики доступа, и необходимость или желание выбирать между ними в зависимости от типа нагрузки исчезла.
- Диски теперь огромны. Вместо того чтобы с трудом умещать на них всё необходимое, у нас, как правило, есть избыток ёмкости. Одиночные диски объёмом более терабайта обычны даже в серверах. Области отказа для parity огромны (по сравнению с такими факторами, как вероятность URE).
- Подключения дисков теперь последовательные и быстрые. Соединения дисков больше не являются узким местом.
- SATA теперь широко используется на серверах, что создаёт потенциальные риски URE, которых ранее не существовало.
- Ёмкость сейчас дёшева, а производительность и надёжность стали ключевыми факторами при оценке затрат.
- Файловые системы сегодня весьма надёжны, и их отказы представляют собой лишь «фоновый шум» на фоне общей надёжности массива.
- Аппаратный и программный RAID — оба доступны сегодня, а доступные уровни RAID включают множество вариантов; наиболее важно то, что RAID 10 стал повсеместно доступен.
- Системы хранения широко используются совместно, что делает последовательный доступ ещё менее распространённым.
- Кэш хранилищ широко используется и зачастую весьма велик. Кэш объёмом 512 МБ и 1 ГБ сегодня считается нормой — таким образом, многие массивы 1995 года сегодня целиком помещаются в память RAID-контроллера. Учитывая стремительный рост кэша по сравнению с ёмкостью хранилищ и недавнее появление SSD в качестве кэша второго уровня в хранилищах за последние два года, вполне реально, что даже у небольшого бизнеса базы данных и другие производительно-критичные приложения работают полностью из кэша.
- Отказ дисков стал редкостью и имеет тривиальное значение для проектирования системы хранения (по сравнению с другими типами отказов).
- Размер дискового массива редко ограничивается физическими ограничениями.
- Использование RAID 1 и RAID 10 в качестве основных типов массивов сегодня означает, что нет никакого смысла использовать разные уровни RAID для настройки производительности.
Эти факторы наглядно объясняют, почему система разделённых массивов 1995 года была полностью оправдана в своё время и почему она не имеет смысла сегодня. OBR10 — нынешний стандарт — в то время был недоступен и экономически нецелесообразен. RAID 5 был относительно безопасен в 1995 году, но не сегодня. Практически каждый фактор, участвующий в принятии решений, кардинально изменился за последние семнадцать лет и продолжит меняться по мере распространения SSD, развития автоматического тайеринга, появления ещё больших кэшей и систем хранения на чистом SSD.
Изменения в проектировании хранилищ за последние два десятилетия также наглядно демонстрируют опасности, с которыми сталкивается IT-отрасль, когда значительная часть специалистов усваивает — как это принято в инженерии — базовые «практические правила» или «лучшие практики», не обязательно понимая лежащие в их основе принципы. Это затрудняет понимание того, когда не следует применять эти лучшие практики или, что ещё важнее, когда осознать, что правило уже не действует. В отличие от традиционного машиностроения или гражданского строительства, где новые достижения и значительные изменения факторов могут происходить раз в карьеру или никогда, IT по-прежнему меняется достаточно быстро, что требует полного «переосмысления» базовых практических правил несколько раз за карьеру. Не ежегодно, но раз в десятилетие или чаще — почти всегда необходимо.
Нынешний переход от однопоточных к многопоточным архитектурам — ещё одно подобное значимое изменение, требующее от IT-отрасли полного пересмотра подходов к проектированию систем.
