СоХабр закрыт.

С 13.05.2019 изменения постов больше не отслеживаются, и новые посты не сохраняются.

| сохранено

H ZFS Storage, резерв и тестовые среды в черновиках

— А у нас есть какой-нибудь снимок за январь, ближе к февралю?
— Сейчас посмотрим… Да, есть! Сейчас откроем.


Бывает так, что есть среднее время жизни тестовой базы, есть согласованное всеми заинтересованными время жизни снэпшотов, но какая-то из сред слишком долго «засиживается» на своём снимке, который никак не удаляется… а потом он оказывается полезен коллегам. И минус на минус даёт плюс.

Обычно для любых систем, в которых может что-то происходить, требуется формировать бэкапы. А если она ещё и развивается и дорабатывается, то где-то также разворачивать среды разработки и тестирования. Причём для бэкапов и сред тестирования, которые работают, по сути, с теми же данными, нужно немало места. А ещё эти среды надо как-то приводить к актуальному состоянию. И всё это требует аппаратных и временных ресурсов.

В нашем случае, эти потребности покрыли Oracle ZFS Storage Appliance и серверы Oracle / Sun, которые фактически слились в одну экосистему с Exadata, появившейся незадолго до них.

Поскольку внутри Exadata стоит коммутатор InfiniBand, через который и общаются его компоненты, а ZFS Storage – это тоже Oracle Appliance, то:

  • во-первых, частью своих портов он был включен напрямую в этот коммутатор;
  • во-вторых, на нём можно хранить файлы табличных пространств с сегментами, сжатыми в Exadata Hybrid Columnar Compression (EHCC), экономящую нам немало места в основной системе. Если вы попробуете восстановить базу на каком-то отдельном сервере, то уже после восстановления, обратившись к сжатым данным, получите ошибку: «ORA-64307: hybrid columnar compression is not supported for tablespaces on this storage type» ­— потому что файлы с данными, сжатыми в EHCC, должны храниться в Oracle Appliance;
  • в третьих, это открывает возможность использования мощностей ZFS для хранения файлов тестовых сред.

Ну хорошо, а как быть с местом? Нужно избегать дублирования.

Тестовым средам нужны те же данные, что и лежат в бэкапах. Могут ли эти данные выполнять обе функции? Быть и бэкапом и основой для какой-либо привилегированной тестовой среды, которой необходим полный набор данных? Могут!

Oracle ZFS Storage Appliance — это массив, предоставляющий, в том числе и возможность формировать сетевые share, работающие под управлением файловой системы ZFS. В рамках файловой системы ZFS есть возможность создания снэпшотов, на основе которых можно разворачивать clones, которые видны как новые сетевые share. Используем эту возможность так:

  1. На ZFS Storage (так мы будем называть массив, чтобы не путать с файловой системой) создаются две share – в одну складываются Archivelog, а в другую – файлы базы;
  2. Share монтируется к серверу Oracle / Sun (который также является Appliance), а на самом сервере поднимается экземпляр Oracle Database, работающий как cascaded physical standby, – он получает логи с условно резервной площадки и применяет изменения к файлам, лежащим в share;
  3. Применение логов организовано по принципу workunit (привет всем участникам распределённых вычислений! :)). На уровне алгоритма введено понятие workunit, которому соответствует определённый интервал по времени. После наката логов за нужный интервал экземпляр останавливается, а в share остаются файлы, находящиеся в согласованном состоянии относительно друг друга и controlfile. По сути, это холодный бэкап, он же – Image Copy, поверх которого и делается снэпшот;
  4. Когда приходит время пересоздания тестовой среды, с нужного снэпшота создается клон. Он монтируется к серверу, на котором среда работает, после чего файлы в нём открываются как база под другим именем и в режиме Read / Write;
  5. В процессе работы в тестовой базе производятся изменения, которые откладываются в рамках клона, и он потихоньку растёт. К концу жизненного цикла среда вырастает до максимума.
  6. Чтобы потребление дискового пространства было ещё меньше – применяем LZJB-компрессию, которую ZFS Storage выполняет на лету.

В итоге:

  1. В нынешней конфигурации тестовые среды могут выполнять I/O до уровня 3.75 Гб/с;
    Максимум для чтения пока ограничен существующими настройками портов InfiniBand на сервере, максимум для записи – CPU на контроллерах ZFS Storage и доходит примерно до 2 Гб/с. (Да-да! Т.к. 10 GbE оказалось мало, для тестовых серверов были куплены отдельные коммутаторы, в которые включены ZFS Storage и сами сервера);
  2. В день создаётся несколько снэпшотов, которые сейчас хранятся, в зависимости от базы, от 2 недель до 2 месяцев. После чего они все удаляются, кроме тех снэпшотов, созданных в 00:00, 1-числа каждого месяца – эти хранятся уже больше квартала. Были случаи, когда полезными оказались снэпшоты, хранившиеся около полугода;
  3. При необходимости всю промышленную базу данных можно восстановить из нужного снэпшота. Так же со скоростью порядка 1 … 3 Гб/с., но намного популярнее вариант создания клона с нужного снэпшота, из которого потом и выгружаются данные нужных таблиц;
  4. Время пересоздания тестовой среды – около 1 часа (с переносом туда ряда дополнительных схем и т.п.);
  5. Время предоставления коллегам клона, из которого можно забрать данные для восстановления или просто какого-то анализа, – от 15 минут (при идеальном сочетании условий) до 1-2 часов (при большой параллельной нагрузке на ZFS Storage или нас J);
  6. При необходимости, можно восстановить из снэпшота и клона, и всю базу целиком;
  7. Главным ограничителем по производительности является число IOPS, генерируемых тестовыми средами или экземплярами cascaded standby. И тут система ведёт себя абсолютно адекватно и предсказуемо – как только их число подбирается к 75 IOPS на один HDD (в ней – 3.5” диски на 7200 rpm) при длительной нагрузке, то система начинает постепенно проседать. А небольшие по времени – заметно облегчаются Write- и Read-Flash;
  8. Число IOPS, общий объём поступающих данных, нагрузка на CPU, число чтений из кэшей в RAM и на Flash, а также ещё несколько десятков (если не сотен) метрик – можно посмотреть в веб-интерфейсе управления;
  9. С объектами ZFS Storage можно работать при помощи REST-запросов, описанных в документации. При их помощи и удалось автоматизировать удаление устаревших снэпшотов, а можно сделать и гораздо больше!
+16
~2900

комментарии (10)

0
+1 –1
Darka ,  
Когда начал читать, думал что техническая статья. А оказалось маркетинг.
+1
alf-bi ,  
Продажи Oracle от этой заметки — вряд ли как-то изменятся, а детали, если они будут кому-то полезны или интересны — можно уточнить. Выкладывать в заметку тексты скриптов, параметров монтирования шар и т.п. — смысла не имеет, иначе бы это было бы руководство, а не заметка.
0
imotorin ,  
для автоматизации процесса у Oracle есть
Snap Management Utility for Oracle Database
www.oracle.com/us/products/servers-storage/storage/nas/smu-bus-wp-final-1857065.pdf
0
alf-bi ,  
Да, есть. Но когда мы стали уточнять её функционал, то выяснилось, что того, что нам требовалось — нет. А сама утилита и её поддержка стоит $N. За несколько лет набегает примерно на ещё одну полку дисков!
0
Jump ,  
Бэкап не может быть основой тестовой среды. там совершенно другие условия доступа, права, размещение.
+2
alf-bi ,  
Разные тестовые среды используются для разных целей, разных процессов тестирования, разными коллегами. Оправданность размещения зависит от соотношения важности процесса и стоимости. Для ряда сред — это оправдано. «А вообще — вариантов много».
0
MrCleaner ,  
При всём уважении… Какую цель преследовала эта первая и единственная статья в корпоративном блоге банка? Мы узнали что у вас есть Exadata с ZFS Storage, вы пользуетесь технологией snapshot и можете предоставить клон своей базы в течение 2 часов. Я ничего не пропустил? Неужели нет какого-то своего уникального опыта, личного мнения, просто приколов произошедших в рабочем порядке? Мы тут живые люди, мы не хотим читать рекламные буклеты, мы хотим видеть таких же живых людей за строками вашей статьи.
0
+1 –1
alf-bi ,   * (был изменён)
Могу совершенно определённо сказать, что цели «открыть Америку» для всех и сразу — не ставилось, т.к. чтобы утверждать что опыт уникален, надо либо знать опыт всех остальных, либо быть очень наглым.
У нас есть описанная в заметке связка, мы используем её для ряда задач. Кому-то, возможно, это покажется интересным — или для похожих задач или для других, но использующих те же подходы.
0
miffo ,  
Молодая, красивая, умная, сексуальная, готовить умею, голова не болит! Никого не ищу, просто хвастаюсь!
Быть может у Вас найдется желание поделиться более подробной информацией об используемом решении, подводных камнях, сопутствующих ежедневной эксплуатации и способах их обхода?
+2
+3 –1
alf-bi ,   * (был изменён)
Да, можно. А что вас интересует?