# SSD Management Module ## Übersicht Das SSD Management Module verwaltet den kompletten Lifecycle von USB-C SSDs - von Mount-Operationen bis zur sicheren Entfernung. Es bietet flexibles Mounting mit konstantem Mount-Point und umfassende Sicherheitsfeatures. ## Hauptkomponenten ### `ssd-mount-manager.sh` **Zweck**: Flexibles Mount-Lifecycle Management mit konstantem Mount-Point **Hauptfunktionen**: - Automatisches Mounting auf `/mnt/ssd-storage` - NTFS-Kompatibilität mit optimierten Mount-Optionen - UUID-basierte Geräte-Zuordnung - Mount-Status Überwachung - Fehlerbehandlung und Recovery ### `ssd-safe-eject.sh` **Zweck**: Sichere Hardware-Entfernung mit Datenintegritäts-Schutz **Hauptfunktionen**: - Buffer-Flush Überwachung - Prozess-Detection vor Eject - Hardware-Eject Funktionalität - Cleanup von Mount-Points - Audit-Logging ## Verwendung ### Mount-Manager #### Grundlegende Mount-Operationen ```bash # Automatisches Mounting der erkannten SSD ./ssd-mount-manager.sh mount # Spezifische SSD mounten ./ssd-mount-manager.sh mount --device /dev/sdb1 # Read-Only Mount für kritische Prüfungen ./ssd-mount-manager.sh mount --readonly # Mount-Status prüfen ./ssd-mount-manager.sh status ``` #### Erweiterte Mount-Optionen ```bash # Custom Mount-Point ./ssd-mount-manager.sh mount --mountpoint /custom/path # Spezifische NTFS-Optionen ./ssd-mount-manager.sh mount --options "uid=1000,gid=1000,umask=022" # Automatisches Remounting ./ssd-mount-manager.sh remount ``` ### Safe-Eject #### Sichere Entfernung ```bash # Standard Safe-Eject ./ssd-safe-eject.sh # Force-Eject (bei hängenden Prozessen) ./ssd-safe-eject.sh --force # Eject mit Prozess-Übersicht ./ssd-safe-eject.sh --show-processes # Nur Unmount (ohne Hardware-Eject) ./ssd-safe-eject.sh --unmount-only ``` #### Erweiterte Eject-Optionen ```bash # Timeout für Buffer-Flush ./ssd-safe-eject.sh --timeout 60 # Verbose-Modus ./ssd-safe-eject.sh --verbose # Dry-Run (Simulation) ./ssd-safe-eject.sh --dry-run ``` ## Konfiguration ### Mount-Manager Konfiguration ```bash # Standard Mount-Point export SSD_MOUNT_POINT="/mnt/ssd-storage" # Standard NTFS-Optionen export SSD_MOUNT_OPTIONS="uid=1000,gid=1000,umask=022,windows_names" # Timeout für Mount-Operationen export SSD_MOUNT_TIMEOUT=30 ``` ### Safe-Eject Konfiguration ```bash # Buffer-Flush Timeout export SSD_EJECT_TIMEOUT=60 # Prozess-Kill Timeout export SSD_PROCESS_TIMEOUT=10 # Hardware-Eject aktivieren export SSD_HARDWARE_EJECT=true ``` ## Mount-Point Management ### Konstanter Mount-Point Das System verwendet einen konstanten logischen Mount-Point (`/mnt/ssd-storage`), unabhängig von der physischen SSD: ```bash # Immer derselbe Pfad, verschiedene SSDs /mnt/ssd-storage/ # SSD A /mnt/ssd-storage/ # SSD B (nach Wechsel) /mnt/ssd-storage/ # SSD C (nach Wechsel) ``` ### SMB-Freigabe Vorbereitung ```bash # Optimierte Berechtigungen für SMB ./ssd-mount-manager.sh mount --smb-ready # Automatische SMB-Konfiguration ./ssd-mount-manager.sh mount --configure-smb ``` ## Sicherheitsfeatures ### Prozess-Detection ```bash # Aktive Prozesse vor Eject anzeigen lsof /mnt/ssd-storage # Automatische Prozess-Beendigung ./ssd-safe-eject.sh --kill-processes ``` ### Buffer-Flush Überwachung ```bash # Manueller Sync vor Eject sync && echo 3 > /proc/sys/vm/drop_caches # Automatische Buffer-Überwachung ./ssd-safe-eject.sh --monitor-buffers ``` ### Datenintegritäts-Prüfung ```bash # Filesystem-Check vor Mount ./ssd-mount-manager.sh mount --fsck # Readonly-Test vor produktivem Mount ./ssd-mount-manager.sh test-mount ``` ## Fehlerbehandlung ### Mount-Fehler ```bash # Häufige Mount-Probleme diagnostizieren ./ssd-mount-manager.sh diagnose # Mount-Point Cleanup ./ssd-mount-manager.sh cleanup # Recovery-Modus ./ssd-mount-manager.sh recover ``` ### Eject-Fehler ```bash # Hängende Prozesse identifizieren ./ssd-safe-eject.sh --list-blocking-processes # Force-Unmount ./ssd-safe-eject.sh --force-unmount # Hardware-Reset ./ssd-safe-eject.sh --hardware-reset ``` ## Logging und Monitoring ### Log-Konfiguration ```bash # Log-Level setzen export SSD_LOG_LEVEL=INFO # Log-Datei konfigurieren export SSD_LOG_FILE="/var/log/ssd-management.log" # Syslog-Integration export SSD_USE_SYSLOG=true ``` ### Monitoring-Integration ```bash # Prometheus-Metriken ./ssd-mount-manager.sh --metrics # Status-JSON für Monitoring ./ssd-mount-manager.sh status --json ``` ## Systemd-Integration ### Service-Templates ```bash # Mount-Service aktivieren sudo systemctl enable ssd-mount@.service # Auto-Mount bei USB-Events sudo systemctl enable ssd-automount.service ``` ### Service-Konfiguration ```ini # /etc/systemd/system/ssd-mount@.service [Unit] Description=SSD Mount Manager for %i After=local-fs.target [Service] Type=oneshot ExecStart=/usr/local/bin/ssd-mount-manager.sh mount --device %i ExecStop=/usr/local/bin/ssd-safe-eject.sh --device %i RemainAfterExit=yes [Install] WantedBy=multi-user.target ``` ## Best Practices ### Produktionsumgebung 1. **Immer Safe-Eject verwenden** statt direkter `umount` 2. **Mount-Status überwachen** vor kritischen Operationen 3. **Logs regelmäßig prüfen** für Anomalien 4. **Backup vor Mount-Operationen** bei kritischen Daten 5. **Systemd-Services nutzen** für automatisches Management ### Entwicklungsumgebung 1. **Dry-Run Modus** für Tests verwenden 2. **Verbose-Logging** für Debugging aktivieren 3. **Recovery-Scripte** bereithalten 4. **Test-SSDs** für Entwicklung verwenden ## Changelog ### Version 0.1.0 - Initiale Implementierung - Mount-Manager mit konstantem Mount-Point - Safe-Eject mit Prozess-Detection - NTFS-Optimierungen - Systemd-Integration