Proxmox/Ceph: Ceph-OSD auf Partition oder HW-Raid-Volume

(ein Update für Proxmox 6 finden Sie hier)

Im Prinzip ist die vorgesehene Einsatzweise von CEPH die, direkt "rohe" Disks als CEPH-OSD einzusetzen. CEPH selber kennt Spiegelung und Redundanz – es ist also beispielsweise unnötig, ein RAID-Volume einzusetzen, wenn CEPH ins Spiel kommt.

Nichtsdestotrotz gibt es durchaus Szenarien, in denen CEPH nur eine Partition einer Disk oder eines RAID-Volumes erhalten kann, z.B.

  • Wenn (z.B. aus Performancegründen) ein grosses RAID-Volume vorgezogen wird, um auf demselben Volume System, CEPH-OSD und eventuell weiteren lokalen Storage-Partitionen vorzuhalten
  • wenn auf einer kleinen Installation System und CEPH-OSD auf derselben Disk Platz finden müssen
  • wenn CEPH auf einer bestehenden Installation eingesetzt wird und keine Disks extra für CEPH freigeschaufelt werden können

Tatsächlich ist eine solche Installation machbar, auch wenn sowohl CEPH als auch Proxmox den einen oder anderen Stein in den Weg legen:

  1. Partition CEPH-OSD-tauglich machen. Beispiel: Freier Platz auf /dev/sda soll für ein CEPH-OSD auf /dev/sda3 verwendet werden:
    PTYPE_UUID=4fbd7e29-9d25-41b8-afd0-062c0ceff05d
    disk=/dev/sda
    part=3
    OSD_UUID=`uuidgen -r`
    sgdisk --largest-new=$part --change-name="${part}:ceph data" \
       --partition-guid=${part}:$OSD_UUID   --typecode=${part}:$PTYPE_UUID \
       -- $disk
    

    wir verwenden sgdisk, um eine Partition /dev/sda3 anzulegen, die den freien Platz auf sda füllt und die richtigen Bezeichnungen erhält, um von CEPH genutzt werden zu können.

  2. Proxmox erlaubt normalerweise nicht die Angabe einer Partitionsnummer für OSD. Damit dies möglich wird, editieren Sie die Datei /usr/share/perl5/PVE/API2/Ceph.pm. Suchen Sie nach der Zeile

    $devname =~ s|/dev/||;

    und kommentieren diese und die folgenden Zeilen bis und mit 

    my $devpath = $diskinfo->{devpath};

    aus. Die letztere ergänzen Sie um

    my $devpath = $devname;
    

    Nun suchen Sie nach der Zeile

    my $cmd = ['ceph-disk', 'prepare', '--zap-disk',

    und entfernen das Argument –zap-disk, so dass die Zeile so aussieht:

    my $cmd = ['ceph-disk', 'prepare', 

    [Diese Anleitung wurde getestet an Proxmox 5.0]

Nach Neustart des pvedaemon können Sie nun mit

pveceph create-osd /dev/sda3
ceph-disk activate /dev/sda3

Die Partition auf die gewohnte Weise als CEPH OSD hinzufügen.