cyberdeck/docs/storage-architecture.md
BarnacleBoy 3c11190822 update all docs: Orange Pi 3B 8GB purchased (89)
- docs/sbc-selection.md: full rewrite for OPi 3B specs (RK3566, 8GB, 256GB eMMC, built-in WiFi)
- README.md: SBC description, checklist, components table, quick ref, cost estimate
- docs/parts-list.md: SBC marked purchased, eMMC/controller/WiFi changes
- docs/design-decisions.md: WiFi exclusion reason, native eDP, power input
- docs/salvage-analysis.md: WiFi card not needed, cooling fan, summary tables
- docs/storage-architecture.md: rewritten for 256GB eMMC primary boot
- docs/usb-expansion.md: 2x USB3 native, port allocation, power budget
- docs/port-layout.md: OPi3B port differences (eDP, power-only USB-C, built-in WiFi)
- docs/power-system.md: lower power draw context
2026-05-24 06:51:26 +00:00

176 lines
No EOL
5.2 KiB
Markdown

# Storage Architecture
**Strategy:** 256GB onboard eMMC for boot/root/data. SD card and M.2 for expansion.
---
## Design Principles
1. **Simplicity:** eMMC boots out of the box, faster and more reliable than SD
2. **Speed:** eMMC ~300 MB/s read — comparable to a SATA SSD
3. **Capacity:** 256GB onboard is plenty for OS + apps + projects + media
4. **Flexibility:** MicroSD and M.2 slots available for expansion
5. **Cost:** Included with SBC — no separate purchase needed
---
## Layer 1: Boot/Root (eMMC)
The Orange Pi 3B boots from its onboard 256GB eMMC by default. This is the primary storage:
### eMMC Performance
| Attribute | Value |
|-----------|-------|
| Capacity | 256GB |
| Interface | eMMC 5.1 |
| Sequential read | ~300 MB/s |
| Sequential write | ~200 MB/s |
| Reliability | Significantly better than SD cards |
### Partition Layout (Suggested)
```
/dev/mmcblk1 (eMMC, 256GB)
├── /dev/mmcblk1p1 → /boot (fat32, ~500MB)
├── /dev/mmcblk1p2 → / (ext4, ~80GB)
├── /dev/mmcblk1p3 → /home (ext4, ~170GB)
└── (remaining for swap or data)
```
Or simpler:
```
/dev/mmcblk1p1 → /boot (fat32, ~500MB)
/dev/mmcblk1p2 → / (ext4, all remaining)
/home → subdirectory, not separate partition
```
256GB is large enough that separate partitions are optional. A single root partition with everything under it works fine.
### Boot Configuration
Default OPi3B boots from eMMC when populated. No configuration needed.
---
## Layer 2: Expansion (MicroSD + M.2)
### MicroSD
| Attribute | Value |
|-----------|-------|
| Slot | Standard push-push |
| Max capacity | Up to 512GB |
| Use | Backup, media library, test OS images |
No need for endurance-rated card — the SD slot is now secondary storage, not primary boot.
### M.2 M-key
| Interface | Speed | Notes |
|-----------|-------|-------|
| PCIe 2.0 x1 | ~300 MB/s | Slightly slower than eMMC |
| SATA III | ~550 MB/s | Faster than eMMC (if SATA SSD) |
Can add NVMe or SATA SSD for bulk storage if 256GB eMMC fills up. M.2 slot shares bandwidth with USB 3.0 — both use the same PCIe controller.
---
## Layer 3: Data Storage (USB)
Optional external storage for:
- Large media libraries
- Project archives
- System backups
### Options
| Option | Speed | Cost | Notes |
|--------|-------|------|-------|
| USB 3.0 SATA enclosure | ~400 MB/s | $10-15 | Reuse 2.5" drives |
| USB 3.0 NVMe enclosure | ~400 MB/s | $8-15 | Compact |
| USB flash drive (fast) | 200-400 MB/s | $15-25 | Kingston, Samsung BAR |
### Mount Strategy
```bash
# /etc/fstab (optional USB storage)
UUID=<ssd-uuid> /mnt/data ext4 defaults,noatime 0 2
/mnt/data/projects /home/jez/projects none bind 0 0
/mnt/data/media /home/jez/media none bind 0 0
```
---
## Storage Layout
```
┌─────────────────────────────────────┐
│ eMMC (/dev/mmcblk1) │
│ 256GB onboard │
│ ├── /boot (fat32, 500MB) │
│ ├── / (ext4, ~80GB) │
│ └── /home (ext4, ~175GB) │
│ OS + apps + projects + media │
└─────────────────────────────────────┘
┌─────────────────────────────────────┐
│ MicroSD (/dev/mmcblk0) │
│ Optional expansion │
│ ├── OS images / boot tests │
│ └── Media library / backups │
└─────────────────────────────────────┘
┌─────────────────────────────────────┐
│ USB SSD (/dev/sda) │
│ Optional — only if eMMC fills up │
│ ├── /mnt/data/projects │
│ ├── /mnt/data/media │
│ └── /mnt/data/backup │
└─────────────────────────────────────┘
```
---
## Backup Strategy
### eMMC Imaging
```bash
# Backup entire eMMC to USB drive
sudo dd if=/dev/mmcblk1 of=/mnt/data/cyberdeck-emmc-backup.img bs=4M status=progress
# Restore
sudo dd if=/mnt/data/cyberdeck-emmc-backup.img of=/dev/mmcblk1 bs=4M status=progress
```
### Data Backup
- Timeshift for system snapshots
- rsync to external drive
- Cloud sync for critical files
---
## Performance Expectations
| Operation | eMMC | MicroSD | USB SSD |
|-----------|------|---------|---------|
| Boot time | ~5-8s | ~10-15s | ~5-8s |
| App launch | 0.5-1s | 1-3s | 0.5-1s |
| File read (1GB) | ~3-4s | ~40-90s | ~3-5s |
| Reliability | Excellent | Poor (wear) | Good |
eMMC is the clear winner for boot and everyday use. SD card and USB storage are optional extras.
---
## Cost Summary
| Item | Low | High | Status |
|------|-----|------|--------|
| 256GB eMMC | $0 | $0 | **Included with SBC** |
| MicroSD (optional) | $0 | $15 | Only if needed |
| USB enclosure (optional) | $0 | $15 | Only if eMMC fills up |
| **Total** | **$0** | **$30** | |