365 lines
35 KiB
Markdown
365 lines
35 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 RAID 1)<br/>885GB - 176GB Used<br/>2x NVMe via PCIe E10M20-T1"]
|
|
ATL_CACHE["R/W Cache<br/>2x WD Black SN750 SE 500GB<br/>(built-in M.2 slots)"]
|
|
|
|
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/>464GB NVMe (WD Black SN770)<br/>433GB Avail"]
|
|
GUA_DATA["data (ZFS Mirror)<br/>2x 4TB WD Blue SA510 SATA<br/>3.62TB total, 1.53TB Avail<br/>1.69x Dedup, 57% used"]
|
|
|
|
GUA_JELLY["/mnt/data/jellyfin<br/>204GB Media"]
|
|
GUA_PHOTOS["/mnt/data/photos<br/>159GB Photos"]
|
|
GUA_LLAMA["/mnt/data/llama<br/>64GB LLM Models"]
|
|
GUA_TURQUOISE["/mnt/data/guava_turquoise<br/>3.0TB Personal Data"]
|
|
GUA_NFS["/mnt/atlantis_media<br/>NFS from Atlantis (84TB)"]
|
|
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/>RAID 1 - 4.0TB Used (46%)"]
|
|
|
|
SET_DOCKER["/volume1/docker<br/>Container Data"]
|
|
SET_SYNC["/volume1/syncthing<br/>Syncthing Replication"]
|
|
SET_BACKUP["/volume1/backups<br/>Remote Backup Destination"]
|
|
SET_PLEX["/volume1/PlexMediaServer<br/>Plex Media"]
|
|
SET_SURV["/volume1/surveillance<br/>Surveillance Station"]
|
|
SET_NET["/volume1/NetBackup<br/>Network Backup Storage"]
|
|
end
|
|
end
|
|
|
|
subgraph Cloud["☁️ Backblaze B2 (Cloud Backup)"]
|
|
B2_ATL["vk-atlantis Bucket<br/>Weekly (Sun 00:00)<br/>Encrypted + Versioned"]
|
|
B2_CAL["vk-concord-1 Bucket<br/>Daily (00:00)<br/>Encrypted + Versioned"]
|
|
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
|
|
|
|
%% Cloud backup flows
|
|
ATL_MEDIA -->|"HyperBackup<br/>S3 (Weekly)"| B2_ATL
|
|
ATL_PHOTOS -->|"HyperBackup<br/>S3 (Weekly)"| B2_ATL
|
|
CAL_DOCKER -->|"HyperBackup<br/>S3 (Daily)"| B2_CAL
|
|
|
|
%% 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 DRIVES (4x NVMe total) │ │
|
|
│ │ ═══════════════════════════ │ │
|
|
│ │ │ │
|
|
│ │ Built-in M.2 Slots (R/W Cache for Volume 1): │ │
|
|
│ │ ┌──────────────────┐ ┌──────────────────┐ │ │
|
|
│ │ │ 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% │ │
|
|
│ │ │ │
|
|
│ │ PCIe E10M20-T1 Expansion (Volume 2 — RAID 1): │ │
|
|
│ │ ┌──────────────────┐ ┌──────────────────┐ │ │
|
|
│ │ │ PCIe NVMe 1 │ │ PCIe NVMe 2 │ │ │
|
|
│ │ │ 885GB RAID 1 │ │ (mirror) │ │ │
|
|
│ │ │ Photos/metadata │ │ │ │ │
|
|
│ │ └──────────────────┘ └──────────────────┘ │ │
|
|
│ │ Volume 2: 885GB total, 176GB used (20%) │ │
|
|
│ └─────────────────────────────────────────────────────────────────────────────────┘ │
|
|
│ │
|
|
│ ┌─────────────────────────────────────────────────────────────────────────────────┐ │
|
|
│ │ 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) ║
|
|
║ • PLUS cloud backup to Backblaze B2 ║
|
|
╚════════════════════════════════════════════════════════════════════════════════════════╝
|
|
|
|
╔════════════════════════════════════════════════════════════════════════════════════════╗
|
|
║ CLOUD BACKUP — BACKBLAZE B2 ║
|
|
║ ═══════════════════════════ ║
|
|
║ ║
|
|
║ Atlantis → Backblaze B2 (Weekly, Sundays 00:00) ║
|
|
║ Bucket: vk-atlantis ║
|
|
║ Endpoint: s3.us-west-004.backblazeb2.com ║
|
|
║ Folders: /archive, /documents, /downloads, /photo, /homes/vish/Photos ║
|
|
║ Apps: SynologyPhotos, SynologyDrive, FileStation, HyperBackup ║
|
|
║ Encrypted: Yes Versioned: Yes (Smart Recycle) ║
|
|
║ Task: "Backblaze b2" (ID 20, enabled) ║
|
|
║ ║
|
|
║ Calypso → Backblaze B2 (Daily, 00:00) ║
|
|
║ Bucket: vk-concord-1 ║
|
|
║ Endpoint: s3.us-west-004.backblazeb2.com ║
|
|
║ Folders: /docker/authentik, /docker/gitea, /docker/headscale, ║
|
|
║ /docker/immich, /docker/paperlessngx, /docker/seafile, ║
|
|
║ /data/media/misc, /data/media/music, /data/media/photos ║
|
|
║ Apps: Gitea, MariaDB10, CloudSync, Authentik, Immich, Paperless ║
|
|
║ Encrypted: Yes Versioned: Yes (Smart Recycle) ║
|
|
║ Task: "Backblaze S3" (ID 3, enabled) ║
|
|
║ ║
|
|
║ Note: Also an old disabled task "Backblaze S3 Atlantis" (ID 12) — weekly Sun 03:00 ║
|
|
╚════════════════════════════════════════════════════════════════════════════════════════╝
|
|
```
|
|
|
|
---
|
|
|
|
## 📊 Storage Capacity Summary (Verified Feb 2025)
|
|
|
|
| System | Raw Capacity | Usable | Used | RAID | Drives | Location |
|
|
|--------|--------------|--------|------|------|--------|----------|
|
|
| Atlantis Vol1 | 128 TB | ~84 TB | 39TB (46%) | RAID 6 | 8x 16TB IronWolf Pro | Concord |
|
|
| Atlantis Vol2 | 0.9 TB | 0.9 TB | 176GB (20%) | RAID 1 | 2x NVMe (PCIe) | Concord |
|
|
| Atlantis Cache | 1 TB | N/A | N/A | R/W Cache | 2x 500GB WD Black SN750 SE (M.2) | Concord |
|
|
| Calypso Vol1 | 24 TB | ~11 TB | 4.5TB (43%) | SHR-1 | 2x 12TB IronWolf Pro | Concord |
|
|
| Calypso Cache | 1 TB | N/A | N/A | RAID 1 | 2x 500GB Crucial P3 Plus (M.2) | Concord |
|
|
| Guava boot-pool | 0.5 TB | 433 GB | 17GB (4%) | Single | 1x 500GB WD Black SN770 NVMe | Concord |
|
|
| Guava data | 7.2 TB | 3.6 TB | 2.1TB (57%) | ZFS Mirror | 2x 4TB WD Blue SA510 SATA | Concord |
|
|
| Setillo | 20 TB | ~8.9 TB | 4.0TB (46%) | RAID 1 | 2x 10TB WD Gold | Tucson |
|
|
| **Total** | **~183 TB** | **~113 TB** | **~50TB** | - | **19 drives** | - |
|
|
|
|
### Cloud Backup
|
|
|
|
| Source | Destination | Bucket | Schedule | Encrypted |
|
|
|--------|------------|--------|----------|-----------|
|
|
| Atlantis | Backblaze B2 | vk-atlantis | Weekly (Sun 00:00) | Yes |
|
|
| Calypso | Backblaze B2 | vk-concord-1 | Daily (00:00) | Yes |
|
|
| Guava | None | — | — | — |
|
|
| Setillo | None (receives backups) | — | — | — |
|
|
|
|
---
|
|
|
|
## 🔗 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
|