Infinit is a file storage platform that is composed of three major components: the core file system, the interfaces (command-line tools & GUI) and the Hub.
At its core, the Infinit storage platform is a peer-to-peer file system. Command-line tools are provided for developers to create and manipulate the file system.
A graphical user interface can also be used by non-tech-savvy users to access their Infinit drives.
The particularity of the Infinit file system resides mainly in its fully decentralized architecture. Existing distributed file systems rely on one or more master servers to track the location of the data blocks in the network, handle access control etc.
Relying on a central metadata server
Unlike those, Infinit provides functionalities such as redundancy, scalability, versioning and access control in a completely decentralized way i.e without relying on a central entity. As a result, Infinit does not suffer from bottlenecks nor single points of failure.
Infinit system without central servers
This decentralized approach also offer devops for an easier way to deploy storage infrastructure since no master server needs to be configured. As such, instead of installing a package on your server and editing a 500-line long configuration file, all that is required is a few command lines with some basic options to benefit from a reliable and scalable file storage system.
As for every distributed system, Infinit's nodes need to have a basic understanding of the infrastructure: their role, the network protocols to follow through a configuration (referred to as network descriptor in Infinit) etc.
Common distributed storage systems require the configuration files containing these basic information to be copied on every machine for it to know how to behave. In addition, the administrator must specify the endpoints (IP address and port) of all the servers composing the storage infrastructure for them to find each other and for clients to send them requests.
Infinit is no stranger to such requirements except that it does not require the endpoint of every server in the network. Instead it only needs one, also known as a bootstrap node, to enter the network. Once connected to one node, it will discover the other automatically.
Nodes discovery in an Infinit network
However, the configuration files generated by Infinit's command-line tools must still be copied and moved to other machines for them to know how to behave in the storage network.
Now, even though Infinit is easier to deploy than virtually all the existing distributed storage systems, it is still too much work for most developers, in particular when one wants to deploy a pretty standard storage infrastructure.
Also, devops often want to automate the deployment of storage infrastructure without having to go through all those steps of extracting endpoints, moving files around manually etc.
Infinit provides a solution to this recurrent problem by offering an easy-to-deploy mechanism, without impacting the privacy requirements most of us have.
The Infinit file system can operate in two modes: standalone or hub-assisted.
In the standalone mode, Infinit runs in a completely decentralized way. As such, in a way that is similar to any other enterprise-class distributed storage system, Infinit can be deployed on server and client computers that are not connected to the Internet.
In this mode, the configuration files --- referred to as network and volume descriptors in Infinit --- must be retrieved; and installed on the new node manually as show below:
$> infinit-network --import --input cluster.network Imported network "alice/cluster". $> infinit-volume --import --input shared.volume Imported volume "alice/shared".
In addition, the endpoint of a bootstrap node must be provided to every new node for it to connect to the underlying overlay network:
$> infinit-volume --mount --as alice --mountpoint /mnt/shared/ --peer 10.0.0.5:18302 --cache --async Running network "alice/cluster". Running volume "alice/shared". ...
The standalone mode may be perfectly suited to system administrator that want total control over their deployments.
However, the extra steps of moving files around and specifying a bootstrap endpoint may be too much for most devops that would like to deploy storage infrastructure in a matter of minutes.
The Infinit Hub is a Web service to acts as a registry for storing non-sensitive information that can be retrieved on other machines and possibly by other trusted users.
As a result, the Hub can be used to publish the network and volume descriptors for other users to fetch them on their machines, removing the painful step of handing them over manually.
To achieve this, one only needs to specify the
--push option to its network and volume creation command line:
$> infinit-network --create --as alice --kelips --replication-factor 2 --storage local --storage s3 --name cluster --push Locally created network "alice/cluster". Remotely pushed network "alice/cluster".
Likewise, instead of extracting an endpoint from a running node and communicating it to act as an entry point for new nodes, the Hub can be used to keep some of those bootstrap endpoints.
Through this option, the command-line tool will fetch one or several bootstrap endpoints from the Hub and pass it to the Infinit file system as if manually provided by the system administrator:
$> infinit-volume --mount --as bob --name alice/shared --mountpoint /mnt/shared/ --publish Fetched endpoints for "alice/cluster". Running network "alice/cluster". Remotely pushed endpoints for "alice/cluster". Running volume "alice/shared". ...
As one can see in the example above, the endpoints are fetched for the network. In addition, the
--publish option pushes the current device's endpoint onto the Hub for other nodes to use as bootstrap in the future.
Example of an Infinit network using the Hub
Through both modes, Infinit offers developers, sysadmins and devops the best of both worlds.
Administrators who want the storage platform to operate in a traditional way (without relying on a Web service) can deploy Infinit while benefiting from the simplicity of its command line interface and its network discovery mechanism that require only one bootstrap endpoint to be specified.
On the other hand, users that are looking for an easy way to deploy storage infrastructure can rely on the Infinit Hub to handle the painful stuff.
The Infinit Hub can therefore be seen as a helper that can be ignored if one knows what he is doing.
Note that the Infinit Hub can also be deployed on premise for enterprises to benefit from a company-specific registry.
Get started with Infinit in less than 10 minutes! Test it!