Deploy Ceph RADOS Block Device storage on an Arm AGI CPU host
Introduction
Understand the staged Ceph topology
Create three virtual machines
Prepare and validate the virtual machines
Bootstrap Ceph on one node
Create and use an RBD volume
Expand Ceph to three nodes
Test Ceph RBD during an OSD outage and recovery
Next Steps
Deploy Ceph RADOS Block Device storage on an Arm AGI CPU host
Prepare the nodes for Ceph
You’ll prepare all three virtual machines (VMs) with hostname resolution, synchronized clocks, and the tools that cephadm needs to run storage services. Connect from the AGI host, then run the preparation commands inside each VM. Finish by identifying the empty data disks that Ceph will use.
Check the virtual machines
You created three Ubuntu 26.04 VMs named ceph1, ceph2, and ceph3.
Ensure that each VM has the following resources:
- Four virtual CPUs
- 4 GB of memory
- A 20 GB operating-system disk
- A separate unused data disk of at least 10 GB
- An interface connected to
agi-net
For this Learning Path, the example unused disk is /dev/vdb. If you want to use a different disk, substitute /dev/vdb in the subsequent commands with your preferred device name.
Ceph consumes the complete object storage daemon (OSD) data disk. Don’t use a disk that contains data that you need. Check the device name and contents before you create each OSD.
Record the addresses
Start from a terminal on the AGI host with the ~/.ssh/agi_ceph private key that you created earlier. Connect to ceph1 as the ubuntu user:
ssh -o ConnectTimeout=10 -i "${HOME}/.ssh/agi_ceph" ubuntu@192.168.100.11
After login, your shell is running inside ceph1. The prompt typically includes ubuntu@ceph1.
Run the following commands in that SSH session to display the hostname, architecture, and IPv4 addresses of the VM:
hostname
uname -m
uname -r
ip -4 -brief address show scope global
Confirm that the architecture is aarch64. The tested Ubuntu 26.04 guest kernel is 7.0.0-34-generic. RADOS Block Device (RBD) requires kernel support for aes256k credentials. Loading the RBD module alone doesn’t prove authentication compatibility. Record one stable IP address for each VM.
The examples use the following addresses:
| Hostname | Address |
|---|---|
ceph1 | 192.168.100.11 |
ceph2 | 192.168.100.12 |
ceph3 | 192.168.100.13 |
Run exit to leave the VM SSH session and return to the AGI host.
Repeat the login and address checks for ceph2 and ceph3, using 192.168.100.12 and 192.168.100.13 respectively in the SSH command.
You can also open a separate AGI-host terminal for each SSH session.
Configure the hosts file
After recording all three addresses, connect to each VM again and add all three nodes to the /etc/hosts of that VM. Run the following block once inside each VM SSH session, replacing the example addresses if needed:
cat <<'EOF' | sudo tee -a /etc/hosts
192.168.100.11 ceph1
192.168.100.12 ceph2
192.168.100.13 ceph3
EOF
In the SSH session connected to ceph1, confirm that the other nodes resolve and respond:
getent hosts ceph2 ceph3
ping -c 2 ceph2
ping -c 2 ceph3
Install and confirm the Ceph prerequisites
You need the following prerequisites for cephadm:
- Python 3
- systemd
- A container runtime
- Time synchronization
- LVM2
Run the following commands on all three VMs:
sudo apt update
sudo apt install -y chrony lvm2 podman openssh-server curl
sudo systemctl enable --now chrony ssh
Confirm the remaining services and tools:
python3 --version
podman --version
systemctl is-active chrony
command -v lvm
The output is similar to:
Python 3.14.4
podman version 5.7.0
active
/usr/sbin/lvm
Check time synchronization on each VM:
chronyc tracking
Wait for a valid reference source and Leap status: Normal.
Validate the data disks
On each node, inspect the candidate disk:
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS /dev/vdb
sudo wipefs --no-act /dev/vdb
The expected output is:
NAME SIZE TYPE FSTYPE MOUNTPOINTS
vdb 10G disk
The disk should have no partitions, file system, or mount point. wipefs --no-act must not report any signatures. Resolve any unexpected output before continuing.
What you’ve accomplished and what’s next
You’ve prepared three networked VMs and confirmed that each VM has an unused data disk.
Next, you’ll bootstrap Ceph on ceph1 and add the first OSD.