# 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