Skip to content
This repository has been archived by the owner on Apr 17, 2024. It is now read-only.

"Storage Forests": a way to combine disparate storage mediums with Kubernetes, Ceph and Rook.

License

Notifications You must be signed in to change notification settings

koor-tech/experiment-ceph-storage-forest

Repository files navigation

Rook/Ceph Storage Forest

Storage Forest Logo

This repository contains the infrastructure code needed to run a proof of concept "Storage Forest" with Rook/Ceph.

A "Storage Forest" is a storage network spanning many different devices and strategies for storing data, mimicking the diversity of a physical forest.

Why?

Different storage mechanisms are good for different cost profiles, but there's been less excitement around heterogeneous SANs. In 2022 (when this project was completed) Ceph is capable of combining consumer and enterprise grade storage into a heterogeneous SAN quite easily, and with the addition of Rook and Kubernetes, making that storage easier to access than ever before.

Rook and Ceph combine to provide:

With some automation, workloads can be moved between tiers of service and automatic mirroring and backup archival system can be built, and that's just the beginning!

Setup

This particular Storage Forest has the components listed below.

Compute

For more complete directions on how to prep the compute nodes, see docs/compute-setup.md.

Optionally, you can also use the ODROID HC4 for HDD storage as well, though kernel rebuilding and some other hacks are required.

Storage

  • 2x eMMC (for OS
  • 2x NVMe
  • 2x SSD
  • 2x HDD

Management

As you might imagine, combining the disparate components of the storage forest is a complicated task.

The forest is managed with:

  • Ansible for bare metal terraforming
  • Kubernetes (deployed with k0s) for workload orchestration
  • Ceph (via Rook for storage management) for storage orchestration

While other systems may have done the job, this stack is wonderfully robust and current.

Getting started

You can replicate this setup yourself with the exact same or comparable hardware.

1. Update the Ansible Inventory

Update ansible/inventory.yml with the correct IPs for machines you want to configure

2. Prepare the hardware

See docs/compute-setup.md for full instructions on how to set up HardKernel ODROID hardware.

3. Set up the cluster

You can kick off the automation that will provision and terraform the machines by running make:

make

make will:

  • Run ansible
  • Run k0sctl to provision a kubernetes cluster
  • Install rook
  • Set up expected StorageClasses and other requirements for using the cluster

3. Run some workloads

After the cluster has been set up, cluster configurations will be available locally to use to run workloads.

See the following files for example workloads with fio (Flexible I/O tester):

Special features

Along with simply creating a storage network spanning different kinds of devices, the Stoarge Forest

About

"Storage Forests": a way to combine disparate storage mediums with Kubernetes, Ceph and Rook.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published