Running an OpenStack platform is a never ending story of debugging and searching for the best possible components, including the storage subsystem. It is very naive to think that OpenStack is just about a one-time installation and running of GUI or API interfaces.
In 2016 we entered a close cooperation with a company called Linbit, guys who invented a well-known storage technology called DRBD. DRBD has been an “old school”, part of the Linux world for many years. What it does is basically replicate block devices over the network. Version 9 supports up to 32 replicate copies of a single resource. But if you want to use it in a cloud environment, it’s necessary to do much more – to orchestrate on multiple levels.
So what is BlackStor?
Simply said, BlackStor is an orchestrator with added value which utilizes multiple technologies including DRBD. It is a simple interface to a complex problem, managing virtual drives with or without replication and providing them to the service’s consumers (virtual servers, bare metal servers…).
Another key technology used by BlackStor is ZFS. We decided to go with ZFS because of its critical features (such as compression, deduplication, QoS, etc.) and known stability.
BlackStor includes multiple components:
- API server (for communicating with clients)
- Worker(s) – providing the orchestration itself
- GUI – web-based interface to the API
- CLI – command line interface
In order to make BlackStor universally usable we decided to go forward with a JSON-based API. All communication between the client and BlackStor is based on HTTP requests to the API server.
The API server then creates and assigns tasks to Workers, manages queues, etc.
The API can run in fully synchronous or asynchronous mode. (We recommend a synchronous setup; however there can be applications that cannot wait for API responses, so async mode would run everything in the background).