Chemenu 2.1.0 - deterministischer Wissenskompiler
Chemenu kompiliert Rohnotizen zu einem verlinkten, quellengebundenen Wiki: raw/ -> types/ + tools/ -> kb/ -> reports/. Was mechanisch ist, macht tools/wikitool; was Urteil braucht, macht ein Agent unter Contracts, deren Grenzen in Code durchgesetzt sind statt im Prompt. Dieser Commit ist der Startpunkt der oeffentlichen Historie. Die vorherige Entwicklung fand in einer privaten Instanz statt und ist nicht Teil dieses Repositorys; ihre Erzaehlung steht vollstaendig in CHANGES.md, das mit 44 Eintraegen von 0.1.0 bis 2.1.0 erhalten geblieben ist. Der mitgelieferte Korpus ist ein Testbett und eine Demo: 170 Seiten ueber den Stack selbst - Gates, Lint, Versionierung, Suche, das Wiki-Muster. Er dokumentiert das Werkzeug mit den eigenen Mitteln des Werkzeugs. Lizenz: AGPL-3.0 fuer den Stack (tools/, types/), CC-BY-4.0 fuer die Inhalte. Die Grenze zwischen beiden ist der Dateiplan, den dist export berechnet - siehe NOTICE.
This commit is contained in:
@@ -0,0 +1,190 @@
|
||||
---
|
||||
type: types/concept.md
|
||||
concept_type: protocol
|
||||
tags: [storage, ssd, performance, optimization, linux]
|
||||
created: 2026-07-31
|
||||
modified: 2026-08-29
|
||||
related: [Disk Encryption, LVM, Arch Linux]
|
||||
sources: [Source - Arch Linux Cheat Sheet]
|
||||
confidence: 0.90
|
||||
confidence_base: 0.90
|
||||
provenance: sourced
|
||||
summary: Datenträgerbefehl, mit dem SSDs ungenutzte Blöcke zurückgewinnen - für gleichbleibende Leistung und längere Lebensdauer.
|
||||
---
|
||||
# SSD TRIM
|
||||
|
||||
**Typ:** protocol
|
||||
|
||||
## Definition
|
||||
|
||||
TRIM (oder Discard) ist ein Befehl, der einem Betriebssystem ermöglicht, eine Solid-State Drive (SSD) darüber zu informieren, welche Datenblöcke nicht mehr in Gebrauch sind und intern gelöscht werden können. Dies ist entscheidend für die Erhaltung der SSD-Leistung und Lebensdauer, da es der Garbage Collection der SSD ermöglicht, ungenutzte Blöcke freizugeben.
|
||||
|
||||
## Kernpunkte
|
||||
|
||||
- **Zweck:** Erhaltung der SSD-Leistung und Verlängerung der Lebensdauer
|
||||
- **Mechanismus:** OS benachrichtigt SSD über ungenutzte Blöcke
|
||||
- **Vorteil:** Verhindert Schreibverstärkung und Leistungsabbau
|
||||
- **Protokoll:** Teil des ATA- und SCSI-Befehlssatzes
|
||||
|
||||
## Wie TRIM funktioniert
|
||||
|
||||
### Ohne TRIM
|
||||
1. SSD schreibt Daten in einen Block
|
||||
2. Block wird „belegt"
|
||||
3. Datei wird vom OS gelöscht
|
||||
4. OS markiert Block als „frei", aber SSD weiß das nicht
|
||||
5. Nächster Schreibvorgang erfordert: alte Daten lesen → ändern → löschen → neue Daten schreiben
|
||||
6. Leistung verschlechtert sich im Laufe der Zeit
|
||||
|
||||
### Mit TRIM
|
||||
1. SSD schreibt Daten in einen Block
|
||||
2. Block wird „belegt"
|
||||
3. Datei wird vom OS gelöscht
|
||||
4. **OS sendet TRIM-Befehl:** „Block X wird nicht mehr verwendet"
|
||||
5. SSD markiert Block intern als „veraltet"
|
||||
6. Nächster Schreibvorgang: SSD kann direkt in vorgelöschten Block schreiben
|
||||
7. Leistung bleibt konsistent
|
||||
|
||||
## TRIM unter Linux aktivieren
|
||||
|
||||
### TRIM-Unterstützung überprüfen
|
||||
|
||||
```bash
|
||||
# Check if SSD supports TRIM
|
||||
lsblk -D | grep -i discard
|
||||
|
||||
# Check if filesystem supports TRIM
|
||||
lsblk -f | grep -i discard
|
||||
```
|
||||
|
||||
### Manuelles TRIM
|
||||
|
||||
```bash
|
||||
# Run TRIM manually on a mount point
|
||||
fstrim /mount/point
|
||||
|
||||
# Run TRIM on all mounted filesystems
|
||||
fstrim -a
|
||||
|
||||
# Verbose output
|
||||
fstrim -v /mount/point
|
||||
```
|
||||
|
||||
### Automatisches TRIM
|
||||
|
||||
**systemd-Timer (empfohlen):**
|
||||
```bash
|
||||
# Enable weekly TRIM timer
|
||||
systemctl enable fstrim.timer
|
||||
systemctl start fstrim.timer
|
||||
|
||||
# Check status
|
||||
systemctl status fstrim.timer
|
||||
|
||||
# Manual trigger
|
||||
systemctl start fstrim.service
|
||||
```
|
||||
|
||||
**Cron-Job (Alternative):**
|
||||
```bash
|
||||
# Add to root's crontab
|
||||
0 3 * * 0 fstrim -a
|
||||
```
|
||||
|
||||
## TRIM mit Verschlüsselung
|
||||
|
||||
Beim Einsatz von Laufwerksverschlüsselung (dm-crypt/LUKS) erfordert TRIM-Unterstützung besondere Aufmerksamkeit wegen Sicherheitsauswirkungen.
|
||||
|
||||
### Sicherheitsaspekte
|
||||
|
||||
**Warnung:** Das Zulassen von Discard (TRIM) auf verschlüsselten Geräten kann Informationen offenlegen über:
|
||||
- Welche Blöcke in Gebrauch sind
|
||||
- Dateisystem-Nutzungsmuster
|
||||
- Potenziell vertrauliche Metadaten
|
||||
|
||||
### Optionen für verschlüsselte SSDs
|
||||
|
||||
#### Option 1: Discard auf LUKS-Ebene zulassen
|
||||
```bash
|
||||
# For new encryption
|
||||
cryptsetup luksFormat --allow-discards /dev/sdX
|
||||
|
||||
# For existing encryption (requires reencryption)
|
||||
cryptsetup reencrypt --encrypt --reduce-device-size 16M --allow-discards /dev/sdX
|
||||
```
|
||||
|
||||
#### Option 2: Periodisches fstrim (Empfohlen für Sicherheit)
|
||||
```bash
|
||||
# Disable discard in crypttab
|
||||
# /dev/sdX1 /mnt/crypt ext4 defaults 0 2
|
||||
|
||||
# Manually run fstrim after unlocking
|
||||
fstrim /mnt/crypt
|
||||
|
||||
# Or use systemd timer (runs after boot)
|
||||
systemctl enable fstrim.timer
|
||||
```
|
||||
|
||||
#### Option 3: Hybrid-Ansatz
|
||||
- Discard für unverschlüsselte Metadatenbereiche zulassen
|
||||
- Periodisches fstrim für Datenbereiche verwenden
|
||||
|
||||
**Referenz:** https://wiki.archlinux.org/title/Dm-crypt/Specialties#Discard/TRIM_support_for_solid_state_drives_(SSD)
|
||||
|
||||
## TRIM-Status überprüfen
|
||||
|
||||
```bash
|
||||
# Check if discard is enabled for device
|
||||
lsblk -D /dev/sdX
|
||||
|
||||
# Check mount options
|
||||
mount | grep discard
|
||||
|
||||
# Check filesystem support
|
||||
lsblk -o NAME,FSTYPE,DISC-GRAN,DISC-MAX
|
||||
```
|
||||
|
||||
## Dateisystem-Unterstützung
|
||||
|
||||
| Dateisystem | TRIM-Unterstützung | Hinweise |
|
||||
|------------|---------------|-------|
|
||||
| ext4 | Ja | Standard in modernen Kerneln |
|
||||
| XFS | Ja | Online-Discard unterstützt |
|
||||
| Btrfs | Ja | Subvolume-fähig |
|
||||
| NTFS | Ja | Via ntfs-3g |
|
||||
| FAT32 | Nein | Keine TRIM-Unterstützung |
|
||||
|
||||
## Leistungsauswirkung
|
||||
|
||||
- **Ohne TRIM:** Leistung kann sich nach längerer Verwendung um 30-50 % verschlechtern
|
||||
- **Mit TRIM:** Leistung bleibt nah bei Neu-Niveau
|
||||
- **Overhead:** TRIM-Befehle verursachen minimalen Overhead (~1-2%)
|
||||
|
||||
## Wann zu verwenden
|
||||
|
||||
- **Immer:** Auf SSD-Speichergeräten
|
||||
- **Empfohlen:** Auf NVMe-Laufwerken (TRIM ist noch kritischer)
|
||||
- **Erwägen:** Auf Hybrid-SSHD-Laufwerken
|
||||
- **Nicht nötig:** Auf HDD (rotierenden) Laufwerken
|
||||
|
||||
## Wann NICHT zu verwenden
|
||||
|
||||
- Auf HDD (rotierenden) Laufwerken - kein Nutzen
|
||||
- In hochsicheren Umgebungen, in denen Informationsverlust inakzeptabel ist (Kompromisse erwägen)
|
||||
- Auf Dateisystemen, die TRIM nicht unterstützen
|
||||
|
||||
## Beziehungen
|
||||
|
||||
- **Verwendet mit:** [[Disk Encryption]] (dm-crypt/LUKS)
|
||||
- **Ergänzt:** [[LVM]] (Logical Volume Manager)
|
||||
- **Läuft auf:** [[Arch Linux]] und anderen Distributionen
|
||||
- **Wirkt sich aus auf:** Speicherleistung SSD-gestützter Systeme
|
||||
|
||||
## Siehe auch
|
||||
|
||||
- [[Disk Encryption]]
|
||||
- [[LVM]]
|
||||
- [[Arch Linux]]
|
||||
- [[Source - Arch Linux Cheat Sheet]]
|
||||
- https://wiki.archlinux.org/title/Solid_State_Drives
|
||||
- https://wiki.archlinux.org/title/Dm-crypt/Specialties#Discard/TRIM_support_for_solid_state_drives_(SSD)
|
||||
Reference in New Issue
Block a user