CRUSHMap händisch anpassen

In manchen Situationen ist es notwendig die CRUSH map von Ceph händisch zu bearbeiten. Ein Beispiel kann die Standard-Regel (replicated_rule) sein, die im Nachhinein angepasst werden soll. Beim Anlegen einer Regel können diverse Parameter gesetzt werden, die nach der Erzeugung mittels CLI nicht mehr angepasst werden können. Um Korrekturen vorzunehmen bietet sich der manuelle Weg an. Die Schritte hierbei sind wie folgt:

  1. CRUSH map in Binär-Datei dumpen
  2. Binärdatei dekompilieren (binär zu Text)
  3. Konfigurationen wie gewünscht anpassen
  4. CRUSH map kompilieren (Text zu binär)
  5. einspielen der CRUSH map

Beispiel

# aktuelles Datum in Variable DATE speichern
DATE=$(date +'%Y-%m-%d')

# CRUSH map in Binärdatei speichern
ceph osd getcrushmap -o crushmap_${DATE}.orig.bin

# Binärdatei dekompilieren (Ausgabe in Textdatei)
crushtool -d crushmap_${DATE}.orig.bin -o crushmap_${DATE}.orig.txt

# Kopie für die Bearbeitung anlegen (Original als Backup zum Vergleichen behalten)
cp crushmap_${DATE}.orig.txt crushmap_${DATE}.new.txt

# Bearbeitung der CRUSH map
vim crushmap_${DATE}.new.txt

# Textdatei kompilieren
crushtool -c crushmap_${DATE}.new.txt -o crushmap_${DATE}.new.bin

# CRUSH map einspielen
ceph osd setcrushmap -i crushmap_${DATE}.new.bin