SSD Trim

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
jcw
Beiträge: 99
Registriert: 10.01.2016 17:11:46

SSD Trim

Beitrag von jcw » 21.12.2021 11:25:49

Hallo! Ich gerade Debian 11 frisch auf einem Laptop mit SSD installiert. Jetzt wollte ich nachfragen, ob es irgendwelche Besonderheiten zwecks Einrichtung der SSD gibt, oder ob das alles schon automatisch (Trim,...) berücksichtigt wird. Ich habe nur die /etc/fstab mit den Optionen noatime und discard ergänzt. Auch habe ich einen Auszug aus der Partitionstabelle angehängt.

Code: Alles auswählen

root@jw06:/home/jw# uname -a       
Linux jw06 5.10.0-9-amd64 #1 SMP Debian 5.10.70-1 (2021-09-30) x86_64 GNU/Linux
root@jw06:/home/jw# cat /etc/fstab 
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# systemd generates mount units based on this file, see systemd.mount(5).
# Please run 'systemctl daemon-reload' after making changes here.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda4 during installation
UUID=3425a150-3fff-44fe-a5c0-d6b6aa0d1ab6 /               ext4    discard,noatime,errors=remount-ro 0       1
# /boot/efi was on /dev/sda2 during installation
UUID=42D8-52A7  /boot/efi       vfat    umask=0077      0       1
# /home was on /dev/sda5 during installation
UUID=d5fdb8a3-b2d8-4b89-af57-1fb9e2075338 /home           ext4    discard,noatime        0       2
# /other was on /dev/sda8 during installation
UUID=6b9db46b-6703-4789-ac2f-4bf0ed15e322 /other          ext4    defaults        0       2
# swap was on /dev/sda7 during installation
UUID=cbbaf63e-32a0-4d83-81a7-a5cdc487a153 none            swap    sw,discard              0       0


jw22:/daten1/data27/data271/data26       /datei/pers                     nfs rsize=8192,wsize=8192,hard,intr 0 0
jw22:/daten1/data27/data271/data25       /datei/pub                      nfs rsize=8192,wsize=8192,hard,intr 0 0
jw22:/daten1/data27/data271/data-div     /datei/div                      nfs rsize=8192,wsize=8192,hard,intr 0 0
jw22:/daten1/data27/data272/nobackup     /datei/nobackup                 nfs rsize=8192,wsize=8192,hard,intr 0 0
jw22:/daten1/data28                      /datei/blank                    nfs rsize=8192,wsize=8192,hard,intr 0 0
jw22:/daten1/austausch01                 /datei/austausch01              nfs rsize=8192,wsize=8192,hard,intr 0 0
jw22:/daten1/austausch02                 /datei/austausch02              nfs rsize=8192,wsize=8192,hard,intr 0 0
jw22:/daten1/backup                      /datei/backup                   nfs rsize=8192,wsize=8192,hard,intr 0 0

root@jw06:/home/jw# systemctl status fstrim
● fstrim.service - Discard unused blocks on filesystems from /etc/fstab
     Loaded: loaded (/lib/systemd/system/fstrim.service; static)
     Active: inactive (dead)
TriggeredBy: ● fstrim.timer
       Docs: man:fstrim(8)
root@jw06:/home/jw# systemctl status fstrim.timer
● fstrim.timer - Discard unused blocks once a week
     Loaded: loaded (/lib/systemd/system/fstrim.timer; enabled; vendor preset: enabled)
     Active: active (waiting) since Tue 2021-12-21 11:12:00 CET; 2min 48s ago
    Trigger: Mon 2021-12-27 01:34:49 CET; 5 days left
   Triggers: ● fstrim.service
       Docs: man:fstrim

Dez 21 11:12:00 jw06 systemd[1]: Started Discard unused blocks once a week.
root@jw06:/home/jw#  
Hier die Partitionstabelle. Über ein Live-System ermittelt.

Code: Alles auswählen

user@debian:~$ /usr/sbin/fdisk /dev/sda

Welcome to fdisk (util-linux 2.36.1).                                       
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

fdisk: cannot open /dev/sda: Permission denied
user@debian:~$ sudo /usr/sbin/fdisk /dev/sda    

Welcome to fdisk (util-linux 2.36.1).                                       
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): m

Help:

  GPT
   M   enter protective/hybrid MBR

  Generic
   d   delete a partition
   F   list free unpartitioned space
   l   list known partition types
   n   add a new partition
   p   print the partition table
   t   change a partition type
   v   verify the partition table
   i   print information about a partition

  Misc
   m   print this menu
   x   extra functionality (experts only)

  Script
   I   load disk layout from sfdisk script file
   O   dump disk layout to sfdisk script file

  Save & Exit
   w   write table to disk and exit
   q   quit without saving changes

  Create a new label
   g   create a new empty GPT partition table
   G   create a new empty SGI (IRIX) partition table
   o   create a new empty DOS partition table
   s   create a new empty Sun partition table


Command (m for help): p
Disk /dev/sda: 476.94 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: SSD0512S00      
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 9C24B932-4BD0-4309-ACAB-AE307239C89B

Device         Start        End   Sectors   Size Type
/dev/sda1         34     262177    262144   128M Microsoft reserved
/dev/sda2     264192     468991    204800   100M EFI System
/dev/sda3     468992  127778815 127309824  60.7G Microsoft basic data
/dev/sda4  127778816  244965375 117186560  55.9G Linux filesystem
/dev/sda5  244965376  480706559 235741184 112.4G Linux filesystem
/dev/sda6  480706560  871331839 390625280 186.3G Linux filesystem
/dev/sda7  871331840  910393343  39061504  18.6G Linux swap
/dev/sda8  910393344 1000214527  89821184  42.8G Linux filesystem

Command (m for help): 
root@jw06:/home/jw# 
Wenn ich schon mal dabei bin: In der fstab sieht man, dass ich einige Verzeichnisse mit nfs gemounted habe auf einen anderen Rechner. Sind die Optionen für den nfs-mount noch aktuell oder sollten die geändert werden. Ich habe diese Optionen vor 10Jahren mal irgendwo gefunden, dass diese gut geeignet sind. Ich habe die Optionen über die Jahre immer einfach nur übernommen, ohne nachzuprüfen, ob das noch Stand-der-Dinge ist.

Vielen Dank und Gruß.

Benutzeravatar
hikaru
Moderator
Beiträge: 13585
Registriert: 09.04.2008 12:48:59

Re: SSD Trim

Beitrag von hikaru » 21.12.2021 13:59:33

Die TRIM-Geschichten sehen eigentlich gut aus.
Mir fällt allerings auf, dass /other ohne "discard" und "noatime" gemountet ist. Ich vermute, das Dateisystem liegt ebenfalls auf der SSD. Falls ja, warum ist das als "defaults" gemountet?

Von NFS habe ich keine Ahnung, aber nach einem Blick in die Manpage würde ich sagen, die gesetzten Mountoptionen sind weder nützlich noch schädlich.
"rsize" und "wsize" haben sinnvolle Werte, sollten aber überflüssig sein, da das (vermutlich sinnvoll) von Server und Client ausgehandelt würde.
"hard" ist Standard, würde also auch ohne Angabe liegen.
"intr" ist veraltet und wird ignoriert.

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: SSD Trim

Beitrag von JTH » 21.12.2021 15:12:44

Die Mountoption discard ist meines Wissens aus gewissen Performance- und vereinzelten Sicherheitsgründen eher nicht empfohlen, siehe z.B. SSDOptimization und Solid state drive: Continuous TRIM. Stattdessen wird eher ein periodisches Trimmen empfohlen, das macht der fstrim.service + fstrim.timer aus Debianutil-linux. Der Timer ist bei Installation direkt aktiv, für periodisches Trimmen muss also neuerdings (seit Bullseye) gar nix mehr konfiguriert werden, die Mountoption sollte man dann weglassen.
Manchmal bekannt als Just (another) Terminal Hacker.

dasebastian
Beiträge: 1873
Registriert: 12.07.2020 11:21:17
Lizenz eigener Beiträge: MIT Lizenz

Re: SSD Trim

Beitrag von dasebastian » 21.12.2021 16:26:30

JTH hat geschrieben: ↑ zum Beitrag ↑
21.12.2021 15:12:44
Der Timer ist bei Installation direkt aktiv, für periodisches Trimmen muss also neuerdings (seit Bullseye) gar nix mehr konfiguriert werden,
Ähm, das sah bei mir heute anders aus.

Habe aufgrund dieses Fadens heute einfach mal nachgeschaut und nach Absetzen

Code: Alles auswählen

systemctl status fstrim
kam etwas von einer fehlenden Unit (ich glaube mich zu erinnern fstrim.service ???). Ich habe die Ausgaben leider nicht kopiert. :facepalm: :facepalm:
Habe dann

Code: Alles auswählen

systemctl disable fstrim.timer
systemctl enable fstrim.service
ausgeführt, neu gestartet und jetzt sieht's hier wie bei @jcw aus:

Code: Alles auswählen

root@t420:~# systemctl status fstrim
● fstrim.service - Discard unused blocks on filesystems from /etc/fstab
     Loaded: loaded (/lib/systemd/system/fstrim.service; static)
     Active: inactive (dead)
       Docs: man:fstrim(8)
root@t420:~# systemctl status fstrim.timer
● fstrim.timer - Discard unused blocks once a week
     Loaded: loaded (/lib/systemd/system/fstrim.timer; disabled; vendor preset: enabled)
     Active: inactive (dead)
    Trigger: n/a
   Triggers: ● fstrim.service
       Docs: man:fstrim
root@t420:~# 
Allerdings fehlt JETZT das TriggeredBy fstrim.timer beim Service... da ist was quergelaufen bei mir.

Will diesen Faden aber nicht hijacken, wollte ich nur mitteilen.

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: SSD Trim

Beitrag von JTH » 21.12.2021 16:47:05

dasebastian hat geschrieben: ↑ zum Beitrag ↑
21.12.2021 16:26:30
Ähm, das sah bei mir heute anders aus.
Das kommt davon, wenn man das Setup mit den von dir erwähnten beiden systemctl enable + disable kaputtmacht ;)

dasebastian hat geschrieben: ↑ zum Beitrag ↑
21.12.2021 16:26:30
Habe aufgrund dieses Fadens heute einfach mal nachgeschaut und nach Absetzen

Code: Alles auswählen

systemctl status fstrim
Wenn du die Endung am Ende weglässt, siehst du immer den Status eines gleichnamigen Services. Eigentlich interessant ist aber der Status des fstrim.timer, der nämlich den fstrim.service periodisch (wöchentlich) startet:

Code: Alles auswählen

systemctl status fstrim.timer fstrim.service
oder auch

Code: Alles auswählen

systemctl list-timers fstrim.timer
Der fstrim.service selbst kann gar nicht enabled werden (mangels [Install]-Abschnitt in der Unitdatei), so ist das ganze nicht gedacht.


Bei dir ist das periodische Trimmer jetzt allerdings durch das disable + enable abgeschaltet. Zum Reparieren:

Code: Alles auswählen

systemctl preset fstrim.timer fstrim.service

dasebastian hat geschrieben: ↑ zum Beitrag ↑
21.12.2021 16:26:30
Allerdings fehlt JETZT das TriggeredBy fstrim.timer beim Service... da ist was quergelaufen bei mir.
Ja, du hast den Timer disabled. Damit wird der Service von niemandem mehr getriggert ;)

Wie gesagt, seit Bullseye ist kein manuelles enable o.ä. mehr nötig, um ein periodsches Trim auf den eingebundenen SSDs zu bekommen.

dasebastian hat geschrieben: ↑ zum Beitrag ↑
21.12.2021 16:26:30
jetzt sieht's hier wie bei @jcw aus:
Ah ups, den Abschnitt zum fstrim.service/timer hatte ich im Eingangsbeitrag übersehen.
Manchmal bekannt als Just (another) Terminal Hacker.

dasebastian
Beiträge: 1873
Registriert: 12.07.2020 11:21:17
Lizenz eigener Beiträge: MIT Lizenz

Re: SSD Trim

Beitrag von dasebastian » 21.12.2021 17:11:52

JTH hat geschrieben: ↑ zum Beitrag ↑
21.12.2021 16:47:05
Das kommt davon, wenn man das Setup mit den von dir erwähnten beiden systemctl enable + disable kaputtmacht ;)
Zu dem Zeitpunkt hatt ich doch noch gar nichts gemaaaaaacht, buhää!! :hail:
JTH hat geschrieben: ↑ zum Beitrag ↑
21.12.2021 16:47:05
Der fstrim.service selbst kann gar nicht enabled werden (mangels [Install]-Abschnitt in der Unitdatei), so ist das ganze nicht gedacht.
Gut zu wissen... :oops:
JTH hat geschrieben: ↑ zum Beitrag ↑
21.12.2021 16:47:05
Bei dir ist das periodische Trimmer jetzt allerdings durch das disable + enable abgeschaltet. Zum Reparieren: ...
Danke dafür, habe ich mir in mein Heftl geschrieben, lass es aber noch mal, weil:

Code: Alles auswählen

root@t420:~# systemctl status fstrim.timer
● fstrim.timer - Discard unused blocks once a week
     Loaded: loaded (/lib/systemd/system/fstrim.timer; enabled; vendor preset: enabled)
     Active: active (waiting) since Tue 2021-12-21 16:57:19 CET; 12min ago
    Trigger: Mon 2021-12-27 01:17:30 CET; 5 days left
   Triggers: ● fstrim.service
       Docs: man:fstrim

Dez 21 16:57:19 t420 systemd[1]: Started Discard unused blocks once a week.
root@t420:~# systemctl status fstrim
● fstrim.service - Discard unused blocks on filesystems from /etc/fstab
     Loaded: loaded (/lib/systemd/system/fstrim.service; static)
     Active: inactive (dead)
TriggeredBy: ● fstrim.timer
       Docs: man:fstrim(8)
root@t420:~# 
Wenn ich das richtig sehe, läuft die Sache jetzt, ist auch grün.

Danke! :THX: :THX:
Zuletzt geändert von JTH am 21.12.2021 19:00:01, insgesamt 1-mal geändert.
Grund: Zitate repariert

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: SSD Trim

Beitrag von JTH » 21.12.2021 18:40:22

dasebastian hat geschrieben: ↑ zum Beitrag ↑
21.12.2021 17:11:52
Wenn ich das richtig sehe, läuft die Sache jetzt, ist auch grün.
Grün ist gut, die Ausgabe sieht aus wie sie soll ;)
Manchmal bekannt als Just (another) Terminal Hacker.

dasebastian
Beiträge: 1873
Registriert: 12.07.2020 11:21:17
Lizenz eigener Beiträge: MIT Lizenz

Re: SSD Trim

Beitrag von dasebastian » 21.12.2021 18:57:17

Seah jutt, danke für den Input!

jcw
Beiträge: 99
Registriert: 10.01.2016 17:11:46

Re: SSD Trim

Beitrag von jcw » 22.12.2021 11:59:42

hikaru hat geschrieben: ↑ zum Beitrag ↑
21.12.2021 13:59:33
Die TRIM-Geschichten sehen eigentlich gut aus.
Mir fällt allerings auf, dass /other ohne "discard" und "noatime" gemountet ist. Ich vermute, das Dateisystem liegt ebenfalls auf der SSD. Falls ja, warum ist das als "defaults" gemountet?

Von NFS habe ich keine Ahnung, aber nach einem Blick in die Manpage würde ich sagen, die gesetzten Mountoptionen sind weder nützlich noch schädlich.
"rsize" und "wsize" haben sinnvolle Werte, sollten aber überflüssig sein, da das (vermutlich sinnvoll) von Server und Client ausgehandelt würde.
"hard" ist Standard, würde also auch ohne Angabe liegen.
"intr" ist veraltet und wird ignoriert.
Oh, bei der Partition habe ich die Optionen vergessen einzutragen. Aber wie ich in den Antworten (siehe oben) gelernt habe, muss man gar keine Optionen mehr eintragen, sondern man kann die Werte aus der Installation übernehmen. Debian 11 kümmert sich 'selbst' um alles Nötige. Vielen Dank für die vielen Rückmeldungen.

Antworten