Setup installation

This commit is contained in:
2025-08-07 19:28:22 +02:00
parent e3f6363844
commit 17d74b261d
19 changed files with 6144 additions and 0 deletions

479
docs/api-reference.md Normal file
View File

@@ -0,0 +1,479 @@
# USB-SSD Management System - API Reference
## Übersicht
Diese Referenz dokumentiert alle verfügbaren Scripts, Parameter und Optionen des USB-SSD Management Systems. Alle Scripts unterstützen die `--help` Option für detaillierte Informationen.
## Script-Übersicht
| Script | Zweck | Hauptfunktionen |
|--------|-------|-----------------|
| `ssd-detect.sh` | Hardware-Erkennung | USB-C SSD Identifikation, NTFS-Erkennung |
| `ssd-mount-manager.sh` | Mount-Management | Mounting, Unmounting, Status-Überwachung |
| `ssd-test-suite.sh` | Qualitätssicherung | 11 Test-Kategorien, Performance-Benchmarks |
| `ssd-safe-eject.sh` | Sichere Entfernung | Buffer-Flush, Prozess-Detection, Hardware-Eject |
## ssd-detect.sh
### Syntax
```bash
ssd-detect.sh [OPTIONS] [COMMAND]
```
### Befehle
| Befehl | Beschreibung |
|--------|--------------|
| `detect` | Standard-Erkennung (Default) |
| `list` | Alle erkannten SSDs auflisten |
| `monitor` | Kontinuierliche Überwachung |
| `info` | Detaillierte Device-Informationen |
### Optionen
| Option | Kurz | Typ | Beschreibung | Default |
|--------|------|-----|--------------|---------|
| `--device` | `-d` | String | Spezifisches Device prüfen | Auto-detect |
| `--ntfs-only` | `-n` | Flag | Nur NTFS-Partitionen anzeigen | false |
| `--output` | `-o` | String | Output-Format (text/json/xml) | text |
| `--verbose` | `-v` | Flag | Detaillierte Ausgabe | false |
| `--debug` | | Flag | Debug-Modus aktivieren | false |
| `--monitor` | `-m` | Flag | Kontinuierliche Überwachung | false |
| `--interval` | `-i` | Integer | Monitor-Intervall (Sekunden) | 5 |
| `--timeout` | `-t` | Integer | Detection-Timeout (Sekunden) | 30 |
| `--hardware-info` | | Flag | Hardware-Details anzeigen | false |
| `--performance-info` | | Flag | Performance-Informationen | false |
### Beispiele
```bash
# Standard-Erkennung
ssd-detect.sh
# Spezifisches Device prüfen
ssd-detect.sh --device /dev/sdb1
# JSON-Output für Automation
ssd-detect.sh --output json
# Kontinuierliche Überwachung
ssd-detect.sh --monitor --interval 10
# Debug-Modus
ssd-detect.sh --debug --verbose
```
### Exit-Codes
| Code | Bedeutung |
|------|-----------|
| 0 | Erfolg - SSD erkannt |
| 1 | Allgemeiner Fehler |
| 2 | Keine SSD gefunden |
| 3 | NTFS nicht unterstützt |
| 4 | Timeout erreicht |
| 5 | Permission denied |
### Environment Variables
```bash
export SSD_DETECT_TIMEOUT=30 # Detection-Timeout
export SSD_LOG_LEVEL=INFO # Log-Level
export SSD_SUPPORTED_FS="ntfs,exfat" # Unterstützte Dateisysteme
export SSD_DEBUG=false # Debug-Modus
```
## ssd-mount-manager.sh
### Syntax
```bash
ssd-mount-manager.sh [OPTIONS] COMMAND
```
### Befehle
| Befehl | Beschreibung |
|--------|--------------|
| `mount` | SSD mounten |
| `unmount` | SSD unmounten |
| `remount` | SSD neu mounten |
| `status` | Mount-Status anzeigen |
| `diagnose` | Mount-Probleme diagnostizieren |
| `cleanup` | Mount-Point bereinigen |
| `recover` | Recovery-Modus |
| `metrics` | Performance-Metriken |
### Optionen
| Option | Kurz | Typ | Beschreibung | Default |
|--------|------|-----|--------------|---------|
| `--device` | `-d` | String | Spezifisches Device | Auto-detect |
| `--mountpoint` | `-m` | String | Mount-Point Pfad | /mnt/ssd-storage |
| `--options` | `-o` | String | Mount-Optionen | uid=1000,gid=1000 |
| `--readonly` | `-r` | Flag | Read-Only Mount | false |
| `--readwrite` | `-w` | Flag | Read-Write Mount | true |
| `--smb-ready` | | Flag | SMB-optimierte Optionen | false |
| `--fsck` | | Flag | Filesystem-Check vor Mount | false |
| `--timeout` | `-t` | Integer | Mount-Timeout (Sekunden) | 30 |
| `--force` | `-f` | Flag | Force-Mount | false |
| `--verbose` | `-v` | Flag | Detaillierte Ausgabe | false |
| `--json` | | Flag | JSON-Output | false |
### Beispiele
```bash
# Standard-Mount
ssd-mount-manager.sh mount
# Custom Mount-Point
ssd-mount-manager.sh mount --mountpoint /custom/path
# Read-Only Mount
ssd-mount-manager.sh mount --readonly
# SMB-optimiertes Mounting
ssd-mount-manager.sh mount --smb-ready
# Status prüfen
ssd-mount-manager.sh status --json
# Diagnose
ssd-mount-manager.sh diagnose
```
### Exit-Codes
| Code | Bedeutung |
|------|-----------|
| 0 | Erfolg |
| 1 | Allgemeiner Fehler |
| 2 | Device nicht gefunden |
| 3 | Mount fehlgeschlagen |
| 4 | Unmount fehlgeschlagen |
| 5 | Permission denied |
| 6 | Timeout erreicht |
### Environment Variables
```bash
export SSD_MOUNT_POINT="/mnt/ssd-storage" # Standard Mount-Point
export SSD_MOUNT_OPTIONS="uid=1000,gid=1000" # Standard Mount-Optionen
export SSD_MOUNT_TIMEOUT=30 # Mount-Timeout
export SSD_AUTO_MOUNT=true # Auto-Mount aktivieren
export SSD_SMB_READY=false # SMB-Optimierungen
```
## ssd-test-suite.sh
### Syntax
```bash
ssd-test-suite.sh [OPTIONS] [TESTS]
```
### Test-IDs
| Test-ID | Name | Kategorie | Dauer |
|---------|------|-----------|-------|
| `T01` | Hardware Detection | Hardware | 5s |
| `T02` | NTFS Filesystem | Hardware | 10s |
| `T03` | Mount Stability | Hardware | 30s |
| `T04` | Read Performance | Performance | 60s |
| `T05` | Write Performance | Performance | 60s |
| `T06` | File Operations | Performance | 45s |
| `T07` | Permission System | Integration | 15s |
| `T08` | SMB Readiness | Integration | 30s |
| `T09` | Capacity Verification | Integration | 20s |
| `T10` | Error Handling | Security | 25s |
| `T11` | Security Scan | Security | 40s |
### Befehle
| Befehl | Beschreibung |
|--------|--------------|
| `all` | Alle Tests ausführen |
| `quick` | Nur kritische Tests (T01,T02,T03,T08) |
| `T01-T11` | Spezifische Tests |
| `hardware` | Hardware-Tests (T01-T03) |
| `performance` | Performance-Tests (T04-T06) |
| `integration` | Integration-Tests (T07-T09) |
| `security` | Security-Tests (T10-T11) |
### Optionen
| Option | Kurz | Typ | Beschreibung | Default |
|--------|------|-----|--------------|---------|
| `--category` | `-c` | String | Test-Kategorie | all |
| `--output` | `-o` | String | Output-Format (text/json/xml/csv) | text |
| `--benchmark` | `-b` | Flag | Benchmark-Modus | false |
| `--detailed` | | Flag | Detaillierte Ergebnisse | false |
| `--continuous` | | Flag | Kontinuierliche Tests | false |
| `--interval` | `-i` | Integer | Test-Intervall (Sekunden) | 3600 |
| `--timeout` | `-t` | Integer | Test-Timeout (Sekunden) | 300 |
| `--size` | `-s` | String | Test-Daten Größe | 100MB |
| `--iterations` | | Integer | Test-Wiederholungen | 3 |
| `--compare` | | String | Baseline-Datei für Vergleich | - |
| `--trend` | | Flag | Trend-Analyse | false |
| `--prometheus-metrics` | | Flag | Prometheus-Metriken | false |
### Beispiele
```bash
# Alle Tests
ssd-test-suite.sh all
# Schnelle Tests
ssd-test-suite.sh --quick
# Performance-Tests mit Benchmark
ssd-test-suite.sh performance --benchmark
# Kontinuierliche Tests
ssd-test-suite.sh --continuous --interval 1800
# JSON-Output
ssd-test-suite.sh all --output json
# Spezifische Tests
ssd-test-suite.sh T01 T04 T08
```
### Exit-Codes
| Code | Bedeutung |
|------|-----------|
| 0 | Alle Tests erfolgreich |
| 1 | Ein oder mehrere Tests fehlgeschlagen |
| 2 | Kritischer Test fehlgeschlagen |
| 3 | Performance unter Threshold |
| 4 | Timeout erreicht |
| 5 | Permission denied |
### Environment Variables
```bash
export SSD_TEST_TIMEOUT=300 # Test-Timeout
export SSD_TEST_SIZE=100 # Test-Daten Größe (MB)
export SSD_TEST_ITERATIONS=3 # Test-Wiederholungen
export SSD_BENCHMARK_MODE=false # Benchmark-Modus
export SSD_PERFORMANCE_THRESHOLD_READ="50MB/s" # Read-Performance Threshold
export SSD_PERFORMANCE_THRESHOLD_WRITE="30MB/s" # Write-Performance Threshold
```
## ssd-safe-eject.sh
### Syntax
```bash
ssd-safe-eject.sh [OPTIONS]
```
### Optionen
| Option | Kurz | Typ | Beschreibung | Default |
|--------|------|-----|--------------|---------|
| `--device` | `-d` | String | Spezifisches Device | Auto-detect |
| `--force` | `-f` | Flag | Force-Eject | false |
| `--show-processes` | | Flag | Blockierende Prozesse anzeigen | false |
| `--kill-processes` | | Flag | Prozesse automatisch beenden | false |
| `--unmount-only` | | Flag | Nur Unmount (kein Hardware-Eject) | false |
| `--timeout` | `-t` | Integer | Buffer-Flush Timeout (Sekunden) | 60 |
| `--process-timeout` | | Integer | Prozess-Kill Timeout (Sekunden) | 10 |
| `--verbose` | `-v` | Flag | Detaillierte Ausgabe | false |
| `--dry-run` | | Flag | Simulation (keine Änderungen) | false |
| `--monitor-buffers` | | Flag | Buffer-Status überwachen | false |
| `--hardware-reset` | | Flag | Hardware-Reset nach Eject | false |
### Beispiele
```bash
# Standard Safe-Eject
ssd-safe-eject.sh
# Mit Prozess-Übersicht
ssd-safe-eject.sh --show-processes
# Force-Eject
ssd-safe-eject.sh --force --kill-processes
# Nur Unmount
ssd-safe-eject.sh --unmount-only
# Dry-Run
ssd-safe-eject.sh --dry-run --verbose
```
### Exit-Codes
| Code | Bedeutung |
|------|-----------|
| 0 | Erfolgreicher Eject |
| 1 | Allgemeiner Fehler |
| 2 | Device nicht gefunden |
| 3 | Unmount fehlgeschlagen |
| 4 | Prozesse blockieren |
| 5 | Hardware-Eject fehlgeschlagen |
| 6 | Timeout erreicht |
### Environment Variables
```bash
export SSD_EJECT_TIMEOUT=60 # Buffer-Flush Timeout
export SSD_PROCESS_TIMEOUT=10 # Prozess-Kill Timeout
export SSD_HARDWARE_EJECT=true # Hardware-Eject aktivieren
export SSD_KILL_PROCESSES=false # Automatisches Prozess-Killing
export SSD_MONITOR_BUFFERS=true # Buffer-Monitoring
```
## Globale Environment Variables
### Logging-Konfiguration
```bash
export SSD_LOG_LEVEL=INFO # Log-Level (DEBUG,INFO,WARN,ERROR)
export SSD_LOG_FILE="/var/log/ssd-management.log" # Log-Datei
export SSD_USE_SYSLOG=true # Syslog-Integration
export SSD_DEBUG=false # Debug-Modus
export SSD_VERBOSE=false # Verbose-Output
```
### System-Konfiguration
```bash
export SSD_CONFIG_DIR="/etc/ssd-management" # Konfigurationsverzeichnis
export SSD_CACHE_DIR="/var/cache/ssd-management" # Cache-Verzeichnis
export SSD_LOCK_DIR="/var/lock/ssd-management" # Lock-Verzeichnis
export SSD_PID_FILE="/var/run/ssd-management.pid" # PID-Datei
```
### Performance-Konfiguration
```bash
export SSD_MAX_PARALLEL_OPS=1 # Maximale parallele Operationen
export SSD_IO_SCHEDULER="mq-deadline" # I/O-Scheduler
export SSD_READ_AHEAD_KB=1024 # Read-Ahead Buffer
export SSD_CACHE_MODE="strict" # Cache-Modus
```
## Konfigurationsdateien
### Haupt-Konfiguration
```ini
# /etc/ssd-management/config.conf
[global]
debug = false
verbose = false
log_level = INFO
[mount]
default_mount_point = /mnt/ssd-storage
ntfs_options = uid=1000,gid=1000,umask=022,windows_names
auto_mount = true
smb_ready = false
[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
```
### Logging-Konfiguration
```ini
# /etc/ssd-management/logging.conf
[loggers]
keys = root,ssd
[handlers]
keys = fileHandler,syslogHandler
[formatters]
keys = detailedFormatter
[logger_root]
level = INFO
handlers = fileHandler
[logger_ssd]
level = DEBUG
handlers = fileHandler,syslogHandler
qualname = ssd
propagate = 0
[handler_fileHandler]
class = FileHandler
level = DEBUG
formatter = detailedFormatter
args = ('/var/log/ssd-management.log',)
[handler_syslogHandler]
class = handlers.SysLogHandler
level = INFO
formatter = detailedFormatter
args = (('localhost', handlers.SYSLOG_UDP_PORT), handlers.SysLogHandler.LOG_USER)
[formatter_detailedFormatter]
format = %(asctime)s - %(name)s - %(levelname)s - %(message)s
```
## Return-Codes Übersicht
### Allgemeine Codes (0-9)
| Code | Bedeutung |
|------|-----------|
| 0 | Erfolg |
| 1 | Allgemeiner Fehler |
| 2 | Ungültige Parameter |
| 3 | Permission denied |
| 4 | Timeout erreicht |
| 5 | Resource nicht verfügbar |
### Hardware-Codes (10-19)
| Code | Bedeutung |
|------|-----------|
| 10 | Device nicht gefunden |
| 11 | USB-Fehler |
| 12 | Hardware-Fehler |
| 13 | Filesystem nicht unterstützt |
| 14 | Partition-Fehler |
### Mount-Codes (20-29)
| Code | Bedeutung |
|------|-----------|
| 20 | Mount fehlgeschlagen |
| 21 | Unmount fehlgeschlagen |
| 22 | Mount-Point nicht verfügbar |
| 23 | Filesystem-Fehler |
| 24 | Permission-Fehler |
### Test-Codes (30-39)
| Code | Bedeutung |
|------|-----------|
| 30 | Test fehlgeschlagen |
| 31 | Performance unter Threshold |
| 32 | Kritischer Test fehlgeschlagen |
| 33 | Test-Timeout |
| 34 | Test-Daten korrupt |
## JSON-Output Format
### Standard-Response
```json
{
"timestamp": "2025-08-07T19:10:00Z",
"script": "ssd-detect.sh",
"version": "0.1.0",
"status": "success",
"exit_code": 0,
"data": {
// Script-spezifische Daten
},
"errors": [],
"warnings": []
}
```
### Error-Response
```json
{
"timestamp": "2025-08-07T19:10:00Z",
"script": "ssd-mount-manager.sh",
"version": "0.1.0",
"status": "error",
"exit_code": 20,
"data": null,
"errors": [
{
"code": "MOUNT_FAILED",
"message": "Failed to mount /dev/sdb1",
"details": "Permission denied"
}
],
"warnings": []
}
```
---
**💡 Tipp**: Verwenden Sie `script-name.sh --help` für die aktuellste Dokumentation und alle verfügbaren Optionen.

439
docs/installation-guide.md Normal file
View File

@@ -0,0 +1,439 @@
# USB-SSD Management System - Detaillierte Installation
## Übersicht
Diese Anleitung führt Sie Schritt-für-Schritt durch die Installation des USB-SSD Management Systems auf Ubuntu/Linux-Servern. Das System ist speziell für KMU-Infrastrukturen optimiert und bietet professionelle Verwaltung wechselbarer USB-C SSDs.
## Systemanforderungen
### Mindestanforderungen
- **Betriebssystem**: Ubuntu 20.04+ / Debian 11+ / CentOS 8+ / RHEL 8+
- **Hardware**: USB-C Port, mindestens 1GB freier Speicher
- **Berechtigungen**: `sudo` Zugriff für Installation
- **Netzwerk**: Internetverbindung für Package-Downloads
### Empfohlene Konfiguration
- **RAM**: 4GB+ für Performance-Tests
- **CPU**: 2+ Cores für parallele Operationen
- **Storage**: 10GB+ freier Speicher für Logs und Caches
- **USB**: USB 3.0+ für optimale Performance
### Unterstützte Distributionen
| Distribution | Version | Status | Notizen |
|--------------|---------|--------|---------|
| Ubuntu | 20.04+ | ✅ Vollständig | Empfohlen für Produktionsumgebungen |
| Debian | 11+ | ✅ Vollständig | Stabile Alternative zu Ubuntu |
| CentOS | 8+ | ✅ Vollständig | Enterprise-Umgebungen |
| RHEL | 8+ | ✅ Vollständig | Enterprise-Support verfügbar |
| Fedora | 35+ | ⚠️ Beta | Community-Support |
| Arch Linux | Rolling | ⚠️ Beta | Für erfahrene Benutzer |
## Vor der Installation
### 1. System-Update
```bash
# Ubuntu/Debian
sudo apt update && sudo apt upgrade -y
# CentOS/RHEL
sudo yum update -y
# Fedora
sudo dnf update -y
```
### 2. Git installieren
```bash
# Ubuntu/Debian
sudo apt install git -y
# CentOS/RHEL
sudo yum install git -y
# Fedora
sudo dnf install git -y
```
### 3. System-Informationen sammeln
```bash
# Betriebssystem-Version
lsb_release -a
# Verfügbarer Speicher
df -h
# USB-Ports identifizieren
lsusb
# Aktuelle Benutzer-Gruppen
groups $USER
```
## Installation
### Schritt 1: Repository klonen
```bash
# In Home-Verzeichnis wechseln
cd ~
# Repository klonen
git clone https://git.gitcover.de/KMU/usb-ssd.git
# In Projekt-Verzeichnis wechseln
cd usb-ssd
# Repository-Struktur prüfen
ls -la
```
### Schritt 2: Installations-Script ausführen
```bash
# Standard-Installation (empfohlen)
sudo ./scripts/installation/install.sh
# Installation mit Verbose-Output
sudo ./scripts/installation/install.sh --verbose
# Interaktive Installation mit Benutzer-Eingaben
sudo ./scripts/installation/install.sh --interactive
```
### Schritt 3: Installation verifizieren
```bash
# Installierte Scripts prüfen
ls -la /usr/local/bin/ssd-*
# Systemd-Services prüfen
sudo systemctl status ssd-detection.service
# Udev-Rules prüfen
ls -la /etc/udev/rules.d/99-ssd-*
# Benutzer-Berechtigungen prüfen
groups $USER
```
## Erweiterte Installationsoptionen
### Custom-Installation
```bash
# Installation in Custom-Verzeichnis
sudo ./scripts/installation/install.sh --prefix /opt/ssd-tools
# Nur bestimmte Komponenten installieren
sudo ./scripts/installation/install.sh --components "detection,management"
# Installation ohne Systemd-Services
sudo ./scripts/installation/install.sh --no-systemd
# Installation mit Custom-Konfiguration
sudo ./scripts/installation/install.sh --config /path/to/custom.conf
```
### Benutzer-spezifische Installation
```bash
# Installation nur für aktuellen Benutzer (ohne sudo)
./scripts/installation/install.sh --user-install
# Scripts werden installiert nach:
# ~/.local/bin/ssd-*
# ~/.config/ssd-management/
```
### Entwicklungs-Installation
```bash
# Installation mit Debug-Modus
sudo ./scripts/installation/install.sh --debug --verbose
# Installation mit Entwicklungs-Tools
sudo ./scripts/installation/install.sh --dev-tools
# Symlinks statt Kopien (für Entwicklung)
sudo ./scripts/installation/install.sh --symlink
```
## Post-Installation Konfiguration
### 1. Benutzer-Berechtigungen
```bash
# Aktuellen Benutzer zu ssd-users Gruppe hinzufügen
sudo usermod -a -G ssd-users $USER
# Disk-Gruppe für Hardware-Zugriff
sudo usermod -a -G disk $USER
# Neue Gruppen-Mitgliedschaft aktivieren
newgrp ssd-users
# Berechtigungen prüfen
groups
```
### 2. Systemd-Services konfigurieren
```bash
# Services aktivieren
sudo systemctl enable ssd-detection.service
sudo systemctl enable ssd-automount.service
# Services starten
sudo systemctl start ssd-detection.service
sudo systemctl start ssd-automount.service
# Status prüfen
sudo systemctl status ssd-detection.service
sudo systemctl status ssd-automount.service
```
### 3. Udev-Rules aktivieren
```bash
# Udev-Rules neu laden
sudo udevadm control --reload-rules
sudo udevadm trigger
# Test mit angeschlossener USB-SSD
sudo udevadm test /sys/block/sdb
```
### 4. Logging konfigurieren
```bash
# Log-Verzeichnisse erstellen
sudo mkdir -p /var/log/ssd-management
# Log-Rotation aktivieren
sudo systemctl enable logrotate.timer
# Erste Logs prüfen
sudo tail -f /var/log/ssd-detection.log
```
## Erste Verwendung
### 1. USB-C SSD anschließen
```bash
# SSD anschließen und erkennen lassen
# Automatische Erkennung durch udev-rules
# Manuelle Erkennung
ssd-detect.sh
# Erkannte Geräte anzeigen
lsblk | grep -E "sd[b-z]"
```
### 2. Erste Mount-Operation
```bash
# Automatisches Mounting
ssd-mount-manager.sh mount
# Mount-Status prüfen
ssd-mount-manager.sh status
# Mount-Point prüfen
ls -la /mnt/ssd-storage/
```
### 3. Test-Suite ausführen
```bash
# Schnelle Tests
ssd-test-suite.sh --quick
# Vollständige Tests
ssd-test-suite.sh all
# Performance-Benchmark
ssd-test-suite.sh --benchmark
```
### 4. Sichere Entfernung
```bash
# Safe-Eject ausführen
ssd-safe-eject.sh
# Status nach Eject prüfen
ssd-mount-manager.sh status
```
## Konfiguration anpassen
### 1. Haupt-Konfigurationsdatei
```bash
# Konfigurationsdatei bearbeiten
sudo nano /etc/ssd-management/config.conf
# Beispiel-Konfiguration:
SSD_MOUNT_POINT="/mnt/ssd-storage"
SSD_LOG_LEVEL="INFO"
SSD_AUTO_MOUNT="true"
SSD_SMB_READY="true"
```
### 2. Mount-Optionen anpassen
```bash
# NTFS-Mount-Optionen
SSD_MOUNT_OPTIONS="uid=1000,gid=1000,umask=022,windows_names"
# Performance-Optimierungen
SSD_MOUNT_OPTIONS="$SSD_MOUNT_OPTIONS,big_writes,cache=strict"
```
### 3. Logging-Level anpassen
```bash
# Debug-Logging aktivieren
export SSD_LOG_LEVEL=DEBUG
# Syslog-Integration
export SSD_USE_SYSLOG=true
# Log-Datei-Pfad
export SSD_LOG_FILE="/var/log/ssd-management.log"
```
## Troubleshooting
### Häufige Installations-Probleme
#### Problem: "Permission denied"
```bash
# Lösung: Installation mit sudo ausführen
sudo ./scripts/installation/install.sh
# Benutzer-Berechtigungen prüfen
sudo -l
```
#### Problem: "Package not found"
```bash
# Lösung: Repository-Updates durchführen
sudo apt update # Ubuntu/Debian
sudo yum update # CentOS/RHEL
# EPEL-Repository aktivieren (CentOS/RHEL)
sudo yum install epel-release
```
#### Problem: "Systemd service failed"
```bash
# Service-Status prüfen
sudo systemctl status ssd-detection.service
# Service-Logs anzeigen
sudo journalctl -u ssd-detection.service
# Service neu starten
sudo systemctl restart ssd-detection.service
```
#### Problem: "USB device not detected"
```bash
# USB-Geräte auflisten
lsusb
# Block-Geräte anzeigen
lsblk
# Udev-Events überwachen
sudo udevadm monitor
# NTFS-Support prüfen
sudo modprobe ntfs
```
### Diagnose-Tools
#### System-Diagnose
```bash
# Installations-Status prüfen
./scripts/installation/install.sh --status
# Abhängigkeiten validieren
./scripts/installation/install.sh --check-dependencies
# Konfiguration testen
./scripts/installation/install.sh --validate
```
#### Hardware-Diagnose
```bash
# USB-Controller prüfen
lspci | grep -i usb
# Kernel-Module prüfen
lsmod | grep -E "(usb|ntfs)"
# Hardware-Logs prüfen
dmesg | grep -i usb
```
## Deinstallation
### Vollständige Deinstallation
```bash
# Deinstallations-Script ausführen
sudo ./scripts/installation/uninstall.sh
# Manuelle Bereinigung (falls nötig)
sudo rm -rf /usr/local/bin/ssd-*
sudo rm -rf /etc/ssd-management/
sudo rm -f /etc/systemd/system/ssd-*.service
sudo rm -f /etc/udev/rules.d/99-ssd-*.rules
```
### Konfiguration beibehalten
```bash
# Nur Scripts entfernen
sudo ./scripts/installation/uninstall.sh --keep-config
# Logs beibehalten
sudo ./scripts/installation/uninstall.sh --keep-logs
```
## Upgrade-Prozess
### Standard-Upgrade
```bash
# Repository aktualisieren
cd ~/usb-ssd
git pull origin main
# Upgrade ausführen
sudo ./scripts/installation/install.sh --upgrade
# Services neu starten
sudo systemctl restart ssd-detection.service ssd-automount.service
```
### Backup vor Upgrade
```bash
# Konfiguration sichern
sudo cp -r /etc/ssd-management /etc/ssd-management.backup.$(date +%Y%m%d)
# Scripts sichern
sudo mkdir -p /tmp/ssd-backup
sudo cp /usr/local/bin/ssd-* /tmp/ssd-backup/
```
## Support und Hilfe
### Community-Support
- **Issues**: [Repository Issues](https://git.gitcover.de/KMU/usb-ssd/issues)
- **Discussions**: Repository-Discussions
- **Wiki**: [Repository Wiki](https://git.gitcover.de/KMU/usb-ssd/wiki)
### Logs für Support
```bash
# System-Informationen sammeln
sudo ./scripts/installation/install.sh --system-info > system-info.txt
# Logs sammeln
sudo tar -czf ssd-logs.tar.gz /var/log/ssd-*.log
# Konfiguration anonymisieren
sudo cp /etc/ssd-management/config.conf config-anonymized.conf
```
### Enterprise-Support
Für professionellen Support und Custom-Entwicklungen kontaktieren Sie die GitCover® Organization.
---
**⚠️ Wichtiger Hinweis**: Diese Installation manipuliert System-Konfigurationen und Hardware-Zugriffe. Führen Sie die Installation nur auf Systemen durch, auf denen Sie vollständige administrative Rechte haben und verstehen die Auswirkungen der Änderungen.

660
docs/troubleshooting.md Normal file
View File

@@ -0,0 +1,660 @@
# USB-SSD Management System - Troubleshooting
## Übersicht
Diese Anleitung hilft bei der Diagnose und Lösung häufiger Probleme mit dem USB-SSD Management System. Die Probleme sind nach Kategorien sortiert und enthalten detaillierte Lösungsschritte.
## Allgemeine Diagnose-Tools
### System-Informationen sammeln
```bash
# System-Status prüfen
./scripts/installation/install.sh --status
# Hardware-Informationen
lsusb -v | grep -A 10 "Mass Storage"
lsblk -f
dmesg | grep -i usb | tail -20
# Service-Status
sudo systemctl status ssd-detection.service
sudo systemctl status ssd-automount.service
# Log-Analyse
tail -50 /var/log/ssd-management.log
journalctl -u ssd-detection.service --since "1 hour ago"
```
### Debug-Modus aktivieren
```bash
# Environment-Variables setzen
export SSD_DEBUG=true
export SSD_VERBOSE=true
export SSD_LOG_LEVEL=DEBUG
# Scripts mit Debug-Output ausführen
ssd-detect.sh --debug --verbose
ssd-mount-manager.sh diagnose
ssd-test-suite.sh --debug
```
## Hardware-Probleme
### Problem: USB-C SSD wird nicht erkannt
#### Symptome
- `lsusb` zeigt das Gerät nicht an
- Keine Kernel-Messages beim Anschließen
- `ssd-detect.sh` findet keine Geräte
#### Diagnose
```bash
# USB-Controller prüfen
lspci | grep -i usb
# USB-Geräte auflisten
lsusb -t
# Kernel-Messages überwachen
sudo dmesg -w
# SSD anschließen und Messages beobachten
# USB-Module prüfen
lsmod | grep -E "(usb|storage)"
```
#### Lösungsansätze
```bash
# 1. USB-Module neu laden
sudo modprobe -r usb_storage
sudo modprobe usb_storage
# 2. USB-Controller zurücksetzen
echo '1-1' | sudo tee /sys/bus/usb/drivers/usb/unbind
echo '1-1' | sudo tee /sys/bus/usb/drivers/usb/bind
# 3. Udev-Rules neu laden
sudo udevadm control --reload-rules
sudo udevadm trigger
# 4. Anderen USB-Port testen
# SSD an verschiedenen Ports testen
# 5. Power-Management prüfen
echo 'on' | sudo tee /sys/bus/usb/devices/*/power/control
```
### Problem: SSD wird erkannt aber nicht als Block-Device
#### Symptome
- `lsusb` zeigt das Gerät an
- `lsblk` zeigt kein entsprechendes Device
- Kernel-Messages zeigen Fehler
#### Diagnose
```bash
# Block-Devices auflisten
lsblk -a
# SCSI-Devices prüfen
cat /proc/scsi/scsi
# Device-Mapper prüfen
sudo dmsetup ls
# Partition-Tabelle prüfen
sudo fdisk -l | grep -A 10 "Disk /dev/sd"
```
#### Lösungsansätze
```bash
# 1. SCSI-Bus neu scannen
echo "- - -" | sudo tee /sys/class/scsi_host/host*/scan
# 2. Partition-Tabelle reparieren
sudo parted /dev/sdb print
sudo parted /dev/sdb mklabel msdos # Nur wenn nötig!
# 3. Device-Permissions prüfen
ls -la /dev/sd*
sudo chmod 660 /dev/sdb*
# 4. Storage-Module neu laden
sudo modprobe -r usb_storage
sudo modprobe usb_storage quirks=VENDOR:PRODUCT:u
```
## Dateisystem-Probleme
### Problem: NTFS-Dateisystem wird nicht unterstützt
#### Symptome
- Mount schlägt mit "unknown filesystem type 'ntfs'" fehl
- `ssd-detect.sh` erkennt Filesystem nicht
- NTFS-Tools nicht verfügbar
#### Diagnose
```bash
# NTFS-Support prüfen
cat /proc/filesystems | grep ntfs
which ntfs-3g
dpkg -l | grep ntfs
# Kernel-Module prüfen
lsmod | grep ntfs
modinfo ntfs
```
#### Lösungsansätze
```bash
# 1. NTFS-3G installieren
# Ubuntu/Debian
sudo apt update
sudo apt install ntfs-3g
# CentOS/RHEL
sudo yum install ntfs-3g
# 2. NTFS-Modul laden
sudo modprobe ntfs
# 3. Fuse-Support prüfen
sudo modprobe fuse
ls -la /dev/fuse
# 4. Alternative: exFAT verwenden
sudo apt install exfat-fuse exfat-utils
```
### Problem: Filesystem-Korruption
#### Symptome
- Mount schlägt mit I/O-Fehlern fehl
- Dateien sind nicht lesbar
- `ssd-test-suite.sh` zeigt Filesystem-Fehler
#### Diagnose
```bash
# Filesystem-Check
sudo fsck.ntfs -f /dev/sdb1
sudo ntfsfix /dev/sdb1
# SMART-Daten prüfen
sudo smartctl -a /dev/sdb
# Bad-Blocks testen
sudo badblocks -v /dev/sdb1
```
#### Lösungsansätze
```bash
# 1. Read-Only Mount versuchen
sudo mount -t ntfs -o ro /dev/sdb1 /mnt/ssd-storage
# 2. Filesystem reparieren
sudo ntfsfix /dev/sdb1
sudo fsck.ntfs -f /dev/sdb1
# 3. Daten retten
sudo ddrescue /dev/sdb1 /backup/ssd-image.img /backup/ssd-mapfile
# 4. Neu formatieren (Datenverlust!)
sudo mkfs.ntfs -f /dev/sdb1
```
## Mount-Probleme
### Problem: Mount schlägt fehl
#### Symptome
- `ssd-mount-manager.sh mount` gibt Fehler zurück
- Mount-Point ist nicht verfügbar
- Permission-Denied Fehler
#### Diagnose
```bash
# Mount-Diagnose
ssd-mount-manager.sh diagnose
# Aktuelle Mounts prüfen
mount | grep ssd
findmnt /mnt/ssd-storage
# Mount-Point Status
ls -la /mnt/ssd-storage
stat /mnt/ssd-storage
# Berechtigungen prüfen
groups $USER
id $USER
```
#### Lösungsansätze
```bash
# 1. Mount-Point bereinigen
ssd-mount-manager.sh cleanup
sudo umount -f /mnt/ssd-storage
sudo rmdir /mnt/ssd-storage
sudo mkdir -p /mnt/ssd-storage
# 2. Berechtigungen korrigieren
sudo chown root:root /mnt/ssd-storage
sudo chmod 755 /mnt/ssd-storage
# 3. Manueller Mount-Test
sudo mount -t ntfs /dev/sdb1 /mnt/ssd-storage
sudo mount -t ntfs -o uid=1000,gid=1000 /dev/sdb1 /mnt/ssd-storage
# 4. Recovery-Modus
ssd-mount-manager.sh recover
```
### Problem: Mount hängt oder ist langsam
#### Symptome
- Mount-Operation dauert sehr lange
- System reagiert nicht während Mount
- Hohe I/O-Wait Zeiten
#### Diagnose
```bash
# I/O-Status prüfen
iostat -x 1
iotop
# Mount-Optionen prüfen
mount | grep ssd-storage
# USB-Performance prüfen
sudo hdparm -t /dev/sdb1
sudo dd if=/dev/sdb1 of=/dev/null bs=1M count=100
```
#### Lösungsansätze
```bash
# 1. Mount-Optionen optimieren
sudo mount -t ntfs -o big_writes,cache=strict /dev/sdb1 /mnt/ssd-storage
# 2. USB-Performance tunen
echo mq-deadline | sudo tee /sys/block/sdb/queue/scheduler
echo 1024 | sudo tee /sys/block/sdb/queue/read_ahead_kb
# 3. Timeout erhöhen
export SSD_MOUNT_TIMEOUT=120
ssd-mount-manager.sh mount
# 4. Alternative Mount-Methode
sudo mount.ntfs-3g /dev/sdb1 /mnt/ssd-storage -o uid=1000,gid=1000
```
## Service-Probleme
### Problem: Systemd-Services starten nicht
#### Symptome
- `systemctl start ssd-detection.service` schlägt fehl
- Services sind im "failed" Status
- Boot-Prozess hängt bei SSD-Services
#### Diagnose
```bash
# Service-Status detailliert
sudo systemctl status ssd-detection.service -l
sudo systemctl status ssd-automount.service -l
# Service-Logs
sudo journalctl -u ssd-detection.service --no-pager
sudo journalctl -u ssd-automount.service --since "1 hour ago"
# Service-Konfiguration prüfen
sudo systemctl cat ssd-detection.service
sudo systemd-analyze verify /etc/systemd/system/ssd-detection.service
```
#### Lösungsansätze
```bash
# 1. Services neu laden
sudo systemctl daemon-reload
sudo systemctl reset-failed ssd-detection.service
# 2. Service-Konfiguration reparieren
sudo systemctl edit ssd-detection.service
# [Service]
# Restart=on-failure
# RestartSec=5
# 3. Dependencies prüfen
sudo systemctl list-dependencies ssd-detection.service
# 4. Service manuell testen
sudo /usr/local/bin/ssd-detect.sh --monitor
```
### Problem: Udev-Rules funktionieren nicht
#### Symptome
- Automatische Erkennung funktioniert nicht
- USB-Events lösen keine Scripts aus
- Manuelle Erkennung funktioniert
#### Diagnose
```bash
# Udev-Rules prüfen
ls -la /etc/udev/rules.d/99-ssd-*
cat /etc/udev/rules.d/99-ssd-automount.rules
# Udev-Events testen
sudo udevadm monitor --environment --udev
# SSD anschließen und Events beobachten
# Rule-Syntax testen
sudo udevadm test /sys/block/sdb
```
#### Lösungsansätze
```bash
# 1. Rules neu laden
sudo udevadm control --reload-rules
sudo udevadm trigger
# 2. Rule-Syntax korrigieren
sudo nano /etc/udev/rules.d/99-ssd-automount.rules
# Korrekte Syntax:
# SUBSYSTEM=="block", ATTRS{removable}=="1", ACTION=="add", RUN+="/usr/local/bin/ssd-detect.sh --device %k"
# 3. Permissions prüfen
sudo chmod 644 /etc/udev/rules.d/99-ssd-automount.rules
# 4. Udev-Service neu starten
sudo systemctl restart systemd-udevd
```
## Performance-Probleme
### Problem: Langsame SSD-Performance
#### Symptome
- `ssd-test-suite.sh` zeigt schlechte Performance
- Datei-Operationen sind langsam
- Benchmark-Werte unter Erwartung
#### Diagnose
```bash
# Performance-Benchmark
ssd-test-suite.sh --benchmark --detailed
# Hardware-Performance testen
sudo hdparm -t /dev/sdb1
sudo dd if=/dev/zero of=/mnt/ssd-storage/testfile bs=1M count=1000
# USB-Geschwindigkeit prüfen
lsusb -t
cat /sys/bus/usb/devices/*/speed
```
#### Lösungsansätze
```bash
# 1. USB 3.0+ Port verwenden
# SSD an USB 3.0+ Port anschließen
# 2. Mount-Optionen optimieren
sudo mount -o remount,big_writes,cache=strict /mnt/ssd-storage
# 3. I/O-Scheduler optimieren
echo mq-deadline | sudo tee /sys/block/sdb/queue/scheduler
# 4. Read-Ahead tunen
echo 2048 | sudo tee /sys/block/sdb/queue/read_ahead_kb
# 5. SSD-Health prüfen
sudo smartctl -a /dev/sdb
```
### Problem: Hohe CPU-Last bei SSD-Operationen
#### Symptome
- Hohe CPU-Auslastung während Mount/Unmount
- System reagiert langsam bei SSD-Zugriff
- `top` zeigt hohe System-CPU
#### Diagnose
```bash
# CPU-Usage überwachen
top -p $(pgrep -f ssd-)
htop
# I/O-Wait analysieren
iostat -x 1 10
# Prozess-Analyse
sudo strace -p $(pgrep -f ssd-mount-manager)
```
#### Lösungsansätze
```bash
# 1. Nice-Level anpassen
sudo renice -n 10 $(pgrep -f ssd-)
# 2. I/O-Priorität setzen
sudo ionice -c 3 -p $(pgrep -f ssd-)
# 3. Concurrent-Operations reduzieren
export SSD_MAX_PARALLEL_OPS=1
# 4. Caching optimieren
echo 1 | sudo tee /proc/sys/vm/drop_caches
```
## Eject-Probleme
### Problem: Safe-Eject schlägt fehl
#### Symptome
- `ssd-safe-eject.sh` gibt Fehler zurück
- "Device is busy" Meldungen
- Unmount schlägt fehl
#### Diagnose
```bash
# Blockierende Prozesse finden
ssd-safe-eject.sh --show-processes
lsof /mnt/ssd-storage
fuser -v /mnt/ssd-storage
# Mount-Status prüfen
mount | grep ssd-storage
findmnt /mnt/ssd-storage
# Buffer-Status prüfen
cat /proc/meminfo | grep -E "(Dirty|Writeback)"
```
#### Lösungsansätze
```bash
# 1. Prozesse beenden
ssd-safe-eject.sh --kill-processes
sudo fuser -km /mnt/ssd-storage
# 2. Buffer-Flush erzwingen
sync
echo 3 | sudo tee /proc/sys/vm/drop_caches
# 3. Force-Unmount
sudo umount -f /mnt/ssd-storage
sudo umount -l /mnt/ssd-storage # Lazy unmount
# 4. Hardware-Reset
echo 1 | sudo tee /sys/block/sdb/device/delete
```
### Problem: Hardware-Eject funktioniert nicht
#### Symptome
- Unmount erfolgreich, aber LED blinkt weiter
- SSD kann nicht physisch entfernt werden
- `eject` Befehl schlägt fehl
#### Diagnose
```bash
# Eject-Fähigkeiten prüfen
sudo hdparm -I /dev/sdb | grep -i removable
cat /sys/block/sdb/removable
# SCSI-Eject testen
sudo sg_start --eject /dev/sdb
```
#### Lösungsansätze
```bash
# 1. Standard-Eject
sudo eject /dev/sdb
# 2. SCSI-Eject
sudo sg_start --stop --eject /dev/sdb
# 3. USB-Device entfernen
echo 1 | sudo tee /sys/block/sdb/device/delete
# 4. Power-Management
echo auto | sudo tee /sys/block/sdb/device/power/control
```
## Logging-Probleme
### Problem: Logs werden nicht erstellt
#### Symptome
- Log-Dateien sind leer oder existieren nicht
- Keine Einträge in Systemd-Journal
- Debug-Output wird nicht angezeigt
#### Diagnose
```bash
# Log-Verzeichnisse prüfen
ls -la /var/log/ssd-*
ls -la /var/log/syslog
# Berechtigungen prüfen
stat /var/log/ssd-management.log
sudo -u ssd-user touch /var/log/test.log
# Syslog-Konfiguration
cat /etc/rsyslog.d/50-ssd-management.conf
sudo systemctl status rsyslog
```
#### Lösungsansätze
```bash
# 1. Log-Verzeichnisse erstellen
sudo mkdir -p /var/log/ssd-management
sudo chown syslog:adm /var/log/ssd-management
# 2. Berechtigungen korrigieren
sudo chmod 644 /var/log/ssd-*.log
sudo chown syslog:adm /var/log/ssd-*.log
# 3. Syslog neu starten
sudo systemctl restart rsyslog
# 4. Manuelle Log-Tests
logger -t ssd-test "Test message"
tail -f /var/log/syslog | grep ssd-test
```
## Erweiterte Diagnose
### Vollständige System-Diagnose
```bash
#!/bin/bash
# system-diagnosis.sh
echo "=== USB-SSD System Diagnosis ==="
echo "Date: $(date)"
echo "User: $(whoami)"
echo
echo "=== System Information ==="
uname -a
lsb_release -a 2>/dev/null || cat /etc/os-release
echo
echo "=== Hardware Information ==="
lsusb -v | grep -A 10 "Mass Storage"
lsblk -f
lspci | grep -i usb
echo
echo "=== Service Status ==="
systemctl status ssd-detection.service --no-pager
systemctl status ssd-automount.service --no-pager
echo
echo "=== Mount Status ==="
mount | grep ssd
findmnt /mnt/ssd-storage
echo
echo "=== Log Analysis ==="
tail -20 /var/log/ssd-management.log
journalctl -u ssd-detection.service --since "1 hour ago" --no-pager
echo
echo "=== Performance Test ==="
if [ -b /dev/sdb1 ]; then
sudo hdparm -t /dev/sdb1
fi
echo
echo "=== Configuration ==="
cat /etc/ssd-management/config.conf 2>/dev/null || echo "No config file found"
echo
echo "=== Diagnosis Complete ==="
```
### Log-Sammlung für Support
```bash
#!/bin/bash
# collect-logs.sh
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
LOGDIR="/tmp/ssd-logs-$TIMESTAMP"
mkdir -p "$LOGDIR"
# System-Logs
cp /var/log/ssd-*.log "$LOGDIR/" 2>/dev/null
journalctl -u ssd-detection.service > "$LOGDIR/systemd-detection.log"
journalctl -u ssd-automount.service > "$LOGDIR/systemd-automount.log"
# Konfiguration
cp -r /etc/ssd-management/ "$LOGDIR/config/" 2>/dev/null
cp /etc/udev/rules.d/99-ssd-*.rules "$LOGDIR/" 2>/dev/null
# System-Informationen
./system-diagnosis.sh > "$LOGDIR/diagnosis.txt"
# Archiv erstellen
tar -czf "ssd-logs-$TIMESTAMP.tar.gz" -C /tmp "ssd-logs-$TIMESTAMP"
echo "Logs collected in: ssd-logs-$TIMESTAMP.tar.gz"
```
## Support-Kontakt
### Vor Support-Anfrage
1. **Diagnose durchführen**: `system-diagnosis.sh` ausführen
2. **Logs sammeln**: `collect-logs.sh` verwenden
3. **Reproduzierbarkeit**: Problem-Schritte dokumentieren
4. **System-Details**: Hardware und Software-Versionen angeben
### Community-Support
- **Issues**: [Repository Issues](https://git.gitcover.de/KMU/usb-ssd/issues)
- **Discussions**: Repository-Discussions für allgemeine Fragen
- **Wiki**: [Repository Wiki](https://git.gitcover.de/KMU/usb-ssd/wiki)
### Enterprise-Support
Für professionellen Support und Custom-Entwicklungen kontaktieren Sie die GitCover® Organization.
---
**⚠️ Wichtiger Hinweis**: Bei kritischen Produktionsproblemen immer zuerst Backups erstellen und in einer Testumgebung reproduzieren, bevor Lösungsschritte angewendet werden.

570
docs/usage-guide.md Normal file
View File

@@ -0,0 +1,570 @@
# 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