ZFS trim mit WD Elements Portabal SMR HDD

SMR Trim warum man es einrichten sollte und was es bei einer HDD mit ZFS bringt.

Bisher habe ich meine ZFS Snapshot Backups per Replication auf einen ZFS Mirror bestehend aus zwei 4 TB 3,5″ WD Green geschoben. †
Dies war auch alles super allerdings verbrauchten die beiden 3,5″ HDDs mehr Strom als 2,5″ HDDs.
†Da auch mein Backup Volumen insgesamt zurückgegangen ist, hab ich mich entschieden mein Backup auf eine Externen WD Elements Portable 2TB zu verlagern.
†Dies lief auch soweit ganz gut bis dann ZFS mal einen Scrub gestartet hat und mir hunderte von checksum Fehler präsentiert hat.
†Also SMART mal mit dem Long test mal drüber laufen, um dann zu sehen mit der Platte ist alles in Ordnung.

Als ich mir dann die Platte genau angeschaut habe ist mir aufgefallen das die HDD das Trim Command hat.

=== START OF INFORMATION SECTION ===
Device Model:     WDC WD20SMZW-59YFCS1
Serial Number:    WD-xXxXxXxXxXx
LU WWN Device Id: 5 0014ee 65e436c70
Firmware Version: 01.01A01
User Capacity:    2.000.365.379.584 bytes [2,00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    5400 rpm
Form Factor:      2.5 inches
TRIM Command:     Available, deterministic   <------ ????
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   ACS-3 T13/2161-D revision 5
SATA Version is:  SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Sun Jun 25 15:13:55 2023 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

Diese HDD ist also eine SMR Disk, und die Empfehlung bei ZFS ist nun mal CMR/PMR.

Nach weiteren Suchen ist mir aufgefallen das alle HDDs im 2,5″ Formart und größer als 1,5TB SMR Disk sind.
Dies ist natürlich doof für mein ZFS Backup.
†Allerdings hat es mir auch keine Ruhe gelassen warum die Disk TRIM hat. Nach einiger suche im Netz bin ich darauf Gestosen wie die beiden Arten von Festplatten Ihre Daten auf die Scheiben Schreiben.
†Und ganz nebenbei ist mir aufgefallen das die WD Elements Geräusche machen auch wenn nicht drauf geschrieben oder gelesen wird. Also was macht die Platte da?
†Sie räumt auf. Der Controller in der Platte lässt so eine Art Defrag über die Platte laufen.

Auszug aus der Western Digital Support Page†

External SSD drives offer TRIM command support. In addition, External HDD drives that have SMR (Shingled Magnetic Recording) also offer TRIM command support. Windows 7 Operating Systems and above are designed to maintain the performance of SSD or HDD at an optimal level over the lifetime of the drive. The TRIM command enables an OS (Operating System) to inform an SSD or HDD which blocks of data are no longer considered to be in use and can be reclaimed internally by the SSD or HDD to ensure that later write operations perform at full speed.

TRIM command support on the USB (SCSI) side is called UNMAP and the controller performs an UNMAP to TRIM translation. It maintains the performance at an optimal level (as fresh out of the box) over its lifetime and reduces the wear and tear of the drive, as it reclaims the occupied garbage space in advanced, avoiding unnecessary read-modify-write operations.

TRIM/UNMAP is supported for external hard drives with SMR (Shingled Magnetic Recording) to improve Write performance over time. One of the shingled write benefits is that all physical sectors are written sequentially in a direction radially and are only rewritten after a wrap-around. Rewriting a previously written LBA (Logical Block Addressing) will cause the previous write to be marked invalid and the LBA will be written to the next sequential physical sector. The TRIM/UNMAP enables the OS to inform the drive which blocks are no longer considered to be in use and can be reclaimed internally by the HDD to ensure that later write operations perform at full speed.

https://support-en.wd.com/app/answers/detailweb/a_id/25185

Und das erklärt uns auch warum die Platte wenn Sie nichts macht, etwas macht.†
†Und auch warum ZFS dann ein Problem hat, wenn da irgendwelche „LBA´s“ verschoben werden.

Zwischenzeitlich hab ich mal die WD Elements an ein USB Ladegerät gesteckt, nur um zu testen ob sie da auch „Arbeitet“. Und was soll ich sagen, ich höre das Sie Arbeitet ganz ohne Computer I/O.††

In einem älteren Artikel hab ich mal beschrieben wie man Externe SSD die per USB Adapter angeschlossen sind. Dazu bewegen kann das TRIM Command an die SSD durch zuleiten.

Neuere USB/Sata Controller verwenden UAS, die älteren Controller den USB-Storage Treiber.

lsusb -tv 

/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/10p, 5000M
    ID 1d6b:0003 Linux Foundation 3.0 root hub
    |__ Port 6: Dev 8, If 0, Class=Mass Storage, Driver=uas, 5000M
        ID 152d:0578 JMicron Technology Corp. / JMicron USA Technology Corp. JMS578 SATA 6Gb/s
    |__ Port 9: Dev 18, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
        ID 1058:25a1 Western Digital Technologies, Inc. Elements / My Passport

Das obere USB Gerät ist ein günstiger Adapter mit einer SSD bestückt und da wir TRIM automatisch gemacht.
†Das untere USB Gerät ist die WD Elements 2TB die zwar TRIM hat, aber TRIM nicht genutzt wird.

Um das TRIM oder UNMAP oder DISCARD anzeigen zu lassen kann man lsblk –discard /dev/DISK verwenden. Finde es nebenbei ganz lustig das für den gleichen Prozess drei Begrifflichkeiten verwendet werden.

lsblk --discard /dev/sdg

NAME   DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
sda           0        0B       0B         0
├─sda1        0        0B       0B         0
└─sda9        0        0B       0B         0

Die sdg Disk hat kein TRIM! Oder doch? SMART und hdparm sagen die HDD hat das Kommando.

†Wenn man jetzt sich eine udev Rule anlegt wie ich es in dem anderen Artikel beschrieben habe. Bekommt man zwar das TRIM aber es funktioniert dennoch nicht.

Also beginnt die Experimentier Phase.

  1. udev Rule anlegen bearbeiten
  2. zpool export testpool
  3. Festplatte ab und anstecken
  4. zpool import testpool
  5. zpool trim testpool
  6. zpool scrub testpool

Hier mal der erste naive Versuch, so wie es bei einer SSD ja auch schon geklapt hat.

sudo nano /etc/udev/rules.d/10-trim_umap.rules

# Western Digital Technologies, Inc. Elements / My Passport
ACTION=="add|change", ATTRS{idVendor}=="1058", ATTRS{idProduct}=="25a1", SUBSYSTEM=="scsi_disk", ATTR{provisioning_mode}="unmap"

Jetzt schaut die ganze sache schon so aus.

lsblk --discard /dev/sdg

NAME   DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
sda           0        0B       4G         0
├─sda1        0        0B       4G         0
└─sda9        0        0B       4G         0

Hey Cool Trim ist da. Ohh nee der Kernel meldet bei jedem Trim versuch das.

sdg1: Error: discard_granularity is 0.

Und die Checksum fehler sind wieder da.

Jetzt aber mit der richtigen udev Rule.

Also weiter probieren. Da der ansatz schon der richtige ist. Es hackt nur noch etwas.

Um den Treiber / Kernel dazu zu überreden doch einen TRIM / Discard zu machen muss man ledeglich die udev rule anders schreiben.

sudo nano /etc/udev/rules.d/10-trim_umap.rules

# Western Digital Technologies, Inc. Elements / My Passport
ACTION=="add|change", ATTRS{idVendor}=="1058", ATTRS{idProduct}=="25a1", SUBSYSTEM=="block", ATTR{../../scsi_disk/*/provisioning_mode}="unmap"

Und ein neuer lsblk präsentiert und das

lsblk --discard /dev/sdg

NAME   DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
sda           0      512B       4G         0
├─sda1        0      512B       4G         0
└─sda9        0      512B       4G         0

Keine Kernel Erros wenn man den zpool trim aufruft.

†

Und was sagt jetzt ZFS dazu.

Da soll nochmal einer sagen das HDDs nicht auf Kurs getrimmt werden können.

Das verhindert zwar nicht das die HDD auch Arbeitet wenn Sie nichts zum arbeiten bekommt. Aber jetzt weiß sie wenigstens was sie zum arbeiten hat.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*