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