Setup installation
This commit is contained in:
479
docs/api-reference.md
Normal file
479
docs/api-reference.md
Normal 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
439
docs/installation-guide.md
Normal 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
660
docs/troubleshooting.md
Normal 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
570
docs/usage-guide.md
Normal 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
|
Reference in New Issue
Block a user