Files
usb-ssd/docs/usage-guide.md
2025-08-07 19:28:22 +02:00

571 lines
13 KiB
Markdown

# USB-SSD Management System - Nutzungshandbuch
## Übersicht
Dieses Handbuch beschreibt die detaillierte Nutzung aller Funktionen des USB-SSD Management Systems. Es richtet sich an System-Administratoren, DevOps-Engineers und Entwickler in KMU-Umgebungen.
## Grundlegende Konzepte
### Konstanter Mount-Point
Das System verwendet einen konstanten logischen Mount-Point (`/mnt/ssd-storage`), unabhängig von der physischen SSD:
- **Vorteil**: Anwendungen können immer denselben Pfad verwenden
- **Flexibilität**: SSDs können gewechselt werden ohne Anpassung der Konfiguration
- **SMB-Integration**: Freigaben bleiben konstant verfügbar
### UUID-basierte Identifikation
Alle Operationen basieren auf UUID-Identifikation statt Device-Namen:
- **Stabilität**: Unabhängig von USB-Port-Wechseln
- **Sicherheit**: Eindeutige Identifikation verhindert Verwechslungen
- **Logging**: Nachverfolgbare Audit-Trails
## Täglicher Workflow
### 1. SSD anschließen und erkennen
```bash
# USB-C SSD anschließen
# Automatische Erkennung durch udev-rules
# Manuelle Erkennung (falls nötig)
ssd-detect.sh
# Erkannte SSDs anzeigen
ssd-detect.sh --list
# Detaillierte Informationen
ssd-detect.sh --verbose
```
### 2. SSD mounten
```bash
# Automatisches Mounting
ssd-mount-manager.sh mount
# Spezifische SSD mounten
ssd-mount-manager.sh mount --device /dev/sdb1
# Read-Only Mount für Prüfungen
ssd-mount-manager.sh mount --readonly
# Mount-Status prüfen
ssd-mount-manager.sh status
```
### 3. Mit SSD arbeiten
```bash
# Verfügbaren Speicher prüfen
df -h /mnt/ssd-storage
# Dateien kopieren
cp -r /home/user/documents/ /mnt/ssd-storage/backup/
# Berechtigungen prüfen
ls -la /mnt/ssd-storage/
# SMB-Freigabe testen (falls konfiguriert)
smbclient //localhost/ssd-storage -U $USER
```
### 4. SSD sicher entfernen
```bash
# Sichere Entfernung
ssd-safe-eject.sh
# Mit Prozess-Übersicht
ssd-safe-eject.sh --show-processes
# Force-Eject bei hängenden Prozessen
ssd-safe-eject.sh --force
# Status nach Entfernung prüfen
ssd-mount-manager.sh status
```
## Erweiterte Funktionen
### SSD-Erkennung (ssd-detect.sh)
#### Grundlegende Verwendung
```bash
# Alle USB-Storage-Geräte erkennen
ssd-detect.sh
# Nur NTFS-Partitionen
ssd-detect.sh --ntfs-only
# JSON-Output für Automation
ssd-detect.sh --output json
# Kontinuierliche Überwachung
ssd-detect.sh --monitor --interval 5
```
#### Erweiterte Optionen
```bash
# Spezifisches Device prüfen
ssd-detect.sh --device /dev/sdb1
# Hardware-Details anzeigen
ssd-detect.sh --hardware-info
# Performance-Informationen
ssd-detect.sh --performance-info
# Debug-Modus
ssd-detect.sh --debug --verbose
```
#### Output-Beispiele
```bash
# Standard-Output
[INFO] USB-C SSD detected: /dev/sdb1
[INFO] Filesystem: NTFS
[INFO] UUID: 1234-5678-9ABC-DEF0
[INFO] Size: 500GB
[INFO] Label: BACKUP_SSD
[SUCCESS] Device ready for mounting
# JSON-Output
{
"device": "/dev/sdb1",
"filesystem": "ntfs",
"uuid": "1234-5678-9ABC-DEF0",
"size": "500GB",
"label": "BACKUP_SSD",
"status": "ready",
"usb_version": "3.0",
"speed": "5Gbps"
}
```
### Mount-Management (ssd-mount-manager.sh)
#### Mount-Operationen
```bash
# Standard-Mount
ssd-mount-manager.sh mount
# Custom Mount-Point
ssd-mount-manager.sh mount --mountpoint /custom/path
# Spezifische Mount-Optionen
ssd-mount-manager.sh mount --options "uid=1000,gid=1000,umask=022"
# SMB-optimiertes Mounting
ssd-mount-manager.sh mount --smb-ready
```
#### Status und Monitoring
```bash
# Aktueller Status
ssd-mount-manager.sh status
# Detaillierte Informationen
ssd-mount-manager.sh status --detailed
# JSON-Output für Monitoring
ssd-mount-manager.sh status --json
# Performance-Metriken
ssd-mount-manager.sh metrics
```
#### Troubleshooting
```bash
# Mount-Probleme diagnostizieren
ssd-mount-manager.sh diagnose
# Mount-Point bereinigen
ssd-mount-manager.sh cleanup
# Recovery-Modus
ssd-mount-manager.sh recover
# Filesystem-Check vor Mount
ssd-mount-manager.sh mount --fsck
```
### Test-Suite (ssd-test-suite.sh)
#### Grundlegende Tests
```bash
# Alle Tests ausführen
ssd-test-suite.sh all
# Schnelle Tests (nur kritische)
ssd-test-suite.sh --quick
# Spezifischen Test ausführen
ssd-test-suite.sh T01 # Hardware Detection
ssd-test-suite.sh T04 # Read Performance
ssd-test-suite.sh T08 # SMB Readiness
```
#### Test-Kategorien
```bash
# Hardware-Tests
ssd-test-suite.sh --category hardware
# Performance-Tests
ssd-test-suite.sh --category performance
# Integration-Tests
ssd-test-suite.sh --category integration
# Security-Tests
ssd-test-suite.sh --category security
```
#### Benchmark-Modus
```bash
# Performance-Benchmark
ssd-test-suite.sh --benchmark
# Detaillierte Performance-Analyse
ssd-test-suite.sh --benchmark --detailed
# Vergleich mit Baseline
ssd-test-suite.sh --benchmark --compare baseline.json
# Kontinuierliche Performance-Überwachung
ssd-test-suite.sh --benchmark --continuous --interval 3600
```
### Sichere Entfernung (ssd-safe-eject.sh)
#### Standard-Eject
```bash
# Sichere Entfernung
ssd-safe-eject.sh
# Mit Verbose-Output
ssd-safe-eject.sh --verbose
# Dry-Run (Simulation)
ssd-safe-eject.sh --dry-run
```
#### Erweiterte Eject-Optionen
```bash
# Aktive Prozesse anzeigen
ssd-safe-eject.sh --show-processes
# Prozesse automatisch beenden
ssd-safe-eject.sh --kill-processes
# Force-Eject bei Problemen
ssd-safe-eject.sh --force
# Nur Unmount (ohne Hardware-Eject)
ssd-safe-eject.sh --unmount-only
```
#### Timeout-Konfiguration
```bash
# Custom Buffer-Flush Timeout
ssd-safe-eject.sh --timeout 120
# Prozess-Kill Timeout
ssd-safe-eject.sh --process-timeout 30
# Hardware-Eject Timeout
ssd-safe-eject.sh --eject-timeout 10
```
## Use Cases und Workflows
### 1. KMU-Backup-System
```bash
#!/bin/bash
# Tägliches Backup-Script
# SSD mounten
ssd-mount-manager.sh mount || exit 1
# Backup durchführen
rsync -av --delete /important/data/ /mnt/ssd-storage/backup/
# Backup verifizieren
if [ $? -eq 0 ]; then
echo "Backup erfolgreich"
# Optional: Test-Suite ausführen
ssd-test-suite.sh --quick
else
echo "Backup fehlgeschlagen"
exit 1
fi
# SSD sicher entfernen
ssd-safe-eject.sh
```
### 2. Entwicklungsumgebung
```bash
#!/bin/bash
# Projekt-SSD wechseln
# Aktuelle SSD sicher entfernen
ssd-safe-eject.sh
echo "Bitte neue Projekt-SSD anschließen..."
read -p "Drücken Sie Enter wenn bereit..."
# Neue SSD erkennen und mounten
ssd-detect.sh
ssd-mount-manager.sh mount
# Projekt-Verzeichnis wechseln
cd /mnt/ssd-storage/project-alpha/
echo "Entwicklungsumgebung bereit"
```
### 3. Media-Server Erweiterung
```bash
#!/bin/bash
# Neue Media-Library hinzufügen
# SSD mounten
ssd-mount-manager.sh mount --smb-ready
# Qualitätsprüfung
ssd-test-suite.sh all
# Media-Verzeichnis erstellen
mkdir -p /mnt/ssd-storage/media/videos
mkdir -p /mnt/ssd-storage/media/music
# Berechtigungen für Media-Server setzen
chown -R mediaserver:mediaserver /mnt/ssd-storage/media/
chmod -R 755 /mnt/ssd-storage/media/
# SMB-Freigabe neu laden (falls konfiguriert)
sudo systemctl reload smbd
echo "Media-Library bereit"
```
### 4. Sichere Datenübertragung
```bash
#!/bin/bash
# Verschlüsselte Datenübertragung
# SSD read-only mounten für Prüfung
ssd-mount-manager.sh mount --readonly
# Datenintegrität prüfen
ssd-test-suite.sh T02 T06 # Filesystem + File Operations
# Read-Write remount
ssd-mount-manager.sh remount --readwrite
# Verschlüsselte Daten entschlüsseln
gpg --decrypt /mnt/ssd-storage/encrypted.gpg > /tmp/decrypted.txt
# Verarbeitung...
process_data.sh /tmp/decrypted.txt
# Temporäre Dateien sicher löschen
shred -vfz -n 3 /tmp/decrypted.txt
# SSD sicher entfernen
ssd-safe-eject.sh
```
## Konfiguration und Anpassung
### Environment Variables
```bash
# Mount-Konfiguration
export SSD_MOUNT_POINT="/mnt/ssd-storage"
export SSD_MOUNT_OPTIONS="uid=1000,gid=1000,umask=022"
export SSD_MOUNT_TIMEOUT=30
# Logging-Konfiguration
export SSD_LOG_LEVEL=INFO
export SSD_LOG_FILE="/var/log/ssd-management.log"
export SSD_USE_SYSLOG=true
# Test-Konfiguration
export SSD_TEST_TIMEOUT=300
export SSD_TEST_SIZE=100
export SSD_BENCHMARK_MODE=false
# Eject-Konfiguration
export SSD_EJECT_TIMEOUT=60
export SSD_PROCESS_TIMEOUT=10
export SSD_HARDWARE_EJECT=true
```
### Konfigurationsdatei
```bash
# /etc/ssd-management/config.conf
[mount]
default_mount_point = /mnt/ssd-storage
ntfs_options = uid=1000,gid=1000,umask=022,windows_names
auto_mount = true
smb_ready = true
[logging]
log_level = INFO
log_file = /var/log/ssd-management.log
use_syslog = true
rotate_logs = true
[testing]
quick_tests = T01,T02,T03,T08
performance_threshold_read = 50MB/s
performance_threshold_write = 30MB/s
benchmark_enabled = false
[security]
require_sudo = true
audit_logging = true
process_detection = true
buffer_monitoring = true
```
## Monitoring und Logging
### Log-Analyse
```bash
# Aktuelle Logs anzeigen
tail -f /var/log/ssd-management.log
# Fehler-Logs filtern
grep ERROR /var/log/ssd-management.log
# Performance-Logs analysieren
grep PERFORMANCE /var/log/ssd-management.log | tail -20
# Audit-Trail anzeigen
grep AUDIT /var/log/ssd-management.log
```
### Systemd-Journal
```bash
# Service-Logs anzeigen
journalctl -u ssd-detection.service -f
# Fehler-Logs der letzten Stunde
journalctl -u ssd-automount.service --since "1 hour ago" -p err
# Boot-Logs für SSD-Services
journalctl -b -u ssd-detection.service
```
### Performance-Monitoring
```bash
# Aktuelle Performance-Metriken
ssd-mount-manager.sh metrics
# Performance-Trend (letzte 24h)
ssd-test-suite.sh --benchmark --trend --hours 24
# Prometheus-Metriken exportieren
ssd-test-suite.sh --prometheus-metrics > /var/lib/prometheus/ssd-metrics.prom
```
## Troubleshooting
### Häufige Probleme und Lösungen
#### Problem: SSD wird nicht erkannt
```bash
# Diagnose
lsusb # USB-Geräte auflisten
lsblk # Block-Geräte anzeigen
dmesg | tail -20 # Kernel-Messages prüfen
# Lösungsansätze
sudo udevadm trigger # Udev-Events neu auslösen
sudo modprobe ntfs # NTFS-Modul laden
ssd-detect.sh --debug # Debug-Modus
```
#### Problem: Mount schlägt fehl
```bash
# Diagnose
ssd-mount-manager.sh diagnose
sudo fsck.ntfs /dev/sdb1 # Filesystem prüfen
mount | grep ssd-storage # Aktuelle Mounts prüfen
# Lösungsansätze
ssd-mount-manager.sh cleanup # Mount-Point bereinigen
ssd-mount-manager.sh recover # Recovery-Modus
sudo umount -f /mnt/ssd-storage # Force-Unmount
```
#### Problem: Eject hängt
```bash
# Diagnose
ssd-safe-eject.sh --show-processes # Blockierende Prozesse
lsof /mnt/ssd-storage # Offene Dateien
fuser -v /mnt/ssd-storage # Prozess-Details
# Lösungsansätze
ssd-safe-eject.sh --kill-processes # Prozesse beenden
ssd-safe-eject.sh --force # Force-Eject
sudo fuser -km /mnt/ssd-storage # Alle Prozesse killen
```
### Debug-Modi
```bash
# Alle Scripts mit Debug-Output
export SSD_DEBUG=true
export SSD_VERBOSE=true
# Trace-Modus für Scripts
bash -x ssd-detect.sh
# Systemd-Service Debug
sudo systemctl edit ssd-detection.service
# [Service]
# Environment=SSD_DEBUG=true
```
## Best Practices
### Produktionsumgebung
1. **Regelmäßige Tests**: Tägliche Quick-Tests, wöchentliche Full-Tests
2. **Monitoring**: Performance-Metriken überwachen, Alerts konfigurieren
3. **Backup**: Konfiguration und Logs regelmäßig sichern
4. **Updates**: System und Scripts aktuell halten
5. **Dokumentation**: Änderungen und Konfigurationen dokumentieren
### Sicherheit
1. **Berechtigungen**: Minimale Berechtigungen verwenden
2. **Audit-Logs**: Alle Operationen protokollieren
3. **Verschlüsselung**: Sensible Daten verschlüsselt übertragen
4. **Access-Control**: Zugriff auf autorisierte Benutzer beschränken
5. **Regular-Scans**: Regelmäßige Security-Tests durchführen
### Performance
1. **USB 3.0+**: Moderne USB-Standards verwenden
2. **SSD-Qualität**: Hochwertige SSDs für kritische Anwendungen
3. **Mount-Optionen**: Performance-optimierte NTFS-Optionen
4. **Caching**: Angemessene Cache-Konfiguration
5. **Monitoring**: Performance-Degradation frühzeitig erkennen
---
**💡 Tipp**: Nutzen Sie die `--help` Option bei allen Scripts für detaillierte Informationen zu verfügbaren Parametern und Optionen.
## Anhang
### Script-Referenz
- `ssd-detect.sh` - Hardware-Erkennung und Device-Identifikation
- `ssd-mount-manager.sh` - Mount-Lifecycle Management
- `ssd-test-suite.sh` - Qualitätssicherung und Performance-Tests
- `ssd-safe-eject.sh` - Sichere Hardware-Entfernung
### Wichtige Pfade
- `/mnt/ssd-storage/` - Standard Mount-Point
- `/etc/ssd-management/` - Konfigurationsdateien
- `/var/log/ssd-*.log` - Log-Dateien
- `/usr/local/bin/ssd-*` - Installierte Scripts
### Support-Ressourcen
- [Installation Guide](installation-guide.md) - Detaillierte Installation
- [Troubleshooting](troubleshooting.md) - Problemlösungen
- [API Reference](api-reference.md) - Script-Parameter Referenz