Since the dawn of mankind, we humans have been creating information. We also invented technologies to store the information and keep growing those technologies to keep up with the growing requirements. So, using technology is not something which we can stop, the thing we have to do is not to stop building technologies, rather find a way to scale the current technology to meet the storage requirement. Cloud stacks are the ongoing technology that helps in scaling resources like Computing, Storage, Network etc. CEPH is a storage cloud stack and the CEPH storage is the future of all the storage needs.
In today’s world, we have many storage technologies like Network Storage Systems, Distributed Storage Devices(DRBD) that can handle huge volumes of data effectively. Like in the case of every storage technology which is obsolete by now, these technologies too are experiencing new challenges in the form of exponential data growth and its effective management. This necessitates the evolution of technologies that can handle infinite volume of data or infinite storage scaling.
Why do we need infinite storage scaling?
In the case of DRBD and other storage solutions, we can handle huge volumes of data by distributing the data across the nodes/machines or Networks. But all these systems suffer the following limitations which restricts them from achieving infinite storage scaling
- The total number of systems that can be added effectively to the storage cluster are limited to a great extend
- Implementation of manual monitoring for all nodes
- Dynamic expansion or reduction of the total storage cluster/space by addition or removal of the nodes
Here is where CEPH storage has a domination over all the currently available storage solutions.
How does CEPH make the storage cluster infinitely scalable?
To understand the indefinite scaling of storage using CEPH, we can compare it with the example of scaling a small hotel to an infinitely big hotel. Here the entire hotel as such is our Storage Cluster or Total Storage Space available. Each rooms are Independent Nodes/Machines and the Guests occupied are the Data/Information.
Scenario 1
Small hotels are the ones with rooms less than one hundred. Let us assume that there is a hotel named Hotel-A, a three storied building with a total of 100 rooms, and I want to stay in that hotel for a few days.
Below are the normal procedures I would follow
- Go to the Front Desk and ask for a room telling them my requirements.
- The Front Desk staff gives me a key and tell me my room number (some hotels have the room numbers on the key chain itself).
- I myself locates alley to the elevator (considering my room is not on the ground floor),
- Once the room is identified, use the card/key on the room having my room number and I check-in.
- This is how we all normally do. Imagine, out of the100 rooms available already more than 50 are occupied.
The above scenario constitutes a basic working Storage Cluster (Hotel-A) having 100 nodes/machines (rooms) with some data (Guests). Here the Storage Cluster has a basic program/script (hotel’s Front Desk) that helps assign Nodes (rooms) for the data (Guest).
Since the room number is on my key I usually don’t memorize the room number. But what if I lost the card having my room number? I’ll go to the Front Desk and ask for my room number and check-in. But this time I make sure that I memorize my room number, so that even if lost the card having the room number I can find my room.
In this case of memorizing my room number, If I’m at a hotel in Las Vegas probably the room number would be like 908/4343-56-tower2 etc. and memorizing that becomes a hectic job as far as I’m concerned.
In general, if the hotel is having a limited number of rooms, the management has an idea of who all are staying in which room and the way to reach that room. In this case I can always forget my room number guessing that the hotel management (front desk) knows me and my room number. So the guest can always find his room in the hotel with limited number of rooms with the help of the Front Desk.
Similarly for a storage cluster with limited number of storage nodes its always easy for the script or program to manage the data.
Scenario 2
Now lets consider the case of scaling the hotel from limited rooms to infinite number of rooms.
Consider another hotel named Hotel-B having billion rooms.
Is it easy to hire people to process check-in for a million people at time? The answer is NO. Even the hotel staffs might not know who all are staying in which room and the way to reach that room. Keeping a Front Desk open will be a worse idea since they cannot handle a billion customers at a time. So running a hotel with billion rooms is entirely different from running a hotel with 100 rooms.
In a hotel with billion rooms, at a given point of time at least 10000 rooms may be undergoing renovation or maintenance works. Probably thousands of check-In’s and check-out’s will be in process. In general, the entire hotel is like a living organism going on changing each second rather than a fixed infrastructure/building in small scale hotels.
So how or what have the hotel management done to scale this? Hire more check in clerks or boarder driveways or alleys?
NO. The tricks that you use to make a thing big are not the ones you can apply it to make it infinite. The trick is entirely different.
So in building a hotel with billion rooms or even more, we have to first look how to design the building/infrastructure itself. It might not keep a centralized registry for the customers ( like in the case of front desk), rather I’ll have a ROBOT who identifies the customer once the customer punches in a card/thumb impression. The robot doesn’t have a lookup table or a centralized registry to look for the customer details, but he has a special algorithm which helps him to identify the customers room number and his belongings in that room by doing some calculations. And the robot sends him to his room.
But what if the A/C or any other infrastructure is not working the next day or if any maintenance is going on in that room? The customer comes the next day punches his card on the robot and the robot takes him to an another new room. But the robots are intelligent enough to shift the customers belongings into the new room. So when the customer comes the robot takes him to a new room maybe next floor but the customer feels that its the same room as the robot has already shifted his belongings to the new room. But here all the rooms designed should be intelligent that it places/switches the customers belongings to the new room in the exact same way as it were in the old room.
So in order to have a hotel with billion rooms you basically need two things:
1. ROBOT/Deterministic Algorithm (CRUSH)
Deterministic algorithm means the algorithm/Robot which can assign a million people to a million room and not even messing up once. This deterministic Algorithm used by CEPH is called CRUSH (Controlled Replication Under Scalable Hashing). CRUSH is a pseudo-random data distribution algorithm that efficiently and robustly distributes object replicas across a heterogeneous, structured storage cluster
2. Intelligent Rooms (OSD’s)
We need intelligent hotel rooms or nodes so that the robots can switch the customers belongings easily. This intelligent rooms in CEPH is called an OSD Node.
(To be continued…)