Files
usb-ssd/scripts/ssd-management/README.md
2025-08-07 19:28:22 +02:00

265 lines
5.6 KiB
Markdown

# 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