cs:navody:object_storage:cesnet_rbd:start

Připojení a konfigurace Ceph RBD pomocí Linux klienta

Ceph RBD (RADOS Block Device) poskytuje uživatelům síťové blokové zařízení, které se v systému, kde je připojeno, tváří jako lokální disk. Blokové zařízení je plně pod správou uživatele, který si zde může vytvořit file-systém a používat ho dle svých potřeb.

Výhody RBD

  • možnost zvětšení obrazu blokového zařízení
  • import/export obrazu blokového zařízení
  • stripping a replikace napříč clusterem
  • možnost vytváření read-only snapshotů; obnovení snapshotů
  • možnost připojení pomocí Linux nebo QEMU KVM klienta

Příprava pro připojení RBD

Pro připojení RBD je doporučené, abyste na vašem systému měli novější verzi jádra. V nižších verzích jádra jsou zastaralé příslušné moduly pro připojení RBD a nejsou podporovány všechny rozšířující funkce. Vývojáři doporučují dokonce verzi jádra alespoň 5.0 a vyšší. Nicméně například i novejší verze CentOS 7 backportovali plno funkcionalit do jejich standardního jádra, takže by aktualizovaný CentOS 7 měl dostačovat.
Pro správnou funkčnost je vysoce žádoucí používat stejnou verzi Ceph nástrojů, jako je aktuální verze provozovaná na našich clusterech, aktuálně se jedná o verzi 14 s krycím názvem Nautilus. Níže tedy provedeme nastavení příslušných repozitářů.

Následující návod se vztahuje k distribuci CENTOS/RHEL. Návod pro UBUNTU/DEBIAN naleznete na konci této sekce.

Nejdříve nainstalujeme release.asc klíč pro Ceph repozitáře.

sudo rpm --import 'https://download.ceph.com/keys/release.asc'

V adresáři /etc/yum.repos.d/ vytvoříme textový soubor ceph.repo a do něho vyplníme záznam pro Ceph nástroje.

Některé balíčky z Ceph repozitáře vyžadují pro správnou funkčnost rovněž knihovny třetích stran, proto ještě přidáme repozitář EPEL.

CentOS 7

sudo yum install -y epel-release

CentOS 8

sudo dnf install -y epel-release

RedHat 7

sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

Nakonec si nainstalujeme základní nástroje pro Ceph, které rovněž obsahují podporu RBD.

sudo yum install ceph-common

Instalace ceph nástrojů v Debian/Ubuntu

Instalace ceph nástrojů v Debian/Ubuntu

Nejdříve je nezbytné přidat příslušné repozítáře do balíčkovače, do /etc/apt/sources.list přidáme následující řádky.

deb https://eu.ceph.com/debian-nautilus/ bionic main
deb http://cz.archive.ubuntu.com/ubuntu/ bionic main  (potreba pro jeden balik potrebny pri instalaci)

Nainstalujeme potřebné balíky z buster repozitáře.

 sudo apt install -t buster x11-common libevent-core-2.1-6 libevent-pthreads-2.1-6 python-scgi

Přidáme Ubuntu PGP klíče.

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E84AC2C0460F3994
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32

Nainstalujeme balíček ceph.

sudo apt install ceph


Konfigurace RBD a jeho namapování

Pro konfiguraci a připojení RBD využijeme údaje, které jste obdrželi od správce systému. Jedná se o následující:

  • název poolu: rbd_vo_poolname
  • název image: vo_name_username
  • keyring: [client.rbd_user] key = key_hash==

V adresáři /etc/ceph/ vytvoříme textový soubor ceph.conf s následujícím obsahem.

V případě jihlavského úložistě s kódovým označením CL1:

[global]
fsid = 19f6785a-70e1-45e8-a23a-5cff0c39aa54
mon initial members = mon001-cl1-aba-jihl1,mon002-cl1-aba-jihl1,mon003-cl1-aba-jihl1
mon host = [v2:78.128.244.33:3300,v1:78.128.244.33:6789],[v2:78.128.244.37:3300,v1:78.128.244.37:6789],[v2:78.128.244.41:3300,v1:78.128.244.41:6789]

V případě plzeňského úložistě s kódovým označením CL2:

[global]
fsid = 3ea58563-c8b9-4e63-84b0-a504a5c71f76
mon_initial_members = mon001-cl2-aba-plz1,mon005-cl2-aba-plz1,mon007-cl2-aba-plz1
mon_host = [v2:78.128.244.65:3300/0,v1:78.128.244.65:6789/0],[v2:78.128.244.69:3300/0,v1:78.128.244.69:6789/0],[v2:78.128.244.71:3300/0,v1:78.128.244.71:6789/0]

Dále v adresáři /etc/ceph/ vytvoříme textový soubor ceph.keyring, do kterého uložíme zaslaný keyring, viz příklad níže.

[client.rbd_user]
	key = sdsaetdfrterp+sfsdM3iKY5teisfsdXoZ5==

Nyní můžeme provést namapování RBD (rbd_user je string pocházející z keyringu, po oříznutí stringu client..

sudo rbd --user rbd_user device map nazev_poolu/nazev_image
Pokud změníte umístění souborů ceph.conf a username.keyring z výchozího adresáře /etc/ceph/, budete muset při mapování zadat příslušné cesty.
sudo rbd -c /home/username/ceph/ceph.conf -k /home/username/ceph/username.keyring --user rbd_user device map nazev_poolu/nazev_image

Následně prověříme připojení ve zprávách od kernelu.

dmesg

Nyní můžeme zkontrolovat stav RBD.

sudo rbd device list | grep "nazev_image"

Šifrování a vytvoření souborového systému

Dalším krokem je zašifrování namapovaného image. Pro šifrování využijeme program cryptsetup-luks

sudo yum install cryptsetup-luks

Následně provedeme zašifrování příslušného zařízení.

sudo cryptsetup -s 512 luksFormat --type luks2 /dev/rbdX

Na konec zkontrolujeme nastavení.

sudo cryptsetup luksDump /dev/rbdX

Abychom mohli provádět s daným zařízením další akce, musíme jej nejdříve dešifrovat.

sudo cryptsetup luksOpen /dev/rbdX luks_rbdX

Nyní na daném zařízení vytvoříme souborový systém, zde příklad xfs.

sudo mkfs.xfs /dev/mapper/luks_rbdX
V případě použití XFS nepoužívejte volbu nobarrier při připojování, mohla by zapříčinit ztrátu dat!

Jakmile máme připravený souborový systém, můžeme zařízení připojit do předem vytvořené složky v /mnt/.

sudo mount /dev/mapper/luks_rbdX /mnt/rbd

Ukončení práce s RBD

Odpojení svazku.

sudo umount /mnt/rbd/

Uzamknutí svazku.

sudo cryptsetup luksClose /dev/mapper/luks_rbdX

Odmapování svazku.

sudo rbd --user rbd_user device unmap /dev/rbdX/
Pro zajištění většího výkonu je vhodné zvětšit read_ahead cache. Zde záleží na možnostech vašeho stroje resp. velikosti paměti. Ideální je alespoň 8GB. Pokud máte nedostatek paměti zvažte alespoň třeba hodnotu 512MB. Vámi zvolenou hodnotu je nutno přepočítat na kB a vložit do souboru /sys/block/rbd0/queue/read_ahead_kb.

Pro 8GB:
echo 8388608 > /sys/block/rbd0/queue/read_ahead_kb

Pro 512MB:
echo 524288 > /sys/block/rbd0/queue/read_ahead_kb

Pro aplikaci je nutné image odpojit a znovu připojit.

Poslední úprava: 19.03.2021 15:14