CEPHs Rohraumnutzung

8

Ich kann die Verwendung von Ceph Raw Space nicht verstehen.

Ich habe 14 Festplatten (14 OSDs) auf 7 Servern, 3 TB pro Festplatte ~ 42 TB Rohspeicher insgesamt.

ceph -s 
     osdmap e4055: 14 osds: 14 up, 14 in
      pgmap v8073416: 1920 pgs, 6 pools, 16777 GB data, 4196 kobjects
            33702 GB used, 5371 GB / 39074 GB avail

Ich habe 4 Blockgeräte mit jeweils 5 TB erstellt:

df -h
 /dev/rbd1       5.0T  2.7T  2.4T  54% /mnt/part1
/dev/rbd2       5.0T  2.7T  2.4T  53% /mnt/part2
/dev/rbd3       5.0T  2.6T  2.5T  52% /mnt/part3
/dev/rbd4       5.0T  2.9T  2.2T  57% /mnt/part4

df zeigt, dass insgesamt 10,9 TB verwendet werden, ceph zeigt, dass 33702 GB verwendet werden. Wenn ich 2 Kopien habe, muss es ~ 22 TB sein, aber jetzt habe ich 33,7 TB verwendet - 11 TB fehlen.

ceph osd pool get archyvas size
size: 2


ceph df
GLOBAL:
    SIZE       AVAIL     RAW USED     %RAW USED
    39074G     5326G       33747G         86.37
POOLS:
    NAME          ID     USED      %USED     MAX AVAIL     OBJECTS
    data          0          0         0         1840G           0
    metadata      1          0         0         1840G           0
    archyvas      3      4158G     10.64         1840G     1065104
    archyvas2     4      4205G     10.76         1840G     1077119
    archyvas3     5      3931G     10.06         1840G     1006920
    archyvas4     6      4483G     11.47         1840G     1148291

Blockieren Sie Geräte und OSD FS - XFS

Virgismus
quelle

Antworten:

6

Eine mögliche Quelle der Verwirrung ist GB gegen GiB / TB gegen TiB (Basis 10 / Basis 2), aber das kann hier nicht den ganzen Unterschied erklären.

Ceph / RBD wird versuchen, "träge" Speicherplatz für Ihre Volumes zuzuweisen. Aus diesem Grund werden, obwohl Sie vier 5-TB-Volumes erstellt haben, 16 TB und nicht 20 verwendet. 16 TB sind jedoch mehr als die Summe der "aktiven" Inhalte Ihrer RBD-gestützten Dateisysteme, die, wie Sie sagen, nur etwa 11 TB betragen. Einige Dinge zu beachten:

Wenn Sie Dateien in Ihren RBD-gestützten Dateisystemen löschen, markieren die Dateisysteme die Blöcke intern als frei, versuchen jedoch normalerweise nicht, sie an das zugrunde liegende Blockgerät (RBD) zurückzugeben. Wenn Ihre Kernel-RBD-Version aktuell genug ist (3.18 oder neuer), sollten Sie in der Lage sein, fstrimfreigegebene Blöcke an RBD zurückzugeben. Ich vermute, dass Sie andere Dateien auf diesen Dateisystemen erstellt und gelöscht haben, oder?

Es gibt auch einen gewissen Aufwand für das Dateisystem, der über die von gezeigte Nettodatennutzung hinausgeht df. Neben "Superblocks" und anderen dateisysteminternen Datenstrukturen ist aufgrund der Granularität, mit der RBD Daten zuweist, ein gewisser Overhead zu erwarten. Ich denke, RBD wird immer 4 MB Chunks zuweisen, auch wenn nur ein Teil davon verwendet wird.

Sleinen
quelle
Und ich stimme Simon zu. Ratet mal, unsere beiden Antworten zusammen ergeben eine vollständige. Übrigens. verdammt nochmal. 20 Stunden alte Frage und du hast mich geschlagen, um 35 Sekunden zu antworten? : D
Fox
Vielen Dank für die Antworten. Jetzt verstehe ich, wo mein Problem liegt und wie ich es lösen kann.
Virgismus
Mögliche Optionen: 1. Upgrade auf Linux-Kernel> 3.18 und Mount mit Discard-Option; (Ich habe mit Kernel 3.19.0-1.el6.elrepo.x86_64 getestet, hatte aber jeden Tag Deadlocks); 2. Erstellen Sie Blockgeräte mit einer Größe <5 TB neu (XFS kann nicht verkleinert werden). 3. Fügen Sie eine Festplatte hinzu und erstellen Sie zusätzliche OSDs.
Virgismus
1
Kann bestätigen, dass dies gut funktioniert. Der Kernel meines Ceph-Client-Computers wurde am vergangenen Wochenende in Ubuntu LTS 14.04.3 ( sudo apt-get install --install-recommends linux-generic-lts-vivid) auf 3.19 aktualisiert , neu gestartet, meine rbd-Volumes neu zugeordnet und gemountet, fstrimauf jedem von ihnen ausgeführt und insgesamt 450 GB in einem kleinen 25-TB-Cluster wiederhergestellt. Stellen Sie nach dem Upgrade sicher, dass Sie mit der discardOption beginnen, Ihre rbd-Volumes bereitzustellen .
Brian Cline
5

Ich bin kein Ceph-Experte, aber lassen Sie mich ein wenig raten.

Die Blockgeräte werden nicht ohne discardOption montiert . Daten, die Sie schreiben und löschen, werden also nicht im Dateisystem ( /mnt/part1) angezeigt , aber da sie einmal geschrieben und nicht gekürzt wurden, bleiben sie im zugrunde liegenden Dateisystem.

Wenn Sie nach USEDIhren Pools suchen und diese addieren, erhalten Sie 16777 GB, was dem entspricht, was angezeigt wird ceph -s. Und wenn Sie das mit zwei (zwei Kopien) multiplizieren, erhalten Sie 33554 GB, was so ziemlich dem verwendeten Speicherplatz entspricht.

Fuchs
quelle
1
Ich stimme der Antwort von Fox zu (die zur gleichen Zeit wie meine unten geschrieben wurde :-). discardund "Trimmen" sind grundsätzlich verschiedene Wörter für denselben Mechanismus, mit denen nicht verwendete Blöcke an eine Blockvorrichtung zurückgegeben werden können. Die Montage mit der discardOption sollte den gewünschten Effekt haben. Einige Benutzer bevorzugen eine regelmäßige Ausführung fstrim, um den Aufwand für fortlaufende Verwerfungen durch das Dateisystem zu vermeiden. Beachten Sie, dass Ihr RBD-Treiber TRIM / Discard unterstützen muss, damit dies funktioniert. Wie gesagt, der RBD- Kerneltreiber tut dies seit Linux 3.18 - siehe tracker.ceph.com/issues/190 .
Sleinen