Frage Möglich, SSD TRIM (verwerfen) arbeiten auf ext4 + LVM + Software-RAID in Linux?


Wir verwenden RAID1 + 0 mit md unter Linux (derzeit 2.6.37), um ein MD-Gerät zu erstellen, verwenden dann LVM, um die Datenträgerverwaltung oben auf dem Gerät bereitzustellen, und verwenden dann ext4 als unser Dateisystem für die LVM-Datenträgergruppen.

Mit SSDs als Laufwerke möchten wir, dass sich die TRIM-Befehle durch die Layer (ext4 -> LVM -> md -> SSD) zu den Geräten ausbreiten.

Es sieht so aus, als ob neuere 2.6.3x-Kernel eine Menge neuer SSD-bezogener TRIM-Unterstützung hinzugefügt haben, einschließlich viel mehr Coverage von Device-Mapper-Szenarien, aber wir können immer noch nicht richtig herunterkaskieren.

Ist das schon möglich? Wenn das so ist, wie? Wenn nicht, werden Fortschritte gemacht?


18
2018-01-28 02:20


Ursprung


Siehe aktualisiert serverfault.com/a/229486/67675 :) - poige
und serverfault.com/questions/227918/ ... - poige


Antworten:


Nicht möglich, weil Linux Soft RAID dies (noch?) Nicht unterstützt.

UPD.: Danke an Wodin, dass er mich informiert hat - laut lkml.org/lkml/2012/3/11/261 das funktional ist gewesen hinzugefügtvorgeschlagen vor kurzem. vorgeschlagen ! = akzeptiertobwohl.


7
2018-02-01 05:53



Du kannst diese Antwort immer noch abmildern, aber das würde nicht dazu führen, dass LSR TRIM unterstützt :) - poige
Es tut jetzt. lkml.org/lkml/2012/3/11/261 - Wodin
@Wodin, danke. - poige
@Wodin, ich kann die vorgeschlagenen Änderungen selbst in 3.5 nicht finden. Sie scheinen nicht akzeptiert zu werden. - poige


Ab 2.6.37 sollte es vorhanden sein (Quelle). Der Kernel macht das nicht im Hintergrund, der Blockverwerfungs-Prozess ist derzeit so ausgelegt, dass er bei Bedarf ausgeführt werden kann (Cron-Skript!). Dm-crypt-Unterstützung existiert noch nicht.

Am 13. Januar 2011 a Patch wurde zusammengeführt in dm-raid1.c, das lautet:

dm raid1: support discard

Enable discard support in the DM mirror target.
Also change an existing use of 'bvec' to 'addr' in the union.

Ich bin nicht 100%, aber ich denke, das ist das Merge-Fenster für 2.6.38.

EXT4 hat vor einiger Zeit Unterstützung hinzugefügt, ebenso wie LVM. RAID ist der einzige Schlüssel, der nicht unterstützt wird. Ab dem 13.01.2011 scheint Unterstützung hinzugefügt worden zu sein. Suche es in 2.6.38 oder 2.6.39.


Die Zeit ist vergangen und TRIM Unterstützung ist definitiv im Kernel 3.7 enthalten. Das Commit für RAID10-Lesevorgänge:

Dies macht MD RAID 10 Unterstützung TRIM. Wenn eine Platte die Verwerfung unterstützt und eine andere nicht, oder eine Datei hat die Daten "discard_zero_data" und eine andere nicht, kann es inkonsistente Daten zwischen diesen Datenträgern geben. Aber das ist egal, verworfene Daten sind nutzlos. Dadurch wird jedoch beim erneuten Erstellen zusätzliche Kopie hinzugefügt.


14
2018-01-30 05:23



Sah diesen Thread und die damit verbundenen Commits, aber wie ich in der Frage gesagt habe - bedeutet das, dass es nicht nur LVM (Device Mapper), sondern auch md (Software-RAID) richtig durchlaufen wird? - Don MacAskill
Das hört sich vielversprechend an, aber nach meinem Verständnis wird dmraid hauptsächlich für sogenannte 'fakeRAID' Hardware-RAID-Controller verwendet. Worüber ich spreche, ist ein typisches mdadm RAID-1 (+0) Array mit nur LVM. AFAIK, dieses Setup profitiert nicht von der neu gefundenen Fähigkeit von dmraid, mit Abfällen umzugehen. Recht? - Don MacAskill
@DonMacAskill Die Datei 'raid1.c' hat keine Commits, die auf TRIM, FITRIM oder 'dispose' verweisen. Also, sieht aus wie mdadm - create RAID-Unterstützung ist doch noch nicht da. - sysadmin1138♦
@ sysadmin1138 Ich denke du meinst discard, wie es im Linux-Kernel heißt. Und dieser Patch scheint sich auf das Verwerfen zu beziehen. - Michael Hampton♦


Mdtrim benötigt möglicherweise mehr Arbeit:

Cyberax-mdtrim-0a40e8d# ./mdtrim.py -m /dev/md4 -s /home
Scratch directory is /home, trimmer file size is 0 GB 790 MB
Found slave sdc2 on /dev/sdc with MD offset 0 and partition offset 249856
Creating trimmer file
252,2: device not found in /dev
Traceback (most recent call last):
  File "./mdtrim.py", line 120, in <module>
    if lines[2].find("assuming %d byte sectors" % sector_size) == -1:
IndexError: list index out of range

1
2017-08-30 19:55





Sie können mein MDTRIM-Skript verwenden ( https://github.com/Cyberax/mdtrim/ ) TRIM leeren Raum auf ext4 / 3 Level-1-RAIDs. Wir starten es regelmäßig von Cron und es funktioniert super für uns.

Hinzufügen von Unterstützung für andere RAID-Level ist möglich, aber ich habe keine Zeit (oder Notwendigkeit) dafür.


0
2017-10-21 02:31





Wie vorgeschlagen Hier Sie können verwenden

lsblk -D

um zu überprüfen, ob Ihre Blockdevices die Verwerfungsbefehle durchlaufen.

Beachten Sie auch, dass der Abschnitt Geräte im lvm.conf enthält eine Option issue_discards. Sehen

man 5 lvm.conf

Für mehr Information.


0
2018-04-18 09:49