Proxmox: Ceph-OSD auf Partition oder HW-Raid-Volume (UPDATE f. VE 6)

In unserem kleinen Beitrag Proxmox Ceph-OSD auf Partition oder HW-Raid-Volume hatten wir gezeigt, wie sich unter Proxmox 5 einzelne Partitionen als Ceph-OSDs einrichten lassen. Mittlerweile hat sich die Welt etwas weitergedreht, Proxmox hat sich zur Version 6 weiterentwickelt, aber leider ist es immer noch nicht einfach so möglich, eine partitionierte Disk zu verwenden. Unsere Anleitung benötigt deshalb ein kleines Update.

Zuerst richten Sie wie unter oben erwähntem Beitrag bereits beschrieben mittels z.B. sgdisk eine Ceph-fähige Partition ein.

Der für Ceph-OSDs zuständige Code in Proxmox findet sich mittlerweile an etwas anderer Stelle, nämlich /usr/share/perl5/PVE/API2/Ceph/OSD.pm. Eine Patchdatei mit unseren vorgeschlagenen Modifikationen finden Sie hier. In OSD.pm suchen Sie nach der Zeile

die "unable to get device info for '$d...

diese und das nachfolgende Zeile kommentieren Sie mit "#" aus, damit der Code nicht abbricht, wenn keine Disk gefunden wird, die dem angegebenen Device-Namen entspricht. Ersetzen Sie nun die Zeile

my $devpath = $disklist->{$devname}->{devpath};

mit

my $devpath = "/dev/".$devname;

Als Partitionsname, der für OSD verwendet werden soll, muss also ein Name sein, der in /dev direkt als Gerät zu finden ist. Um eine unschöne Warnung zu vermeiden ersetzen wir ausserdem

my $osd_size = $disklist->{$devname}->{size};

ein paar Zeilen weiter unten mit

my $osd_size = `sfdisk -s $devpath`;
($osd_size *= 1024) if( $osd_size );

so kann pveceph die Grösse der verwendeten Partition erkennen – sofern das Utility sfdisk installiert ist.

Nun kann wie gewohnt mit

pveceph osd create /dev/sda3

(als Beispiel verwenden wir hier die Partition sda3) ein OSD erstellt werden.