derleon
Goto Top

SSD-Cache einrichten auf Ubuntu Server

Moin,


Ich versuche derzeit, auf meinem Mini-Server ein SSD-Cache zu erstellen. Verbaut sind zwei 1TB HDDs sowie zwei 120GB SSDs.
Nun sollen die SSDs als Cache für die HDDs fungieren. Auf den HDDs bzw. dem Raid 1 der HDDs soll Linux installiert sein.
Ich hatte es mit folgender Anleitung probiert (https://www.thomas-krenn.com/de/wiki/LVM_Caching_mit_SSDs_einrichten) leider Erfolglos. Da beim Installieren von Linux auf dem Raid Partitionen erstellt werden und pvcreate dann meckert weil das Gerät Partitioniert ist. Hat eventuell jemand andere Vorschläge wie ich das ganze Realisieren kann? So dass meine HDDs durch die SSDs unterstützt und beschleunigt werden. Wichtig ist auch, das ich das Raid auf den HDDs nur beim Installieren von Linux anlegen kann, also ein Tool wie Bcache fällt da schon mal raus da ein Formatieren natürlich alles löschen würde.

Als System benutze ich ein Ubuntu Server 22.04.1

Content-Key: 3822218117

Url: https://administrator.de/contentid/3822218117

Printed on: April 19, 2024 at 12:04 o'clock

Member: commodity
commodity Sep 02, 2022 at 15:27:36 (UTC)
Goto Top
Hallo Leon,

das sollte ohne Probleme gehen. Kann es sein, dass Du erst das Linux auf einem RAID installierst und versuchst, hinterher ein LV daraus zu machen, das Du cachen kannst?
Das geht wahrscheinlich nicht, siehe evtl. hier.

Wenn Teile Deines Systems gecached werden sollen, musst Du das entsprechende LV schon bei der Installation anlegen. Sinngemäß: /home soll auf eigenes (zu cachendes) LV:
- bei der Partitionierung der Systeminstallation eine eigene /home-Partition vorsehen,
- diese als RAID verknüpfen,
- darauf das LV-home.
- Dieses kannst Du dann nach der (funktionierenden) Anleitung von Thomas Krenn cachen.

Wenn Dein System schon steht und Du noch Plattenplatz hast, kannst Du ja, z.B. mit einem Live-USB, zu cachende Partitionen auch noch nachträglich anlegen, LVs draus machen und dann die Einbindung anpassen.

Bringt einen bemerkenswerten Turbo. face-smile

Viel Erfolg. Viele Grüße, commodity
Member: DerLeon
DerLeon Sep 06, 2022 at 13:08:54 (UTC)
Goto Top
Vielen Dank für deinen Kommentar, jedoch verstehe ich das nicht so ganz.

Ich habe nun bei der Installation auf den HDDs jeweils eine EFI Partition sowie eine Root-Partition erstellt. Die beiden habe ich dann mit dem jeweiligen Partner auf der anderen Festplatte verbunden. Sprich zwei Raids erstellt.
Nun habe ich auf den SSDs jeweils Partitionen erstellt und diese auch per Raid verbunden. Das SSD-Raid habe ich dann in eine LVM-Gruppe gemacht.

So weit korrekt?
Member: commodity
commodity Sep 06, 2022 at 14:48:17 (UTC)
Goto Top
Ein LVM-Cache setzt natürlich voraus, dass ein cachebares LV vorhanden ist. Du kannst nicht nur den SSD-Cache als LV anlegen und damit dann irgendwas cachen. Du brauchst ein LV mit den Daten und ein Cache-LV. In der Anleitung von TK ist das /dev/md/raid-data.
Heißt, dein root-HDD-RAID muss auch in ein LV, wenn es gecached werden soll. Wenn da schon Dein System drauf ist, kannst Du das wohl nicht nachträglich in ein LV konvertieren (siehe Link oben). Du kannst (hättest können) aber bei der Erstellung Deines Systems gleich ein LV für das System anlegen, das kannst Du dann cachen. Das hast Du aber offenbar nicht gemacht.

Wenn du nur Datenpartitionen cachen willst, kannst Du auch jetzt noch entsprechende Partitionen anlegen, diese zum RAID machen, zu einem LV verbinden und mit einem Cache-LV cachen.

Ob es überhaupt sinnvoll ist, sein System auf HDD zu packen und dann zu cachen, kann ich nicht sagen, aber warum eigentlich nicht... Ich habe das bislang nur für Datenpartitionen von Fileservern umgesetzt.

Viele Grüße, commodity
Member: DerLeon
DerLeon Sep 08, 2022 at 11:21:57 (UTC)
Goto Top
Ich habe noch kein Betriebssystem installiert.

Ich habe nun probiert, eben wieder jeweils auf den Festplatten eine 1GB Boot-Partition anzulegen. Dann zwei große Partitionen die zusammen in ein Raid verbunden werden. Dieses Raid Wiederrum kommt dann in eine LVM Gruppe gemeinsam mit dem raid-cache. Dort erstelle ich dann die 3 LVs, einmal eins mit 900GB für Linux dann eins mit 100 für den Cache und eins mit glaube 200MB für das Metazeug. Wenn ich dann aber Ubuntu Server installieren will Crasht der Installer einfach.

Gibts da nirgendwo ne Anleitung für, die einfach alles alles von A bis Z erklärt? Ich glaube ich raffe es einfach nicht.
Member: commodity
commodity Sep 08, 2022 at 16:23:10 (UTC)
Goto Top
Ich weiß nicht, ob es so gut ist, das LV vorab zu erstellen und dann erst das System.
Ich hätte es so gemacht: https://wiki.ubuntuusers.de/Logical_Volume_Manager/Alternate_Installatio ...

Sollte aber gehen.
https://www.debuntu.org/how-to-install-ubuntu-on-lvm-partitions/

Lass doch das Caching erstmal komplett weg. Wenn das System auf einem LV ist, kannst Du das Caching bauen, wenn alles ohne Caching läuft.

Kriegst Du schon hin.

Viele Grüße, commodity
Member: DerLeon
DerLeon Sep 09, 2022 at 07:00:09 (UTC)
Goto Top
Nö, ich Kriegs nicht hin.

Hab mir eben das Ubuntu Server Legacy runtergeladen. Dann im Partitionierungsmenü auf der einen Festplatte eine Boot sowie eine große LVM Partition angelegt. Auf der Zweiten HDD dann nur eine große LVM. Auf den SSDs ebenfalls jeweils eine große LVM. Dann die Volume Group angelegt, und alle vier hinzugefügt. Beim erstellen der Logical Volumes bekomm ich beim einstellen des Speichers direkt nen Fehler das die Partition nicht erstellt werden kann.
Member: commodity
commodity Sep 09, 2022 at 19:52:19 (UTC)
Goto Top
Ich glaube, Du solltest noch etwas Theorie nacharbeiten. Such Dir was aus:

https://www.thomas-krenn.com/de/wiki/LVM_Grundlagen
https://www.thomas-krenn.com/de/wiki/LVM_Grundkonfiguration
https://wiki.archlinux.org/title/LVM_on_software_RAID
https://wiki.ubuntuusers.de/Logical_Volume_Manager/
https://access.redhat.com/documentation/de-de/red_hat_enterprise_linux/6 ...
https://documentation.suse.com/sles/15-SP1/html/SLES-all/cha-lvm.html
Hintergrund auch: https://www.linux-magazin.de/ausgaben/2016/04/flashcache/
Und sehr konkret: https://blog.delouw.ch/2020/01/29/using-lvm-cache-for-storage-tiering/

Es gibt keine LVM-Partition. Eine Partition kann aber als PV in eine VG eingebracht werden. Auf dieser kann dann ein LV erstellt werden. Wenn Du also bei Erstellung der Maschine bereits ein LV (und damit auch eine VG und ein PV) erstellt hast, kannst Du natürlich daraus nicht noch ein LV machen.
Ganz oben wolltest Du doch zudem ein RAID machen. Wo ist das hin?

Hinsichtlich der Anleitung bei TK ist zu beachten, dass es dort nur um das Caching einer Datenpartition bei bereits laufendem System geht. An sich sollte man alles mit dem Installer auch gleich machen können, ich würde aber erstmal das System installieren und dann das Caching. Sinngemäß ist das hier beschrieben - oder hier.

Ich habe es im ersten Post schon beschrieben, hier vielleicht nochmal deutlicher:

1. System mit dem Installer aufsetzen. Wenn RAID 1 gewünscht, dabei auf beiden Platten jeweils gleich große Partitionen anlegen für UEFI-Boot und für das System.
(Grundsätzlich ist es besser, das System ebenfalls noch aufzuteilen, mindestens mit einer weiteren /home-Partition. Je nach Funktion des Rechners können auch weitere Partitionen sinnvoll sein. Wenn Du aber LVM benutzt ist das nicht so wichtig - also zum Lernen erstmal ruhig weglassen). 
a) Manche verknüpfen nun beide Partitionen jeweils als RAID 1, wenn Ausfallsicherheit gewünscht ist. Ich mache das für die UEFI-Partition aber wegen der überzeugenden Darstellung bei Heise nicht, würde also nur die Systempartition zum RAID 1 machen.
b) Das RAID der Systempartition zum PV definieren (pvcreate)
c) Daraus eine VG erstellen (vgcreate)
d) Darauf ein LV für das System anlegen.
e) Das System auf dem LV installieren. = System fertig. All das geschieht im Installer.

2. Dieses LV, das auf der bzw. (bei RAID) den HDDs liegt, kann dann (muss aber nicht) - entsprechend - der bekannten Anleitung bei TK gecached werden. Dazu machst Du aus dem nun laufenden System.
a) ein RAID (falls gewünscht) aus den SSDs
b) aus diesem ein PV
c) fügst dieses der VG hinzu, die Du in 1.c) angelegt hast
d) erstellst darauf ein CacheDataLV und ein CacheMetaDataLV
e) und konvertierst das Ganze in einen Cache-Pool. = Caching läuft, Feierabend!

Viele Grüße, commodity