6.4 KiB
schema_version, id, type, scope, sensitivity, last_reviewed, sources, related, update_triggers, unknowns
| schema_version | id | type | scope | sensitivity | last_reviewed | sources | related | update_triggers | unknowns | |||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | home-server.storage | reference |
|
private-infrastructure | 2026-10-06 |
|
|
|
|
Storage
---
config:
themeCSS: |
.node rect { rx: 8px; ry: 8px; stroke-width: 1.5px; }
.cluster rect { fill: var(--infra-zone) !important; stroke: var(--infra-border) !important; stroke-dasharray: 5 5; rx: 12px; ry: 12px; }
.label, .nodeLabel, .cluster-label { color: var(--infra-text) !important; }
.flowchart-link { stroke: var(--infra-line) !important; }
marker path { fill: var(--infra-line) !important; stroke: var(--infra-line) !important; }
.infraStorage rect, .infraStorage path { fill: var(--infra-storage-fill) !important; stroke: var(--infra-storage-stroke) !important; }
.infraCloud rect { fill: var(--infra-cloud-fill) !important; stroke: var(--infra-cloud-stroke) !important; }
.infraClient rect { fill: var(--infra-client-fill) !important; stroke: var(--infra-client-stroke) !important; }
.infraService rect { fill: var(--infra-service-fill) !important; stroke: var(--infra-service-stroke) !important; }
flowchart:
curve: basis
nodeSpacing: 30
rankSpacing: 45
---
flowchart LR
subgraph Array["HDD ARRAY / APPLICATION DATA"]
direction TB
A["<b>Seagate BarraCuda</b><br/>sda1 / 2 TB"]
B["<b>Seagate BarraCuda</b><br/>sdb1 / 2 TB"]
RAID["<b>Linux MD RAID 0</b><br/>md0 / no redundancy"]
DATA[("<b>/data</b><br/>ext4")]
A --> RAID
B --> RAID
RAID --> DATA
end
subgraph System["SSD / SYSTEM"]
direction TB
SSD["<b>Samsung 860 EVO</b><br/>sdc / 1 TB"]
EFI["<b>/boot/efi</b><br/>sdc1 / FAT32"]
SWAP["<b>Swap</b><br/>sdc2"]
ROOT["<b>/</b><br/>sdc3 / ext4"]
DOCKER["<b>/var/lib/docker</b><br/>Named volumes"]
CACHE["<b>/home/jay/data</b><br/>Backrest / Jellyfin caches"]
SSD --> EFI
SSD --> SWAP
SSD --> ROOT
ROOT --> DOCKER
ROOT --> CACHE
end
class A,B,SSD,DATA,ROOT infraStorage
class RAID infraCloud
class EFI,SWAP infraClient
class DOCKER,CACHE infraService
RAID 0: striping; no redundancy; either HDD failure loses the array.
Filesystems
Device names reflect the supplied snapshot; UUIDs identify filesystems.
| Mount | Device | Filesystem | UUID |
|---|---|---|---|
/data |
/dev/md0 |
ext4 | d60390a1-7db3-44cc-bbde-693c23e42001 |
/ |
/dev/sdc3 |
ext4 | 7a5e0ee6-4a65-4f68-9128-b3b4f3406447 |
/boot/efi |
/dev/sdc1 |
FAT32 | 1DDE-CDF9 |
| swap | /dev/sdc2 |
swap | 4781ea5d-fba5-438d-8d97-6a0801669ca1 |
MD members: /dev/sda1, /dev/sdb1; metadata 1.2; array label jupiter:0;
MD UUID c67fccaa-e541-bf2d-2bf6-83221086e0e9.
RAID assembly / geometry
Linux MD, inspected with mdadm; ext4 directly on the array, no intervening LVM.
| Setting | Observed value |
|---|---|
| Device / scan name | /dev/md0 / /dev/md/0 |
| mdadm UUID | c67fccaa:e541bf2d:2bf68322:1086e0e9 |
| Capacity | 3.64 TiB / 4.00 TB |
| Layout / chunk | original / 512 KiB |
| Member order | Slot 0: /dev/sdb1; slot 1: /dev/sda1 |
| State at review | clean; 2 active members; no failed/spare devices |
Scan output identifies the array; persisted mdadm configuration/initramfs were
not supplied. Assembly is not array creation; do not substitute mdadm --create.
Mount configuration
Supplied /etc/fstab:
UUID=7a5e0ee6-4a65-4f68-9128-b3b4f3406447 / ext4 errors=remount-ro 0 1
UUID=1DDE-CDF9 /boot/efi vfat utf8 0 0
UUID=d60390a1-7db3-44cc-bbde-693c23e42001 /data ext4 defaults 0 2
UUID=4781ea5d-fba5-438d-8d97-6a0801669ca1 none swap sw 0 0
Observed /data: rw,relatime,stripe=256; /tmp: tmpfs.
Seedbox FUSE mount is service-managed, not listed in fstab.
Placement
| Host path | Backing / purpose |
|---|---|
/data/<service> |
HDD array; service bind mounts |
/mnt/seedbox |
Remote SFTP/FUSE mount; seedbox; not a local replica |
/home/jay/data/backrest/cache |
SSD; Backrest cache |
/home/jay/data/jellyfin/cache |
SSD; Jellyfin cache |
/var/lib/docker |
SSD; Docker state and default local named volumes |
/var/lib/containerd |
SSD; observed containerd overlayfs snapshot storage |
/data/portainer |
HDD array; deployed Portainer state; backed up |
/data/authelia |
Configuration, users, SQLite, notifications |
/data/traefik/{acme,dynamic,certs} |
ACME state, dynamic configuration, certificates |
Cache placement is per mount, not globally SSD-backed. /data backups do not
implicitly include SSD-backed Docker volumes.
Named-volume snapshot
Inspected volumes below use driver local, no driver options, and
/var/lib/docker/volumes/<name>/_data on SSD.
| Volume | Running consumer / container path |
|---|---|
audiobookshelf_config |
Audiobookshelf /config |
jellyfin_config |
Jellyfin /config |
notes_static |
Notes web /usr/share/nginx/html; builder /site-output |
dozzle_dozzle_data |
Dozzle /data |
ctq_ctq_postgres_data |
CTQ PostgreSQL /var/lib/postgresql/data |
havox_src |
Havox web/sync /git |
Other volumes are present without a running consumer shown, including
jellyfin_cache, notes_notes_static, and monitoring volumes. Presence does
not prove use or justify deletion. Named volumes are outside the supplied
four-directory backup plan.