350 lines
8.1 KiB
Markdown
350 lines
8.1 KiB
Markdown
# SSD Testing Module
|
|
|
|
## Übersicht
|
|
|
|
Das SSD Testing Module bietet umfassende Qualitätssicherung für USB-C SSDs mit 11 spezialisierten Tests, Performance-Messung und SMB-Bereitschaftsprüfung. Es gewährleistet die Zuverlässigkeit und Kompatibilität der Storage-Infrastruktur.
|
|
|
|
## Hauptkomponenten
|
|
|
|
### `ssd-test-suite.sh`
|
|
**Zweck**: Umfassende Qualitätssicherung und Performance-Messung
|
|
|
|
**Test-Kategorien**:
|
|
- **Hardware-Tests**: Connectivity, Power, Temperature
|
|
- **Filesystem-Tests**: NTFS-Integrität, Permissions, Capacity
|
|
- **Performance-Tests**: Read/Write Speed, IOPS, Latency
|
|
- **Integration-Tests**: SMB-Bereitschaft, Mount-Stabilität
|
|
- **Security-Tests**: Access-Control, Encryption-Support
|
|
|
|
## Test-Suite Übersicht
|
|
|
|
### Die 11 Kern-Tests
|
|
|
|
| Test-ID | Name | Zweck | Dauer |
|
|
|---------|------|-------|-------|
|
|
| `T01` | **Hardware Detection** | USB-C Connectivity und Device-Recognition | 5s |
|
|
| `T02` | **NTFS Filesystem** | Dateisystem-Integrität und Kompatibilität | 10s |
|
|
| `T03` | **Mount Stability** | Mount/Unmount Zyklen und Stabilität | 30s |
|
|
| `T04` | **Read Performance** | Sequential und Random Read-Geschwindigkeit | 60s |
|
|
| `T05` | **Write Performance** | Sequential und Random Write-Geschwindigkeit | 60s |
|
|
| `T06` | **File Operations** | Create, Copy, Delete, Rename Operationen | 45s |
|
|
| `T07` | **Permission System** | Linux-Permissions und NTFS-ACLs | 15s |
|
|
| `T08` | **SMB Readiness** | SMB-Freigabe Kompatibilität und Performance | 30s |
|
|
| `T09` | **Capacity Verification** | Verfügbarer Speicher und Fragmentierung | 20s |
|
|
| `T10` | **Error Handling** | Fehlerbehandlung und Recovery-Mechanismen | 25s |
|
|
| `T11` | **Security Scan** | Access-Control und Encryption-Support | 40s |
|
|
|
|
## Verwendung
|
|
|
|
### Grundlegende Test-Ausführung
|
|
```bash
|
|
# Alle Tests ausführen
|
|
./ssd-test-suite.sh all
|
|
|
|
# Spezifischen Test ausführen
|
|
./ssd-test-suite.sh T01
|
|
|
|
# Test-Kategorie ausführen
|
|
./ssd-test-suite.sh --category hardware
|
|
./ssd-test-suite.sh --category performance
|
|
./ssd-test-suite.sh --category integration
|
|
```
|
|
|
|
### Erweiterte Test-Optionen
|
|
```bash
|
|
# Schnelle Tests (nur kritische)
|
|
./ssd-test-suite.sh --quick
|
|
|
|
# Umfassende Tests (alle mit erweiterten Parametern)
|
|
./ssd-test-suite.sh --comprehensive
|
|
|
|
# Performance-Benchmark
|
|
./ssd-test-suite.sh --benchmark
|
|
|
|
# Kontinuierliche Tests
|
|
./ssd-test-suite.sh --continuous --interval 300
|
|
```
|
|
|
|
### Output-Formate
|
|
```bash
|
|
# Standard-Output (Human-readable)
|
|
./ssd-test-suite.sh all
|
|
|
|
# JSON-Output für Automation
|
|
./ssd-test-suite.sh all --output json
|
|
|
|
# XML-Report für CI/CD
|
|
./ssd-test-suite.sh all --output xml
|
|
|
|
# CSV für Datenanalyse
|
|
./ssd-test-suite.sh all --output csv
|
|
```
|
|
|
|
## Test-Konfiguration
|
|
|
|
### Environment Variables
|
|
```bash
|
|
# Test-Timeout (Sekunden)
|
|
export SSD_TEST_TIMEOUT=300
|
|
|
|
# Performance-Test Größe (MB)
|
|
export SSD_TEST_SIZE=100
|
|
|
|
# Test-Wiederholungen
|
|
export SSD_TEST_ITERATIONS=3
|
|
|
|
# Benchmark-Modus
|
|
export SSD_BENCHMARK_MODE=true
|
|
```
|
|
|
|
### Konfigurationsdatei
|
|
```bash
|
|
# /etc/ssd-test/config.conf
|
|
TEST_MOUNT_POINT="/mnt/ssd-storage"
|
|
TEST_DATA_SIZE="100MB"
|
|
PERFORMANCE_THRESHOLD_READ="50MB/s"
|
|
PERFORMANCE_THRESHOLD_WRITE="30MB/s"
|
|
SMB_TEST_ENABLED=true
|
|
SECURITY_SCAN_ENABLED=true
|
|
```
|
|
|
|
## Test-Details
|
|
|
|
### Hardware-Tests (T01-T03)
|
|
|
|
#### T01: Hardware Detection
|
|
```bash
|
|
# Prüft USB-C Connectivity
|
|
- Device-Erkennung im System
|
|
- USB-Version und Geschwindigkeit
|
|
- Power-Management Status
|
|
- Device-Descriptor Validierung
|
|
```
|
|
|
|
#### T02: NTFS Filesystem
|
|
```bash
|
|
# Validiert NTFS-Kompatibilität
|
|
- Dateisystem-Typ Verifikation
|
|
- NTFS-Version Kompatibilität
|
|
- Journal-Status Prüfung
|
|
- Cluster-Size Optimierung
|
|
```
|
|
|
|
#### T03: Mount Stability
|
|
```bash
|
|
# Testet Mount/Unmount Zyklen
|
|
- 10x Mount/Unmount Zyklen
|
|
- Concurrent-Access Tests
|
|
- Mount-Option Validierung
|
|
- Recovery nach Fehlern
|
|
```
|
|
|
|
### Performance-Tests (T04-T06)
|
|
|
|
#### T04: Read Performance
|
|
```bash
|
|
# Sequential Read Test
|
|
dd if=/mnt/ssd-storage/testfile of=/dev/null bs=1M count=100
|
|
|
|
# Random Read Test (4K Blocks)
|
|
fio --name=random-read --ioengine=libaio --rw=randread --bs=4k --size=100M
|
|
```
|
|
|
|
#### T05: Write Performance
|
|
```bash
|
|
# Sequential Write Test
|
|
dd if=/dev/zero of=/mnt/ssd-storage/testfile bs=1M count=100
|
|
|
|
# Random Write Test (4K Blocks)
|
|
fio --name=random-write --ioengine=libaio --rw=randwrite --bs=4k --size=100M
|
|
```
|
|
|
|
#### T06: File Operations
|
|
```bash
|
|
# Standard File-Operations
|
|
- 1000 kleine Dateien erstellen (1KB)
|
|
- 100 mittlere Dateien erstellen (1MB)
|
|
- 10 große Dateien erstellen (10MB)
|
|
- Copy, Move, Delete Operationen
|
|
- Symlink und Hardlink Tests
|
|
```
|
|
|
|
### Integration-Tests (T07-T09)
|
|
|
|
#### T07: Permission System
|
|
```bash
|
|
# Linux-Permissions testen
|
|
chmod 755 /mnt/ssd-storage/testdir
|
|
chown user:group /mnt/ssd-storage/testfile
|
|
|
|
# NTFS-ACL Kompatibilität
|
|
setfacl -m u:user:rwx /mnt/ssd-storage/testdir
|
|
```
|
|
|
|
#### T08: SMB Readiness
|
|
```bash
|
|
# SMB-Kompatibilität prüfen
|
|
- Windows-Filename Kompatibilität
|
|
- Extended Attributes Support
|
|
- Case-Sensitivity Tests
|
|
- Unicode-Filename Support
|
|
- SMB-Performance Simulation
|
|
```
|
|
|
|
#### T09: Capacity Verification
|
|
```bash
|
|
# Speicher-Analyse
|
|
df -h /mnt/ssd-storage
|
|
du -sh /mnt/ssd-storage/*
|
|
|
|
# Fragmentierung prüfen
|
|
fsck.ntfs -f /dev/sdb1
|
|
```
|
|
|
|
### Security-Tests (T10-T11)
|
|
|
|
#### T10: Error Handling
|
|
```bash
|
|
# Fehlerbehandlung testen
|
|
- Disk-Full Simulation
|
|
- Permission-Denied Scenarios
|
|
- Network-Interruption (bei SMB)
|
|
- Hardware-Disconnect Simulation
|
|
```
|
|
|
|
#### T11: Security Scan
|
|
```bash
|
|
# Security-Features prüfen
|
|
- Access-Control Lists (ACLs)
|
|
- Encryption-Support Detection
|
|
- Secure-Delete Capabilities
|
|
- Audit-Trail Funktionalität
|
|
```
|
|
|
|
## Benchmark-Modus
|
|
|
|
### Performance-Metriken
|
|
```bash
|
|
# Detaillierte Performance-Analyse
|
|
./ssd-test-suite.sh --benchmark --detailed
|
|
|
|
# Vergleich mit Referenz-Werten
|
|
./ssd-test-suite.sh --benchmark --compare baseline.json
|
|
|
|
# Performance-Trend Analyse
|
|
./ssd-test-suite.sh --benchmark --trend --days 30
|
|
```
|
|
|
|
### Benchmark-Output
|
|
```json
|
|
{
|
|
"device": "/dev/sdb1",
|
|
"timestamp": "2025-08-07T19:10:00Z",
|
|
"performance": {
|
|
"sequential_read": "120 MB/s",
|
|
"sequential_write": "85 MB/s",
|
|
"random_read_4k": "15000 IOPS",
|
|
"random_write_4k": "8000 IOPS",
|
|
"latency_avg": "2.5ms"
|
|
},
|
|
"health": {
|
|
"temperature": "45°C",
|
|
"wear_level": "2%",
|
|
"error_count": 0
|
|
}
|
|
}
|
|
```
|
|
|
|
## CI/CD Integration
|
|
|
|
### Jenkins Pipeline
|
|
```groovy
|
|
pipeline {
|
|
agent any
|
|
stages {
|
|
stage('SSD Tests') {
|
|
steps {
|
|
sh './ssd-test-suite.sh all --output xml'
|
|
publishTestResults testResultsPattern: 'ssd-test-results.xml'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### GitHub Actions
|
|
```yaml
|
|
name: SSD Tests
|
|
on: [push, pull_request]
|
|
jobs:
|
|
test:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Run SSD Tests
|
|
run: ./ssd-test-suite.sh all --output json
|
|
```
|
|
|
|
## Monitoring Integration
|
|
|
|
### Prometheus-Metriken
|
|
```bash
|
|
# Metriken exportieren
|
|
./ssd-test-suite.sh --prometheus-metrics
|
|
|
|
# Grafana-Dashboard
|
|
# Siehe examples/monitoring/grafana-dashboard.json
|
|
```
|
|
|
|
### Alerting
|
|
```bash
|
|
# Performance-Alerts
|
|
if [ $READ_SPEED -lt 50 ]; then
|
|
alert "SSD Read Performance below threshold"
|
|
fi
|
|
|
|
# Health-Alerts
|
|
if [ $ERROR_COUNT -gt 0 ]; then
|
|
alert "SSD Errors detected"
|
|
fi
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Häufige Test-Fehler
|
|
1. **T01 Failed**: USB-Verbindung prüfen, Treiber aktualisieren
|
|
2. **T04/T05 Slow**: SSD-Health prüfen, USB-Port wechseln
|
|
3. **T08 Failed**: SMB-Packages installieren, Firewall prüfen
|
|
|
|
### Debug-Modus
|
|
```bash
|
|
# Erweiterte Diagnose
|
|
./ssd-test-suite.sh all --debug --verbose
|
|
|
|
# Test-Logs analysieren
|
|
tail -f /var/log/ssd-test.log
|
|
```
|
|
|
|
## Best Practices
|
|
|
|
### Produktionsumgebung
|
|
1. **Regelmäßige Tests** (täglich/wöchentlich) einrichten
|
|
2. **Performance-Baselines** etablieren und überwachen
|
|
3. **Test-Ergebnisse archivieren** für Trend-Analyse
|
|
4. **Automatische Alerts** bei Test-Fehlern konfigurieren
|
|
|
|
### Entwicklungsumgebung
|
|
1. **Quick-Tests** vor Code-Changes ausführen
|
|
2. **Comprehensive-Tests** vor Releases durchführen
|
|
3. **Benchmark-Vergleiche** für Performance-Regression
|
|
4. **Test-Coverage** für alle SSD-Typen sicherstellen
|
|
|
|
## Changelog
|
|
|
|
### Version 0.1.0
|
|
- 11 umfassende Test-Kategorien
|
|
- Performance-Benchmark Integration
|
|
- SMB-Bereitschaftsprüfung
|
|
- CI/CD Pipeline Support
|
|
- Prometheus-Metriken Export
|