«Не наливают вино молодое в мехи ветхие» — эту народную мудрость приходится свято чтить разработчику, ибо в IT технологии устаревают как нигде быстро. Те ли программные или аппаратные компоненты вы выбрали для своего проекта, не станут ли они в будущем для него обузой? Вот в чем вопрос. Если вы еще не знакомы, разрешите представить: DAOS, Distributed Asynchronous Object Storage, программно определяемая СХД с открытым исходным кодом, которой по плечу любые современные нагрузки.
Шпиндельные накопители информации верой и правдой служили нам десятилетиями. Но сейчас время винчестеров прошло, и планировать их применение означает заранее и самолично заложить в свою систему узкое место. DAOS, о коммерческой поддержке которой Intel объявила на только что прошедшей International Supercomputing Conference (ISC), демонстрирует принципиально иной подход.
Сравнение архитектуры DAOS и традиционных СХД
DAOS создан для того, чтобы разработчики AI, HPC и прочих высоконагруженных систем могли воспользоваться преимуществами современных NVM технологий. Кроме того, он очень легок сам по себе, поскольку работает исключительно в пользовательском пространстве и никак не затрагивает операционную систему.
Большинство систем хранения используют блочный ввод-вывод, и все операции ввода-вывода проходят через интерфейс блочных устройств ядра Linux. Несмотря на все усовершенствования доступа к этим блочным устройствам, они не подходят для современных средств хранения, так как вносят неоправданные временные издержки.
Сервера DAOS хранят свои метаданные в постоянной памяти, тогда как крупные данные записываются непосредственно на NVMe SSD. Дополнительно, небольшие по объему данные операций ввода-вывода могут накапливаться в постоянной памяти, далее агрегироваться и только потом передаваться на более емкие флеш-накопители. DAOS использует Persistent Memory Development Kit (PMDK) для транзакционного доступа к постоянной памяти и Storage Performance Development Kit (SPDK) для доступа к NVMe устройствам в пользовательском пространстве. Таким образом время доступа к данным может быть уменьшено в несколько раз и достичь порядка микросекунд вместо обычных миллисекунд.
Программный стек DAOS
Как видно из рисунка, программный стек DAOS использует клиент-серверную модель. Операции ввода-вывода обрабатываются в библиотеке DAOS, непосредственно связанной с приложением и обслуживаются службами хранения, работающими в пользовательском режиме на серверной ноде DAOS.
Программный стек DAOS обеспечивает:
- мелкоструктурные операции ввода-вывода с низкими задержками и отсутствием копирования;
- неблокирующие операции с данными и метаданными, позволяющие перекрываться вычислениям и перемещениям данных;
- размещение данных, препятствующее их потере при аварийных ситуациях;
- программную избыточность, поддерживающую репликации и перестроение «на лету»;
- сквозную целостность данных;
- масштабируемые распределенные транзакции с гарантированной сохранностью данных и автоматическим восстановлением;
- возможность снепшотов данных;
- фреймворк безопасности для управления доступом к данным;
- программно определяемое управление размещением, конфигурацией, изменением и мониторингом данных;
- нативную поддержку библиотек ввода-вывода, таких как HDF5, MPI-IO и POSIX поверх модели данных и API DAOS;
- интеграцию с Apache Spark;
- индексирование данных, возможность создания запросов ;
- вычисления внутри хранилища для сокращения перемещений данных между нодами хранения и вычисления;
- средства аварийного восстановления;
- бесшовную интеграцию с параллельной файловой системой Lustre с возможностью расширения на другие параллельные ФС;
- средства для миграции данных между пулами DAOS, из параллельных файловых систем в DAOS и обратно.
DAOS нельзя назвать совершенно новым продуктом — его концепция начала прорабатываться еще 2012 году. Начиная с 2018 идет активная адаптация DAOS к решениям Intel, таким как Intel Optane (DC Persistent Memory и DC SSD), Intel QLC 3D NAND SSD, а также процессорам Intel Xeon Scalable. Сейчас DAOS достиг такого уровня зрелости, что Intel готова осуществлять его L3 поддержку для партнеров.
DAOS доступен на GitHub под лицензией Apache 2.0. Более подробную информацию о DAOS смотрите на сайте продукта.