Ceph-Optimierung: Detaillierte Erläuterung der Verwendung von SSD als Cache-Pool-Lösung

Erstellen Sie OSDs

ceph-deploy disk list opennebula11
ceph-deploy disk zap opennebula11 /dev/sdb
ceph-deploy osd create --data /dev/sdb opennebula00

Direkt getrennt /dev/sdm, Partition /dev/sdm1, Format /dev/sdm1 mkfs.xfs-Fehler, /dev/sdm kann nicht geöffnet werden: Gerät oder Ressource ausgelastet Lösung: dmsetup ls, um zu überprüfen, wer belegt, finden Sie ceph- Das
Wort
* * (ceph- ist der Block gerätespezifischer Informationen, die von lsblk angezeigt werden)
Verwenden Sie dmsetup, um das Wort
dmsetup zu löschen. Entfernen Sie ceph-

lsblk, um die Geräteinformationen anzuzeigen. Sie können sehen, dass die Logos wie ceph-** verschwinden
mkfs.xfs -f / dev/sdm erfolgreich bestanden

Entfernen Sie den OSD-Standardklassentyp

ceph osd crush rm-device-class osd.8
for i in 30 31 16 17 9 10 23 24; do ceph osd crush rm-device-class osd.$i;done

Legen Sie den Klassentyp des OSD fest

ceph osd crush set-device-class ssd osd.8
for i in 30 31 16 17 9 10 23 24; do ceph osd crush set-device-class ssd osd.$i;done

Erstellen Sie eine Klassenregel basierend auf SSD

ceph osd crush rule create-replicated ssd_rule default host ssd

Erstellen Sie einen Speicherpool basierend auf ssd_rule-Regeln

ceph osd pool create cache 64 64 ssd_rule

Überprüfen Sie die Cache-Informationen und Sie können sehen, dass die verwendete crush_rule 1 ist, also ssd_rule

ceph osd pool get cache crush_rule

Platzieren Sie den Cache-Pool vor dem Speicherpool

ceph osd tier add one cache

Stellen Sie den Cache-Modus auf „Writeback“ ein

ceph osd tier cache-mode cache writeback

Leiten Sie alle Client-Anfragen vom Speicherpool an den Cache-Pool weiter

ceph osd tier set-overlay one cache

Konfigurieren Sie die Caching-Ebene

Aktivieren Sie die Hit-Set-Verfolgung. Die Produktionsumgebung verwendet normalerweise Bloom-Filter

ceph osd pool set cache hit_set_type bloom

Aktivieren Sie die Anzahl der Treffersätze, dh die Anzahl der Treffersätze, die im Pufferpool gespeichert sind. Je größer die Zahl, desto größer ist der vom OSD belegte Speicher

ceph osd pool set cache hit_set_count 1

Hit-Set-Zeitraum aktivieren, der Gültigkeitszeitraum des Hit-Sets im Cache-Pool, in Sekunden

ceph osd pool set cache hit_set_period 3600   # 1 hour

Legen Sie die maximal zulässige Anzahl von Bytes im Pufferpool fest

ceph osd pool set cache target_max_bytes 1099511627776  # 1 TB

Legen Sie die maximal zulässige Anzahl von Objekten im Pufferpool fest. Die Standardobjektgröße von RBD beträgt 4 MB, und 1 GB enthält 256 4-MB-Objekte

ceph osd pool set cache target_max_objects 256

Legen Sie das Mindestzeitintervall für die Aktualisierung zwischengespeicherter Daten auf der Speicherebene und das Löschen der Daten in der Cache-Ebene fest (in Minuten).

ceph osd pool set cache cache_min_flush_age 60
ceph osd pool set cache cache_min_evict_age 600

Wenn die geänderten Daten im Cache-Pool einen Schwellenwert (Kapazitätsprozentsatz) erreichen, werden die Daten in die Speicherschicht geschrieben

#### 脏对象占比达到40%就将数据刷盘
ceph osd pool set cache cache_target_dirty_ratio 0.4
#### 当脏对象占比达到60%时开始高速刷盘
ceph osd pool set cache cache_target_dirty_high_ratio 0.6

Leeren Sie unveränderte (saubere) Objekte, wenn die Cache-Pool-Nutzung einen bestimmten Prozentsatz ihrer Gesamtnutzung erreicht

ceph osd pool set cache cache_target_full_ratio 0.8

Legen Sie fest, wie viele HitSets bei der Verarbeitung von Lese- und Schreibvorgängen überprüft werden sollen. Die Prüfergebnisse werden verwendet, um zu entscheiden, ob das Objekt asynchron heraufgestuft werden soll (d. h. das Objekt von kalten Daten auf heiße Daten aktualisieren und in den Cache-Pool stellen). Sein Wert sollte zwischen 0 und hit_set_count liegen. Wenn er auf 0 gesetzt ist, werden alle Objekte sofort nach dem Lesen oder Schreiben hochgestuft; wenn er auf 1 gesetzt ist, wird nur das aktuelle HitSet überprüft. Wenn das Objekt in ist, wird es hochgestuft im aktuellen HitSet, andernfalls wird es nicht hochgestuft. Wenn andere Werte festgelegt sind, muss diese Anzahl historischer HitSets einzeln überprüft werden. Wenn dieses Objekt in einem der min_read_recency_for_promote HitSets vorkommt, stufen Sie es hoch

ceph osd pool set cache min_read_recency_for_promote 1
ceph osd pool set cache min_write_recency_for_promote 1

Löschen Sie den Writeback-Cache-Pool

Ändern Sie den Cache-Modus auf Weiterleitung

ceph osd tier cache-mode cache forward --yes-i-really-mean-it

Cache-Pool-Objekte anzeigen

rados -p cache ls 

Wenn Objekte vorhanden sind, aktualisieren Sie die Objekte manuell im Speicherpool

rados -p cache cache-flush-evict-all

Entfernen Sie das Overlay, damit der Client keinen Datenverkehr mehr an den Cache weiterleitet

ceph osd tier remove-overlay one

Entbinden Sie den Speicherpool und den Cache-Pool

ceph osd tier remove one cache

Löschen Sie den schreibgeschützten Cache-Pool

Ändern Sie den Cache-Modus auf „Keine“, um das Caching zu deaktivieren

ceph osd tier cache-mode cache none

lösen

ceph osd tier remove one cache

Objekte im Cache-Pool auflisten

rados -p cache ls

Listen Sie Objekte im Pool auf, die zu libvirt gehören

rbd ls -l -p one --id libvirt

Listen Sie Objekte in einem Pool auf

rbd list -p one

Löschen Sie das entsprechende Objekt

rbd rm -p one one-51-116-0

Konfigurieren Sie die CRUSH-Regel so, dass die Hauptdaten auf das OSD der SSD fallen

Extrahieren Sie die CRUSH-Karte

ceph osd getcrushmap -o crushmap.txt

Dekompilieren Sie die CRUSH-Karte

crushtool -d crushmap.txt -o crushmap-decompile

Bearbeiten Sie die CRUSH-Karte

vi crushmap-decompile
 # rules
 rule replicated_rule {
	id 0
	type replicated
	min_size 1
	max_size 10
	step take default class ssd
	step chooseleaf firstn 1 type host
	step emit

   step take default class hdd
   step chooseleaf firstn -1 type host
   step emit
}

„select“ gibt an, dass das Auswahlergebnis eine Fehlerdomäne ist, „selectleaf“ gibt an, dass der OSD-Knoten unter der Fehlerdomäne ausgewählt ist; „firstn“ wird für den Kopierpool und „indep“ für den EC-Pool verwendet; die folgende Zahl gibt die Anzahl der Wiederholungen an ausgewählt werden, und eine positive Zahl gibt die Anzahl der auszuwählenden Kopien an, 0 zeigt an, dass alle Kopien ausgewählt sind, und eine negative Zahl gibt an, dass die verbleibenden Kopien ausgewählt werden, nachdem die entsprechende Anzahl von Kopien entfernt wurde

Kompilieren Sie die CRUSH-Map neu

crushtool -c crushmap-decompile -o crushmap-compiled

Fügen Sie die neue CRUSH-Map in den Cluster ein

ceph osd setcrushmap -i crushmap-compiled	

おすすめ

転載: blog.csdn.net/jinba225/article/details/115701320