legacy-arrflix/docs/32-nullstone-storage-upgrade-plan.md
s8n cb9d5db1ce doc 32: nullstone storage upgrade plan
R&M S02-S08 import (~105GB) blocked on disk pressure (post-import
117GB->12GB free). Plan upgrade first.

Hardware probed: MSI X470 Gaming Plus Max, single Intel 512GB NVMe in
M2_1, M2_2 free, 6 SATA ports free.

Recommended path: 2TB NVMe in M2_2 (~£130) -> pvcreate -> vgextend
keystone-vg -> lvextend lv-home -> resize2fs. ~5 min downtime, no
reinstall. Alt: SATA SSD/HDD, USB external. Cheapest /GB = SATA HDD.

Doc covers procedure, alternatives, post-upgrade R&M bulk import
plan via playbooks/import-media/. Owner to pick + execute install.
2026-05-10 04:41:52 +01:00

120 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 32 — Nullstone Storage Upgrade Plan
> Status: PLAN (2026-05-10). Hardware purchase + install pending.
## Why
ARRFLIX library growth — Rick and Morty S02-S08 import (~105 GB) would push `/home` from 70 % → 92 % full. Tight margin for transcodes, logs, future imports. Pre-emptive upgrade beats emergency cleanup.
## Current state
| Item | Value |
|---|---|
| Drive | Intel SSDPEKKF512G8 NVMe 512 GB (single) |
| Slot | 1 NVMe (`nvme0n1`) |
| LVM VG | `keystone-vg`, fully allocated (475 GB) |
| LV `/home` | 406.2 GB, 263 GB used, 117 GB free (70 %) |
| LV `/`, `/var`, `/tmp`, swap | 30/11/3/24 GB |
| Mobo | MSI X470 Gaming Plus Max (MS-7B79) |
| **Free slots** | **1× M.2 (M2_2)**, **6× SATA ports** |
Mobo has two M.2 slots:
- `M2_1` — PCIe 3.0 ×4, **occupied** (Intel 512 GB)
- `M2_2` — PCIe 2.0 ×4 / SATA, **free**
## Recommended path — 2nd NVMe in M2_2
| Capacity | Approx cost | Recommended |
|---|---|---|
| 1 TB NVMe | ~£60 | adequate |
| 2 TB NVMe | ~£130 | **best** — leaves headroom for full Disney+ / Star Wars catalogue |
| 4 TB NVMe | ~£250 | long-term, future-proof |
Specs: NVMe PCIe 3.0 ×4 (M.2 2280). Brand: WD SN770, Samsung 990 EVO, Crucial P310, Lexar NM790. M2_2 is PCIe 2.0 — drive will negotiate down (still ~1.5 GB/s — plenty for media).
### Procedure
1. Power off nullstone.
2. Open case, install drive in M2_2 slot.
3. Boot.
4. Verify: `lsblk` should show new `nvme1n1`.
5. Partition: `sudo parted /dev/nvme1n1 mklabel gpt && sudo parted /dev/nvme1n1 mkpart primary 0% 100%`
6. Add as LVM PV: `sudo pvcreate /dev/nvme1n1p1`
7. Extend VG: `sudo vgextend keystone-vg /dev/nvme1n1p1`
8. Extend LV: `sudo lvextend -l +100%FREE /dev/keystone-vg/home`
9. Grow filesystem online: `sudo resize2fs /dev/keystone-vg/home`
10. Verify: `df -h /home` should show new size, no reboot needed.
Total downtime: ~5 min for case open + boot. No reinstall.
## Alternative paths (if M.2 install blocked)
### SATA SSD/HDD (option 4 from poll)
- 6 SATA ports free. Mobo has space for 2.5"/3.5" drives (case-dependent).
- 2 TB SATA SSD ~£80, 2 TB HDD ~£25, 4 TB HDD ~£60.
- Procedure same as NVMe but `/dev/sda` instead of `nvme1n1`.
- HDD slower (~150 MB/s vs NVMe's 1500 MB/s) but fine for media — 4K HDR HEVC peaks at ~15 Mbps = 1.9 MB/s read.
- Pro: cheapest per GB. Con: slower transcodes if SSD cache not configured.
### USB external (option 3 from poll)
- USB 3.0/3.1 ports available (at least 2× 10 Gbps slots).
- Plug-and-play, no case open.
- Pro: no install risk, can move drive between machines.
- Con: cable disconnect risks media server uptime (auto-mount needs udev rule or fstab `nofail`). Slower than internal (~400-500 MB/s real-world over USB 3.1).
- Best if: temporary expansion or testing.
## Migration of `/home/user/media`
Once new drive added to LVM and lv-home extended → media stays in place. NO migration needed. Just more headroom.
If using a SEPARATE drive (not joining LVM):
```bash
# Mount new drive at /mnt/media-2
sudo mkfs.ext4 /dev/nvme1n1p1 # or /dev/sda1
sudo mkdir /mnt/media-2
sudo mount /dev/nvme1n1p1 /mnt/media-2
sudo chown user:user /mnt/media-2
# Move TV to new drive (movies stay on /home for now)
sudo rsync -aHAX --info=progress2 /home/user/media/tv/ /mnt/media-2/tv/
# Update fstab for auto-mount on boot
echo '/dev/nvme1n1p1 /mnt/media-2 ext4 defaults 0 2' | sudo tee -a /etc/fstab
# Update Jellyfin container — stop, edit docker-compose.yml volume:
# /mnt/media-2/tv → /media/tv-2
# OR just mount-bind /mnt/media-2/tv onto /home/user/media/tv (transparent to Jellyfin):
sudo umount /home/user/media/tv # if anything's there
sudo rmdir /home/user/media/tv
sudo ln -s /mnt/media-2/tv /home/user/media/tv
```
LVM-extension path is much cleaner — recommended.
## Decision pending
Owner picks NVMe / SATA / USB based on what's easier to get + budget. Update this doc after decision + install.
## After upgrade — Rick and Morty bulk import
Once `/home` has ≥ 200 GB free:
```bash
# Per playbooks/import-media/ v1.0
# Stage all 7 seasons on onyx (already done — names need normalising)
# rsync to nullstone in one bulk
# Force Library/Refresh
# Verify Series 12→13 (only 1 new — R&M existed since S01), Episodes 217→285 (+68 with all 7 seasons full)
# Wait for S03 E06+E10 to finish download first, OR import partial + add later
```
Run logs: `playbooks/import-media/runs/rick-and-morty-s02-s08-2160p-hdr.md` (template).
## See also
- `playbooks/import-media/` — import workflow
- `docs/05-file-structure-rules.md` — TV folder layout
- ROADMAP.md — track upgrade as item