Raspberry Pi SSD Trim
Da ich meinen Raspberry Pi mit einer SSD betreibe, möchte ich natürlich auch das die SSD lange lebt. Stichwort Wear Leveling.
Als Adapter hab ich zwei Stück in Verwendung.
- IcyBox (Schwarz)
- idVendor 0x174c ASMedia Technology Inc.
- idProduct 0x5136 ASM1053 SATA 3Gb/s bridge
- bcdDevice 0.01
- iManufacturer 2 ASMedia
- iProduct 3 AS2105
- Renkforce (Weis)
- idVendor 0x174c ASMedia Technology Inc.
- idProduct 0x1153 ASM1153 SATA 3Gb/s bridge
- bcdDevice 0.01
- iManufacturer 2 ASMedia
- iProduct 3 AS2115
Wenn man ohne Einstellungen versucht einen fstrim zu machen.
Wird nur die SD Card in getrimmt. Und da da nur /boot drauf ist, ändert sich da nicht all zufiel und es macht wenig Sinn.
sudo fstrim --fstab --verbose
/boot: 188.1 MiB (197267968 bytes) trimmed on /dev/mmcblk0p6
Beim Rasbian strech ist es
sudo fstrim -a --verbose
Als erstes schauen wir wo der Adapter angesteckt ist.
Ich habe es sowohl an dem USB2 als auch an dem USB3 Port getestet.
Nach den Einstellungen funktioniert TRIM / Discard sowohl an USB2 als auch an USB3.
sudo lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 480M |_ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M |_ Port 4: Dev 3, If 0, Class=Mass Storage, Driver=usb-storage, 480M
Hier sehen wir das der USB Adapter am USB2.0 Port mit nur 480M steckt.
Wenn wir ihn auf den USB3 umstecken dann haben wir den 5000M
Wir benötigen aber die Infos zum Hersteller (idVendor) und Produkt (idProduct)
Dies können wir ganz einfach per lsusb auslesen
IcyBox an USB2.0
sudo lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 003: ID 174c:5136 ASMedia Technology Inc. ASM1053 SATA 3Gb/s bridge Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Hier ist die gewünschte Information
Bus 001 Device 003: ID 174c:5136 ASMedia Technology Inc. ASM1053 SATA 3Gb/s bridge
Wer mehr Details haben will
lsusb -v -s 1:3
Bus 001 Device 003: ID 174c:5136 ASMedia Technology Inc. ASM1053 SATA 3Gb/s bridge Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.10 bDeviceClass 0 bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 idVendor 0x174c ASMedia Technology Inc. idProduct 0x5136 ASM1053 SATA 3Gb/s bridge bcdDevice 0.01 iManufacturer 2 ASMedia iProduct 3 AS2105 iSerial 1 00000000000000000000 bNumConfigurations 1 Configuration Descriptor: . . .
Renkforce am USB3
sudo lsusb
Bus 002 Device 002: ID 174c:1153 ASMedia Technology Inc. ASM1153 SATA 3Gb/s bridge Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Hier ist die gewünschte Information
Bus 002 Device 002: ID 174c:1153 ASMedia Technology Inc. ASM1153 SATA 3Gb/s bridge
Wer mehr Details haben will
sudo lsusb -v -s 2:2
Bus 002 Device 002: ID 174c:1153 ASMedia Technology Inc. ASM1153 SATA 3Gb/s bridge Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 3.00 bDeviceClass 0 bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 9 idVendor 0x174c ASMedia Technology Inc. idProduct 0x1153 ASM1153 SATA 3Gb/s bridge bcdDevice 0.01 iManufacturer 2 ASMedia iProduct 3 AS2115 iSerial 1 00000000000000000000 bNumConfigurations 1 Configuration Descriptor: . . .
Udev rule erstellen
Mit diesen Infos erstellen wir eine Udev Rule.
Und geben da die idVendor und idProduct ein.
sudo nano /etc/udev/rules.d/10-trim_umap.rules
ACTION=="add|change", ATTRS{idVendor}=="174c", ATTRS{idProduct}=="5136", SUBSYSTEM=="scsi_disk", ATTR{provisioning_mode}="unmap"
(kein zeilenumbruch)
Abspeichern und neu starten.
Nach dem Neustart probieren wir den fstrim erneut, und siehe da es geht.
fstrim --fstab --verbose
/mnt/backup: 0 B (0 bytes) trimmed on /dev/vg1/backup /var/lib/influxdb: 0 B (0 bytes) trimmed on /dev/vg1/influxdb /var/log: 4.9 GiB (5190520832 bytes) trimmed on /dev/vg1/varlog /boot: 188.1 MiB (197267968 bytes) trimmed on /dev/mmcblk0p6
Wer das Trim / Discart automatisch haben will der fügt das in die /etc/fstab ein. Bei mir schaut so aus
proc /proc proc defaults 0 0 /dev/mmcblk0p6 /boot vfat defaults,discard 0 2 /dev/vg1/swap none swap sw,discard 0 0 /dev/vg1/root / ext4 defaults,noatime,nodiratime,discard 0 1 /dev/vg1/varlog /var/log ext4 defaults,noatime,nodiratime,discard 0 1 /dev/vg1/influxdb /var/lib/influxdb f2fs defaults,noatime,nodiratime,discard 0 2 /dev/vg1/backup /mnt/backup f2fs defaults,noatime,nodiratime,discard 0 2
bei mir funktioniert es sowohl beim Raspberry Pi 3b+ als auch beim 4er.
Egal ob USB2 oder 3
Was mit aufgefallen ist wenn ich ein neues LV anlege und dann mounte sagt dmesg
[Sun Mar 1 21:41:04 2020] EXT4-fs (dm-4): mounting with "discard" option, but the device does not support discard [Sun Mar 1 21:41:04 2020] EXT4-fs (dm-4): mounted filesystem with ordered data mode. Opts: discard
Aber sobald ich einmal neu gestartet habe kommt der Fehler nicht mehr und das LV wird auch getrimmt
Schreibe einen Kommentar