Setup installation
This commit is contained in:
264
scripts/ssd-management/README.md
Normal file
264
scripts/ssd-management/README.md
Normal file
@@ -0,0 +1,264 @@
|
||||
# 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
|
Reference in New Issue
Block a user