265 lines
5.6 KiB
Markdown
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
|