Distributed Storage (Ceph/GlusterFS) Setup for Clusters

The cluster grows, and data starts to get lost and slow down exactly when the load is at its maximum. We set up turnkey Ceph distributed storage: we design the placement scheme, deploy it, and test fault tolerance in real-world scenarios. As a result, the cluster survives a node failure without service downtime and handles peaks more smoothly.

Our competencies:

Frequently Asked Questions

Latest works

  • Development of a web application for FEEDME
    Development of a web application for FEEDME
    1365
  • Development of an online store for the company FURNORO
    Development of an online store for the company FURNORO
    1330
  • B2B Advance company logo design
    B2B Advance company logo design
    776
  • Development of a web application for Enviok
    Development of a web application for Enviok
    1077
  • AIDER company logo development
    AIDER company logo development
    1022
  • CRM development for Chasseurs
    CRM development for Chasseurs
    1113

Why distributed storage Ceph loses speed and data

Distributed storage Ceph spreads each object across several disks according to the placement map, while integrity relies on replicas and cluster monitors.

As long as nodes are homogeneous and the network between them keeps up, the system runs smoothly; as soon as one condition drifts, storage cluster degradation begins: first response latency drops, then part of the data becomes unavailable.

Typical first cause is skewed data placement. Drives arrive in batches of different capacity, nodes are brought in one at a time, weights in the map are set "by eye," and some disks hold twice as many placement groups as others.

Overloaded disks hit their operations limit, but the cluster considers them alive — latency grows across the entire replica chain.

The second is hardware and network. A slow disk or an overloaded channel between nodes turns a planned drive replacement into slow data recovery: replica transfer runs for hours and takes bandwidth away from workloads.

Without bandwidth limits and priorities, background rebalancing clogs the network, and the cluster enters a second wave of degradation.

The third is recovery and maintenance rules: overly aggressive failure thresholds, no priority for critical data, maintenance without checking that replicas have converged. Data is lost not at the moment of failure, but when a second failure lands on incomplete recovery.

Next we look at how this is addressed: auditing the placement map, balancing weights, limiting background operations, and a procedure under which disk replacement does not turn into an outage.

What properly configured storage delivers: speed and fault tolerance

Distributed storage Ceph pools the disks of all nodes into a single pool, so read and write operations are distributed across multiple machines.

Under load, response time stops depending on a single array: as the number of concurrent requests grows, it increases smoothly rather than in steps, when all requests hit an overloaded disk.

Storage fault tolerance is built on replication: copies of blocks are placed on different nodes and in different racks, so failure of a disk or an entire server does not interrupt data availability.

Recovery starts automatically and runs in the background without evicting the workload — cluster recovery time is measured in minutes, not a night-time downtime window.

Entire classes of failures are eliminated: overflow of a single volume, array degradation during rebuild, manual data transfer when replacing a server.

The reduction in downtime is visible in operations — the service keeps responding while a failed node is replaced, and users do not notice scheduled maintenance at all.

We measure the effect rather than describe it in words: we capture metrics before and after — operation latency, share of slow responses, recovery time after a forced node failure.

Load scenarios replicate the real request profile, so storage performance is evaluated on production data, not synthetic benchmarks.

Data placement options: replication, erasure coding, hybrid

The storage mode is chosen based on the workload profile and the cost of failure, not on "speed in general." Replication keeps several full copies of an object: a write is acknowledged after it is committed on different nodes, reads come from any copy, and recovery is simple copying.

Erasure coding splits an object into data fragments and parity blocks: usable capacity is greater, but each request is assembled from several nodes.

Option When it fits Limitations
Replication, 2–3 copies Databases, virtual machines, queues: frequent overwrites and strict latency requirements Usable capacity drops to one third; recovery copies the entire object
Erasure coding, 4+2 scheme Archives, backups, media, rarely read data Latency on small operations; assembly and recovery require inter-node exchange
Hybrid Metadata and "hot" volumes on replication, cold data on erasure coding Two maintenance profiles: separate placement rules and separate monitoring

The redundancy level is determined by failure domains: three copies in one rack do not save you when the rack fails, so placement rules spread fragments across servers and zones.

In Ceph this is set by placement rules at the pool level — one cluster serves both replicated and erasure-coded pools.

A guideline for choosing the storage mode: first fix the acceptable latency and operation profile, then calculate usable capacity and recovery time, and only then define the data placement scheme.

We validate the choice with measurements on a pilot pool — synthetic benchmarks almost always diverge from the real profile.

Work sequence: cluster audit, scheme, configuration, validation, handover

Implementing distributed storage starts not with installation but with inventory: a storage cluster audit reveals the actual topology — nodes, disks, network between racks.

Without this data, the scheme breaks at the first failure, so the work proceeds in stages with a verifiable result at each one.

  1. Storage cluster audit. We capture the topology, disk and link state, measure write latency, and identify single points of failure.
  2. Data placement scheme. Number of copies, pools, and placement rules by rack and zone: loss of a node or rack must not lead to data loss.
  3. Storage node preparation. Disk partitioning, separation of journals and data, a dedicated network segment for replication — synchronization does not consume client access.
  4. Distributed storage configuration. We deploy the cluster, bring up management nodes, set recovery policies and quotas, and connect clients.
  5. Fault tolerance validation. We disable a disk, a node, and a network segment, measure recovery time, and monitor that applications retain access.
  6. Handover to operations. Scheme, configurations, maintenance procedures, dashboards and alerts, and training for the on-call shift on actions during a failure.

Access policies, schemes, and procedures: what the customer keeps

The cluster is handed over not as a "working server" but as a managed system: after acceptance, your engineers can change pools, add nodes, and troubleshoot incidents without contacting us for every adjustment.

Therefore, the final stage is not a launch but a package of artifacts that the cluster lives by going forward.

  • Topology and placement schemes. Map of nodes, disks, and zones, distribution of pools by workload class, number of replicas per pool, and explicit failure domains — it shows which rack or zone loss the cluster can survive without stopping.
  • Storage access policies. Who connects and through what: separate keys per service rather than a shared one, restrictions by pool and read/write permissions, credential lifetime and rotation procedure.
  • Role separation. Three levels — cluster administrator, on-call shift, and service owner; each has its own set of operations; destructive actions require confirmation and are logged.
  • Fault tolerance scheme. What happens when a disk, node, or entire zone fails: how many replicas remain available, how recovery starts, and at what shortage of places the cluster enters a protective mode.
  • Storage maintenance procedure. Scheduled windows, the procedure for replacing disks and decommissioning a node without data loss, component update rules, integrity checks, and occupancy growth control.
  • Cluster documentation. Instructions for typical operations, a dependency map between services and pools, degradation response procedure, and escalation rules.
  • Monitoring and alerts. Thresholds for latency, occupancy, and node state, notification routes to on-call staff, and separately, signals about slow recovery.
  • Validation and recovery plan. How access is restored after a failure, where metadata and configuration backups are stored, which checks are performed regularly, and what is recorded based on the results.

Case study: how a cluster recovered from degradation during load growth

Initial state

The Ceph cluster expanded along with the product: disks were added as they filled up, the placement rule kept three replicas with equal node weights, and recovery after disk replacement ran without bandwidth limits.

At peak load, the recovery queue intersected with client traffic — write time grew along with it, and the share of placements in recovery state remained for hours. The degradation was not hardware-related: the cluster could not keep up with its own growth.

What was changed in the placement scheme and recovery rules

Nodes were marked by fault tolerance class, and the journal was moved to separate disks so that the write stream did not compete with recovery.

The placement rule was tied to the fault tolerance class instead of enumerating nodes, and recovery bandwidth was limited so that client traffic always had priority.

Before the changes, we captured cluster metrics before and after each step to see the effect separately from load growth.

Metric Before After
Recovery after disk replacement about 18 hours 2–3 hours
Share of placements in recovery remained for hours normal within minutes
Write latency at peak grew along with the queue stable at the same traffic
Adding a node with scheme rebalancing without service downtime

The headroom in recovery bandwidth and a clear placement scheme brought the cluster back into operation under a load that had previously driven it into degradation.

Expansion is now planned based on metrics rather than on the fact that disks are full — new nodes are introduced into the scheme without downtime.

How Ceph differs from classic network storage

A classic network array consists of controllers and disk shelves that serve volumes over the network. It scales vertically: add a shelf, replace the controller with a higher model, expand the pool.

Capacity grows, but aggregate performance and IOPS hit the controller limit — and rebuilding drives during disk replacement noticeably affects latency.

Distributed storage is structured differently: each node simultaneously stores data and serves requests, and the placement of objects across disks is calculated by an algorithm, not by controller firmware.

That is why horizontal scaling works here: add a node, and both capacity and performance of the entire system grow, without downtime or volume migration. Copies are placed on different nodes and in different racks, so failure of a server or shelf does not stop writes.

The flip side is traffic. Replication and recovery run over the same network as client requests, so the quality of inter-node connectivity becomes critical, and operations require monitoring disk occupancy, copy state, and self-healing speed.

A familiar network array wins where volume is predictable, load does not grow by multiples, and there are few virtualization nodes.

The distributed model is justified with rapid data growth, the requirement to survive node failure without manual intervention, and the need to serve storage as both blocks and objects from a single pool.

Choosing a storage architecture is not a question of "what is more modern." We calculate the workload profile, acceptable latency, number of small operations, and the team's readiness to support such a system.

If the distributed model provides redundancy where it is not needed, you pay with complexity for nothing — and vice versa.

Technical concerns: fault tolerance, migration, compatibility

At this stage, the technical customer's concerns are not about installation but about system behavior during a failure and migration. We address four questions that most often come up when choosing distributed storage Ceph.

What happens when a storage node fails?

The cluster keeps several copies of each object on different servers, and when a node is lost, it restores replicas from the surviving ones — reads and writes continue. The key is placement rules by failure domain: rack, host, disk.

Then loss of an entire rack does not stop data, and rebalancing runs in the background and does not block the workload.

Can migration be done without stopping services?

Migration happens while services are running: first we bring up new nodes, let the cluster balance placement, then decommission the old ones with a gradual weight reduction. Downtime is not needed as long as the network keeps up with writes.

We monitor migration progress by the number of incomplete movements — if it is not growing, the window remains manageable.

Will this run on current hardware?

Standard servers with local disks — a separate expensive hardware class is not needed. A mixed fleet is acceptable, but disks and nodes are balanced by weight; otherwise fast machines take a disproportionate share of the data. The one thing you should not skimp on is connectivity between servers.

How should state be monitored, and are backups needed?

We monitor the share of placed groups, incomplete movements, and latencies — alerts arrive before degradation becomes noticeable to the user.

This does not cancel backups: pool snapshots protect against media failure, but not against accidental deletion, so we move copies to an independent environment.

Let's discuss your task: we'll select a storage mode for your cluster

Evaluating a storage implementation starts not with choosing a technology but with your inputs: the more precisely the workload profile is described, the fewer assumptions there are in the cluster work plan. Gather what you already have on hand — that is enough for an initial calculation.

  • number of nodes and disks, their type and connection method to the server;
  • workload profile: read and write ratio, average and maximum object size, response latency requirements;
  • usable volume now and growth forecast for a year ahead;
  • acceptable downtime and acceptable data loss — how quickly we recover and to what point we roll back;
  • what is already in use: file system, volumes, mount points, list of consumers;
  • site constraints: number of racks, network between nodes, power redundancy;
  • if distributed storage Ceph is already deployed — export of metrics and current data placement rules.

Next is a review of the storage task: a consultation with a storage engineer together with your operations team, usually one call.

We look at where the bottleneck is: disk, network, pool size, or the workload profile itself, and check which redundancy modes are even applicable to your data.

Based on the results, we come back with a solution selection and a cluster work plan: redundancy level and disk class, placement scheme, stages with checkpoints, and behavior during node failure. Describe your task — we will come back with an estimate and a plan.