215 lines
9.0 KiB
Markdown
215 lines
9.0 KiB
Markdown
---
|
||
created: 2026-05-28
|
||
modified: 2026-05-28
|
||
type: note
|
||
tags: [dev-ops, filesystem, consolidation, planning]
|
||
aliases: [consolidation-plan, file-system-redesign]
|
||
---
|
||
|
||
# Filesystem Consolidation Plan
|
||
|
||
> DRAFT — Planning document for reorganising files across all machines.
|
||
|
||
---
|
||
|
||
## Principles
|
||
|
||
1. **One source of truth** — no duplicate data on multiple drives
|
||
2. **Always-on drives for active data** — rarely-used data goes on removable/archive drives
|
||
3. **NTFS for cross-platform** — anything that needs Samba/NFS access from Windows/Mac
|
||
4. **Backup repos stay where they are** — changing backup infrastructure is risky
|
||
5. **Consolidate by access frequency** — hot/warm/cold tiers
|
||
|
||
---
|
||
|
||
## Current Inventory — What Needs Homes
|
||
|
||
### Always-On Services (need drives mounted 24/7)
|
||
|
||
| Service | Machine | Current Mount | Size | Notes |
|
||
|---------|---------|--------------|------|-------|
|
||
| **Immich photos** | .35 | `/mnt/hd/immich/` | ~? | 40K photos, need fast reliable access |
|
||
| **Jellyfin media** | .35 | `/mnt/hd/...` | ? | Movies, TV shows, music |
|
||
| **Docker containers** | .35 | `/Docker/Containers/` | 23.7G | Already on system drive |
|
||
| **Docker data** | .35 | `/mnt/hd/*/` | ? | Lidarr, Radarr, Sonarr, etc. data |
|
||
| **Websites** | .13 | `/var/www/` | ? | Active web projects |
|
||
| **Docker on .13** | .13 | `/home/sam/Docker/` | ? | |
|
||
|
||
### Personal Data (frequent access)
|
||
|
||
| Data | Current Location(s) | Size | Notes |
|
||
|------|-------------------|------|-------|
|
||
| **Dev projects** | .27 `~/...` | ? | NixOS, coding projects |
|
||
| **Old web work** | .13 `ALL_TRANFERS/` + .27 `/mnt/backup/` | ? | htdocs, PHP, etc. — **DUPLICATED** |
|
||
| **Arduino / IoT** | .13 `ALL_TRANFERS` + SmartDrive | ? | **DUPLICATED** |
|
||
| **Flash AS3.0** | .13 `ALL_TRANFERS` | ? | Rarely accessed |
|
||
| **Music** | .13 + .27 | ? | **DUPLICATED** |
|
||
| **Sheet music** | ? | ? | Could move to Obsidian |
|
||
| **Family notes** | ? | ? | Could move to Obsidian |
|
||
| **TODO lists** | Obsidian + ? | — | Already in Obsidian |
|
||
| **Movies/TV** | .35 `/mnt/hd/` + .13 | ? | Jellyfin media |
|
||
| **Display screen + website builder** | ? | ? | Large project? |
|
||
|
||
### Archive / Rarely Accessed (cold storage)
|
||
|
||
| Data | Current Location(s) | Size | Notes |
|
||
|------|-------------------|------|-------|
|
||
| **Sorted photos (2003–2023)** | .13 `sorted_pictures_holder/` | ~? | 31K photos, already organized |
|
||
| **Old subject-organized photos** | .27 `/mnt/backup/` + .13 | ~? | **DUPLICATED** |
|
||
| **Integral300 recovery .img** | .27 `/mnt/tempbackup/` | 298G | Keep or delete? |
|
||
| **Integral300 backup** | .27 SmartDrive `integral300_backup_...` | 105G | Already extracted — delete? |
|
||
| **Windows old drives** | .13 `/mnt/storage/` | 271G used | Old Windows files |
|
||
| **Old Windows data drive** | .13 `/mnt/data/` | 1.5T used | ALL_TRANFERS, etc. — **DUPLICATED** |
|
||
|
||
### Backup Repos (stay where they are)
|
||
|
||
| Repo | Machine | Path | Size |
|
||
|------|---------|------|------|
|
||
| Borg .27 repo | .13 | `/mnt/ubuntu_storage_3TB/backup/borg/.27` | ~? |
|
||
| Borg .13 repo | .13 | `/mnt/ubuntu_storage_3TB/backup/borg/.13` | ~? |
|
||
| Kopia repo | .23 (via .35) | `/mnt/nfs_usb_3tb/kopia/` | 46G |
|
||
| Restic repo | .23 (via .35) | `/mnt/nfs_usb_3tb/backups/restic/` | 13G |
|
||
|
||
---
|
||
|
||
## Drive Role Assignment
|
||
|
||
### Always-On Drives (mounted 24/7)
|
||
|
||
| Machine | Drive | Mount | Role | Filesystem |
|
||
|---------|-------|-------|------|------------|
|
||
| **.35** | `vda1` (My Passport) | `/mnt/hd` | **Active data** — Immich, Jellyfin, Docker service data, current projects | NTFS (cross-platform) |
|
||
| **.13** | `sdd1` (ubuntu_storage_3TB) | `/mnt/ubuntu_storage_3TB` | **Backup target** — Borg repos only | ext4 |
|
||
| **.13** | `sdb2` (Data) | `/mnt/data` | **Archive** — old photos, old web work, ALL_TRANFERS | NTFS (cross-platform) |
|
||
| **.13** | `sda2` (Storage) | `/mnt/storage` | **Windows legacy** — old Windows files | NTFS (cross-platform) |
|
||
|
||
### Warm-Swap Drives (plug in when needed)
|
||
|
||
| Drive | Size | Free | Role | Label |
|
||
|-------|------|------|------|-------|
|
||
| **SmartDrive** | 687G | 548G | **Transfer / temporary** — moving data between machines | `SmartDrive` |
|
||
| **TempBackup** | 458G | 136G | **Offline backup** — secondary copy of critical data | `TempBackup` |
|
||
| **Back Up** | 224G | 158G | **Legacy** — old photos (read-only NTFS) | `Back Up` (NTFS) |
|
||
| **MaxtorBackup** | 1.4T | 1.3T | **Archive target** — empty, ready for use | `MaxtorBackup` |
|
||
|
||
---
|
||
|
||
## Proposed Folder Hierarchy
|
||
|
||
### On `.35` — `/mnt/hd/` (My Passport — NTFS) — Active Data
|
||
|
||
This is the hot data tier — always accessible via Docker, Samba, etc.
|
||
|
||
```
|
||
/mnt/hd/
|
||
├── services/ ← Docker service data (bind-mounted)
|
||
│ ├── immich/ ── Already here
|
||
│ ├── audiobookshelf/
|
||
│ ├── lidarr/
|
||
│ ├── radarr/
|
||
│ ├── sonarr/
|
||
│ ├── qbittorrent/
|
||
│ ├── readarr/
|
||
│ ├── headphones/
|
||
│ ├── spotweb/
|
||
│ ├── nextcloud/ ── Future?
|
||
│ └── paperless/ ── Already on NFS
|
||
├── media/ ← Jellyfin media library
|
||
│ ├── movies/
|
||
│ ├── tv/
|
||
│ ├── music/
|
||
│ ├── audiobooks/
|
||
│ ├── podcasts/
|
||
│ └── books/
|
||
└── projects/ ← Current active projects
|
||
├── web/
|
||
├── arduino/
|
||
├── nixos/
|
||
└── ...
|
||
```
|
||
|
||
### On `.13` — `/mnt/data/` (NTFS) — Archive & Warm Data
|
||
|
||
This is the archive tier — old projects, old photos, everything rarely accessed but worth keeping.
|
||
|
||
```
|
||
/mnt/data/
|
||
├── archive/
|
||
│ ├── photos/ ← Consolidated photo archive
|
||
│ │ ├── sorted_pictures_holder/ ── From ALL_TRANFERS
|
||
│ │ └── old_subject_organized/ ── From Back Up drive + PICTURES_GROUPED_SUBJECT_OLD
|
||
│ ├── web_work/ ← Old htdocs, PHP, Flash AS3.0 projects
|
||
│ ├── arduino_iot/
|
||
│ ├── music/
|
||
│ ├── sheet_music/
|
||
│ ├── family_notes/
|
||
│ └── integral300/ ← Recovery .img moved here from .27
|
||
└── transfer/ ← Staging area for moving data between machines
|
||
```
|
||
|
||
### On `.13` — `/mnt/ubuntu_storage_3TB/` (ext4) — Backup Repository
|
||
|
||
```
|
||
/mnt/ubuntu_storage_3TB/
|
||
└── backup/
|
||
├── borg/
|
||
│ ├── .13/ ← .13 local backups
|
||
│ └── .27/ ← .27 backups via SSH
|
||
└── restic/ ← Future: secondary restic target?
|
||
```
|
||
|
||
---
|
||
|
||
## Consolidation Actions
|
||
|
||
### Phase 1 — Eliminate Duplicates
|
||
|
||
| What | Duplicated Where | Action |
|
||
|------|-----------------|--------|
|
||
| Old subject-organized photos | .27 `/mnt/backup/` + .13 `PICTURES_GROUPED_SUBJECT_OLD` | Delete from .27 (keep .13 copy) |
|
||
| Integral300 extracted backup | .27 SmartDrive `integral300_backup_...` | Delete — recovery .img is the source of truth |
|
||
| Arduino / IoT files | .13 ALL_TRANFERS + SmartDrive | Consolidate to .13 archive |
|
||
| Old web work (htdocs) | Multiple places | Consolidate to .13 `/mnt/data/archive/web_work/` |
|
||
|
||
### Phase 2 — Consolidate to Right Drives
|
||
|
||
| What | Move From | Move To | When |
|
||
|------|----------|---------|------|
|
||
| Integral300 recovery .img | .27 `/mnt/tempbackup/` | .13 `/mnt/data/archive/integral300/` | Phase 2 |
|
||
| Sorted photos | .13 `ALL_TRANFERS/Pictures/sorted_pictures_holder/` | .13 `/mnt/data/archive/photos/` | Phase 2 |
|
||
| Old web work | .13 `ALL_TRANFERS/` | .13 `/mnt/data/archive/web_work/` | Phase 2 |
|
||
|
||
### Phase 3 — System Rebalancing
|
||
|
||
| Action | Reason |
|
||
|--------|--------|
|
||
| Mount MaxtorBackup as **offline backup** repository | Provides a second physical copy of backup repos |
|
||
| Configure periodic rsync from .23 backup repos → MaxtorBackup | .23 has no backup — this covers it |
|
||
| Clean up old empty stub directories on .35 `/mnt/hd/` | Remove Western Digital installer files, System Volume Information |
|
||
|
||
---
|
||
|
||
## Always-Connected vs Hot-Swap
|
||
|
||
| Drive | Connection | Why |
|
||
|-------|-----------|-----|
|
||
| **.35** My Passport (vda, /mnt/hd) | **Always on** | Immich, Jellyfin, Docker services need this |
|
||
| **.13** ubuntu_storage_3TB | **Always on** | Backup target — Borg runs daily |
|
||
| **.13** Data (sdb) | **Always on** | Archive data, accessible to network |
|
||
| **.13** Storage (sda) | **Always on** | Old Windows files |
|
||
| **.27** SmartDrive | **Hot-swap** | Only needed during data transfers |
|
||
| **.27** TempBackup | **Hot-swap** | Temporary storage / cache |
|
||
| **.27** Back Up | **Hot-swap** | Legacy — eventually retire |
|
||
| **MaxtorBackup** | **Hot-swap** | Offline backup — plug in monthly |
|
||
|
||
---
|
||
|
||
## Open Questions
|
||
|
||
- [ ] Should Immich and Jellyfin media live on the same drive? (single point of failure)
|
||
- [ ] Should we move old photo archive to MaxtorBackup and rotate it offsite?
|
||
- [ ] Is the Integral300 recovery .img still needed (298G)? It matches the extracted files.
|
||
- [ ] What about `.13`'s `/var/www/` websites — should they be backed up?
|
||
- [ ] Should `.23` (file-server) get its own backup?
|
||
- [ ] Naming convention for drives: should we re-label drives with consistent names?
|