Для организации хранения данных используем ZFS.
Она позволит объединить производительность трех дисков на чтение и имеет кэш записи на выделенном для этого SSD.
При этом поддерживает доступные на запись снапшоты и (если надо) сжатие на лету.
Такая организация места позволяет провернуть хитрость:
- Исходные данные загружаются на сторадж, распаковываются.
- Монтируются в VM или контейнер, производится подготовка данных (деперсонализация, внесение нужных для тестирования изменений, и т.д.).
- После этого VM или контейнер останавливаются, создается снапшот холодной копии данных, полностью готовый для работы и доступный на запись.
- Т.к. в системе уже подготовлена оверлей сеть, то этот снапшот встроенными средствами файловой системы экспортируется и становится доступным на виртуальной машине, служащей СУБД для стенда.
- Настраиваем движок базы так, чтобы временные данные хранились на локальном диске.
- Отключаем синхронную запись.
- Настраиваем кэш для NFS также на локальный диск ВМ.
В итоге получаем емкую по ресурсам, производительную и дешевую систему.
Если нужно обновление данных - обновляем в фоне, после чего делаем новые снапшоты. Всё это не прерывая работу стендов, т.к. снапшоты полностью независимы.
Нужно откатить БД? - удаляем снапшот, делаем новый с нужной версии мастер-снапшота, монтируем, работаем дальше.
Данные занимают много места? - окей, выборочно включаем сжатие на лету, получаем бонусом (в зависимости от данных) до х4 емкости диска.
Вышел из строя жесткий диск? - не беда, меняем, заливаем образ ВМ с бэкапа или же ассеты с внешнего стораджа.
При условии того, что система будет описана в IaC, а процесс подготовки данных автоматизирован это займет какое-то время, но потребует минимального количества трудозатрат.
Итоговая стоимость аренды такого стенда будет кратно меньше, чем аренда облака (~$350 vs. $2000+)