Files
homelab-optimized/docs/diagrams/storage-topology.md
Gitea Mirror Bot 3cb5034cc6
Some checks failed
Documentation / Build Docusaurus (push) Failing after 18m5s
Documentation / Deploy to GitHub Pages (push) Has been skipped
Sanitized mirror from private repository - 2026-03-20 09:49:40 UTC
2026-03-20 09:49:40 +00:00

303 lines
29 KiB
Markdown

# 💾 Storage Topology
## Overview
This document details the storage architecture across the NAS cluster, including capacity, RAID configurations, and backup flows.
---
## 📊 Storage Overview (Mermaid)
```mermaid
graph TB
subgraph Concord["🏠 Concord, CA - Primary Storage"]
subgraph Atlantis["🏛️ Atlantis (DS1823xs+)"]
ATL_VOL1["Volume 1 (Encrypted)<br/>128TB Raw / 84TB Usable<br/>8x 16TB IronWolf Pro<br/>RAID 6 - 31TB Used (37%)"]
ATL_VOL2["Volume 2 (NVMe)<br/>885GB - 176GB Used<br/>RAID 1"]
ATL_CACHE["NVMe Cache<br/>4x NVMe SSDs"]
ATL_DOCKER["/volume1/docker<br/>Container Data"]
ATL_MEDIA["/volume1/media<br/>Movies, TV, Music"]
ATL_PHOTOS["/volume2/photo<br/>Synology Photos"]
ATL_DOCS["/volume1/documents<br/>Paperless-NGX"]
ATL_BACKUP["/volume1/backups<br/>System Backups"]
end
subgraph Calypso["🏢 Calypso (DS723+)"]
CAL_VOL1["Volume 1 (Encrypted)<br/>24TB Raw / 11TB Usable<br/>2x 12TB IronWolf Pro<br/>RAID 1 - 4.5TB Used (43%)"]
CAL_CACHE["NVMe Cache<br/>2x 500GB Crucial P3 Plus<br/>RAID 1"]
CAL_DOCKER["/volume1/docker<br/>Container Data"]
CAL_DATA["/volume1/data<br/>Dev Files"]
CAL_BACKUP["/volume1/backups<br/>Atlantis Backups"]
end
subgraph Guava["💻 Guava (TrueNAS Scale)"]
GUA_BOOT["boot-pool<br/>500GB NVMe<br/>447GB Avail"]
GUA_DATA["data (ZFS Mirror)<br/>2x 4TB WD Blue SSD<br/>3.62TB - 1.59TB Avail<br/>1.71x Dedup"]
GUA_JELLY["/mnt/data/jellyfin<br/>145GB Media"]
GUA_PHOTOS["/mnt/data/photos<br/>158GB Photos"]
GUA_LLAMA["/mnt/data/llama<br/>58.7GB LLM Models"]
end
end
subgraph Tucson["🌵 Tucson, AZ - Remote Storage"]
subgraph Setillo["🏛️ Setillo (DS223j)"]
SET_VOL1["Volume 1<br/>20TB Raw / 8.9TB Usable<br/>2x 10TB WD Gold<br/>SHR-1 - 4.0TB Used (46%)"]
SET_DOCKER["/volume1/docker<br/>Container Data"]
SET_SYNC["/volume1/syncthing<br/>Syncthing Data"]
SET_BACKUP["/volume1/backups<br/>Remote Backups"]
SET_PLEX["/volume1/PlexMediaServer<br/>Plex Data"]
end
end
%% Backup flows
ATL_MEDIA -->|"Hyper Backup<br/>(Weekly)"| CAL_BACKUP
ATL_PHOTOS -->|"Hyper Backup<br/>(Daily)"| CAL_BACKUP
ATL_DOCS -->|"Hyper Backup<br/>(Daily)"| CAL_BACKUP
ATL_DOCKER -->|"Syncthing<br/>(Real-time)"| SET_SYNC
CAL_DOCKER -->|"Syncthing<br/>(Real-time)"| SET_SYNC
%% Cache acceleration
ATL_CACHE -.->|"Accelerates"| ATL_VOL1
CAL_CACHE -.->|"Accelerates"| CAL_VOL1
classDef primary fill:#3498db,stroke:#333,stroke-width:2px,color:#fff
classDef secondary fill:#2ecc71,stroke:#333,stroke-width:2px,color:#fff
classDef remote fill:#9b59b6,stroke:#333,stroke-width:2px,color:#fff
classDef cache fill:#f39c12,stroke:#333,stroke-width:2px,color:#fff
classDef folder fill:#ecf0f1,stroke:#333,stroke-width:1px,color:#333
class ATL_VOL1 primary
class CAL_VOL1 secondary
class SET_VOL1 remote
class ATL_CACHE,CAL_CACHE cache
class ATL_DOCKER,ATL_MEDIA,ATL_PHOTOS,ATL_DOCS,ATL_BACKUP,CAL_DOCKER,CAL_APT,CAL_BACKUP,SET_SYNC folder
```
---
## 📝 ASCII Storage Layout
```
╔══════════════════════════════════════════════════════════════════════════════════════════╗
║ STORAGE TOPOLOGY ║
║ 3 NAS Units • 152TB Raw • Cross-Location Backup ║
╚══════════════════════════════════════════════════════════════════════════════════════════╝
┌─────────────────────────────────────────────────────────────────────────────────────────┐
│ 🏛️ ATLANTIS - Primary Storage (Concord, CA) │
│ ═══════════════════════════════════════════════════════════════════════════════════════│
│ │
│ Model: Synology DS1823xs+ (8-Bay Enterprise) │
│ │
│ ┌─────────────────────────────────────────────────────────────────────────────────┐ │
│ │ STORAGE POOL 1 │ │
│ │ ═══════════════ │ │
│ │ │ │
│ │ Drive Configuration: │ │
│ │ ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ │ │
│ │ │ Bay1 │ Bay2 │ Bay3 │ Bay4 │ Bay5 │ Bay6 │ Bay7 │ Bay8 │ │ │
│ │ │ 16TB │ 16TB │ 16TB │ 16TB │ 16TB │ 16TB │ 16TB │ 16TB │ │ │
│ │ │IronWf│IronWf│IronWf│IronWf│IronWf│IronWf│IronWf│IronWf│ │ │
│ │ │ Pro │ Pro │ Pro │ Pro │ Pro │ Pro │ Pro │ Pro │ │ │
│ │ └──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┘ │ │
│ │ │ │
│ │ Raw Capacity: 128 TB │ │
│ │ RAID Type: RAID 6 (2-drive fault tolerance) │ │
│ │ Usable: ~96 TB │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────────────────────────┐ │
│ │ NVMe CACHE (M.2 Slots) │ │
│ │ ═══════════════════════ │ │
│ │ ┌──────────────────┐ ┌──────────────────┐ │ │
│ │ │ M.2 Slot 1 │ │ M.2 Slot 2 │ │ │
│ │ │ WD Black SN750 │ │ WD Black SN750 │ │ │
│ │ │ SE 500GB NVMe │ │ SE 500GB NVMe │ │ │
│ │ └──────────────────┘ └──────────────────┘ │ │
│ │ Cache Type: Read-Write Cache Hit: ~99% │ │
│ └─────────────────────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────────────────────────┐ │
│ │ FOLDER STRUCTURE │ │
│ │ ════════════════ │ │
│ │ │ │
│ │ /volume1/ │ │
│ │ ├── docker/ (~2 TB) Container persistent data │ │
│ │ │ ├── plex/ Plex metadata & transcodes │ │
│ │ │ ├── immich/ Photo library database │ │
│ │ │ ├── paperless/ Document database │ │
│ │ │ ├── grafana/ Dashboards & config │ │
│ │ │ ├── prometheus/ Metrics database │ │
│ │ │ └── ... (50+ services) │ │
│ │ │ │ │
│ │ ├── media/ (~60 TB) Media library │ │
│ │ │ ├── movies/ 4K & HD movies │ │
│ │ │ ├── tv/ TV series │ │
│ │ │ ├── music/ Music library │ │
│ │ │ └── books/ eBooks & audiobooks │ │
│ │ │ │ │
│ │ ├── photos/ (~5 TB) Immich photo library │ │
│ │ │ ├── library/ Original photos │ │
│ │ │ ├── thumbs/ Thumbnails │ │
│ │ │ └── encoded/ Transcoded videos │ │
│ │ │ │ │
│ │ ├── documents/ (~500 GB) Paperless-NGX documents │ │
│ │ │ ├── consume/ Incoming documents │ │
│ │ │ ├── archive/ Processed documents │ │
│ │ │ └── export/ Exported documents │ │
│ │ │ │ │
│ │ ├── backups/ (~10 TB) Local backup storage │ │
│ │ │ ├── hyper-backup/ Synology backups │ │
│ │ │ ├── time-machine/ Mac backups │ │
│ │ │ └── manual/ Manual backups │ │
│ │ │ │ │
│ │ └── archive/ (~15 TB) Long-term cold storage │ │
│ │ ├── old-projects/ │ │
│ │ └── raw-footage/ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────────────────┐
│ 🏢 CALYPSO - Secondary Storage (Concord, CA) │
│ ═══════════════════════════════════════════════════════════════════════════════════════│
│ │
│ Model: Synology DS723+ (2-Bay Plus) │
│ │
│ ┌─────────────────────────────────────────────────────────────────────────────────┐ │
│ │ STORAGE POOL 1 │ │
│ │ ═══════════════ │ │
│ │ ┌──────────────────┐ ┌──────────────────┐ │ │
│ │ │ Bay 1 │ │ Bay 2 │ │ │
│ │ │ Seagate 12TB │ │ Seagate 12TB │ │ │
│ │ │ IronWolf Pro │ │ IronWolf Pro │ │ │
│ │ │ ST12000VN0008 │ │ ST12000VN0008 │ │ │
│ │ └──────────────────┘ └──────────────────┘ │ │
│ │ │ │
│ │ Raw Capacity: 24 TB │ │
│ │ RAID Type: SHR-1 (1-drive fault tolerance) │ │
│ │ Usable: ~10.9 TB │ │
│ └─────────────────────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────────────────────────┐ │
│ │ NVMe CACHE │ │
│ │ ═══════════ │ │
│ │ ┌──────────────────┐ ┌──────────────────┐ │ │
│ │ │ Crucial P3 Plus │ │ Crucial P3 Plus │ │ │
│ │ │ 500GB NVMe │ │ 500GB NVMe │ │ │
│ │ └──────────────────┘ └──────────────────┘ │ │
│ │ Cache: 465GB allocated (RAID 1) Hit Rate: 99% │ │
│ └─────────────────────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────────────────────────┐ │
│ │ FOLDER STRUCTURE │ │
│ │ ════════════════ │ │
│ │ /volume1/ │ │
│ │ ├── docker/ (~500 GB) Container data (17 services) │ │
│ │ ├── apt-cache/ (~50 GB) Debian package cache │ │
│ │ ├── backups/ (~8 TB) Atlantis backup destination │ │
│ │ │ ├── hyper-backup/ Encrypted backups from Atlantis │ │
│ │ │ └── active-backup/ PC/Server backups │ │
│ │ └── dev/ (~200 GB) Development files │ │
│ └─────────────────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────────────────┐
│ 🌵 SETILLO - Remote Storage (Tucson, AZ) │
│ ═══════════════════════════════════════════════════════════════════════════════════════│
│ │
│ Model: Synology DS223j (2-Bay Value) │
│ CPU: ARM Cortex-A55 Quad-Core (Realtek RTD1619B) │
│ RAM: 1GB DDR4 │
│ DSM: 7.3.2-86009 Update 1 │
│ │
│ ┌─────────────────────────────────────────────────────────────────────────────────┐ │
│ │ STORAGE POOL 1 │ │
│ │ ═══════════════ │ │
│ │ ┌──────────────────┐ ┌──────────────────┐ │ │
│ │ │ Bay 1 │ │ Bay 2 │ │ │
│ │ │ WD Gold 10TB │ │ WD Gold 10TB │ │ │
│ │ │ WD102KRYZ │ │ WD102KRYZ │ │ │
│ │ │ Temp: 38-40°C │ │ Temp: 42-45°C │ │ │
│ │ └──────────────────┘ └──────────────────┘ │ │
│ │ │ │
│ │ Raw Capacity: 20 TB │ │
│ │ RAID Type: SHR-1 (1-drive fault tolerance) │ │
│ │ Usable: ~8.9 TB │ │
│ │ Used: ~4.0 TB (46%) │ │
│ │ Available: ~4.8 TB │ │
│ └─────────────────────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────────────────────────┐ │
│ │ FOLDER STRUCTURE │ │
│ │ ════════════════ │ │
│ │ /volume1/ │ │
│ │ ├── docker/ Container data │ │
│ │ ├── syncthing/ Syncthing real-time replication │ │
│ │ ├── backups/ Remote backup destination │ │
│ │ ├── PlexMediaServer/ Plex media data │ │
│ │ ├── NetBackup/ Network backup storage │ │
│ │ ├── surveillance/ Surveillance Station recordings │ │
│ │ └── homes/ User home directories │ │
│ └─────────────────────────────────────────────────────────────────────────────────┘ │
│ │
│ Installed Packages: REDACTED_APP_PASSWORD, Syncthing, Tailscale, PlexMediaServer, │
│ HyperBackup, SurveillanceStation, Git, WebDAVServer │
│ │
└─────────────────────────────────────────────────────────────────────────────────────────┘
╔════════════════════════════════════════════════════════════════════════════════════════╗
║ BACKUP STRATEGY ║
║ ═══════════════ ║
║ ║
║ ┌─────────────────┐ Weekly ┌─────────────────┐ ║
║ │ ATLANTIS │ ───────────────► │ CALYPSO │ (Hyper Backup, encrypted) ║
║ │ (Primary Data) │ │ (Local Backup) │ ║
║ └─────────────────┘ └─────────────────┘ ║
║ │ │ ║
║ │ Real-time (Syncthing) │ ║
║ ▼ ▼ ║
║ ┌─────────────────────────────────────────────────────────────────────────┐ ║
║ │ SETILLO (Tucson - Off-site) │ ║
║ │ Geographic redundancy, 1000+ miles away │ ║
║ └─────────────────────────────────────────────────────────────────────────┘ ║
║ ║
║ 3-2-1 Backup Rule: ║
║ • 3 copies of data (Atlantis + Calypso + Setillo) ║
║ • 2 different storage types (NAS + NAS w/different RAID) ║
║ • 1 off-site location (Tucson) ║
╚════════════════════════════════════════════════════════════════════════════════════════╝
```
---
## 📊 Storage Capacity Summary (Verified Feb 2025)
| System | Raw Capacity | Usable | Used | RAID | Drives | Location |
|--------|--------------|--------|------|------|--------|----------|
| Atlantis Vol1 | 128 TB | ~84 TB | 31TB (37%) | RAID 6 | 8x 16TB IronWolf Pro | Concord |
| Atlantis Vol2 | 0.9 TB | 0.9 TB | 176GB (20%) | RAID 1 | 2x NVMe | Concord |
| Calypso | 24 TB | ~11 TB | 4.5TB (43%) | RAID 1 | 2x 12TB IronWolf Pro | Concord |
| Guava | 8 TB | 3.6 TB | 2.0TB (56%) | ZFS Mirror | 2x 4TB WD Blue SSD | Concord |
| Setillo | 20 TB | ~8.9 TB | 4.0TB (46%) | SHR-1 | 2x 10TB WD Gold | Tucson |
| **Total** | **~181 TB** | **~108 TB** | **~42TB** | - | **16 drives** | - |
---
## 🔗 Related Diagrams
- [10GbE Backbone](10gbe-backbone.md) - High-speed network for storage
- [Service Architecture](service-architecture.md) - What uses this storage
- [Network Topology](network-topology.md) - How storage is accessed