https://bryanapperson.com/blog/mounting-rbd-at-boot-under-centos-7/
Mounting RBD at Boot Under CentOS 7
2 minute read Modified: 18 Feb, 2020 A quick and dirty guide on how to mount a ceph RBD at boot under CentOS 7 This tutorial covers mounting an RBD image at boot under CentOS 7. Make sure to unmount the RBD you want to have mount at boot before following this tutorial. This tutorial requires a CentOS 7 client with a client or admin keyring from Ceph, and a working Ceph cluster. This tutorial also assumes you have already created the RBD image you want to be mounted at boot. Let’s begin!
Assumptions
This tutorial assumes the node you are implementing this on has connectivity to a working ceph cluster and also assumes that kernel module RBD is enabled. For the purposes of this tutorial I will place variables, the values specified here:
export poolname = your_pools_name
export rbdimage = the_name_of_your_rbd_image
export mountpoint = place_to_mount_the rbd
Create A systemd service to map and mount automatically on boot / demand
You will want to automatically load the kernel module, map the appropriate rbd storage to a local device and mount the ceph image. Here is a simple script for mounting and un-mounting RBD images create one at /usr/bin/mount-rbd-$poolname-$rbdimage for each of your RBD images:
#!/bin/bash
# Image mount/unmount and pool are passed from the systems service as arguments
# Determine if we are mounting or unmounting
if [ "$1" == "m" ]; then
modprobe rbd
rbd map --pool $poolname $rbdimage --id admin --keyring /etc/ceph/ceph.client.admin.keyring
mkdir -p $mountpoint
mount /dev/rbd/$poolname/$rbdimage $mountpoint
fi
if [ "$1" == "u" ]; then
umount $mountpoint
rbd unmap /dev/rbd/$poolname/$rbdimage
fi
Create a new systemd service unit (/etc/systemd/system/mount-rbd-$poolname-$rbdimage.service) for each of your remote rbd images:
[Unit]
Description=RADOS block device mapping for $rbdimage in pool $poolname"
Conflicts=shutdown.target
Wants=network-online.target
After=NetworkManager-wait-online.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/mount-rbd-$poolname-$rbdimage m
ExecStop=/usr/bin/mount-rbd-$poolname-$rbdimage u
[Install]
WantedBy=multi-user.target
Make sure your target RBD is unmounted. Start the service and check whether /dev/rbd0 is created or not:systemctl start mount-rbd-$poolname-$rbdimage
Mounting an RBD at Boot Under CentOS 7 is Easy!
If everything seems to be fine, enable the service to start on boot:systemctl enable mount-rbd-$poolname-$rbdimage
You now have a working RBD mount at boot time! I wil be following this up with a complete tutorial on the entire process of creating an RBD at some point in the future. Leave your thoughts in the comments below.
Published by Bryan Apperson 8 Apr, 2015 and tagged centos, ceph, rbd, rhel and systemd using 364 words.