# BigBoy Hardware Manifest **Component specifications, UUIDs, network configuration, storage layout** --- ## System Specifications ### CPU - **Model:** [Not specified in deployment docs] - **Cores/Threads:** [Assumed sufficient for Ollama service overhead + 4GB model inference] - **Thermal Design:** [Review during Phase 11 thermal testing] ### GPU (Primary) - **Model:** NVIDIA GeForce RTX 5060 Ti - **Architecture:** Blackwell (sm_120) - **VRAM:** 4GB GDDR6 - **PCIe:** 4.0 x16 - **Power Draw:** [Typical ~70W gaming, ~50W inference] - **Driver:** 550.90.07+ (precompiled open kernel modules) - **CUDA Version:** 12.6+ (installed via nvidia-driver-cuda) ### System RAM - **Capacity:** 16GB - **Type:** [DDR4 or DDR5, not specified] - **Use:** OS (2GB) + Ollama service (4GB) + Open WebUI (1GB) + System buffer (9GB available) ### Storage #### NVMe (Primary) | Partition | Size | Purpose | Mount | Filesystem | Compression | |-----------|------|---------|-------|------------|-------------| | NVMe Partition 1 | 1GB | EFI Boot | /boot/efi | vfat | None | | NVMe Partition 2 | ~499GB | OS Root (btrfs) | / (via @) | btrfs | zstd:3 | **NVMe UUID:** `5daac1d7-10b3-498a-82b0-a4498d7e0717` **Subvolumes on NVMe:** ``` @ → / (OS root) compression: zstd:3 @home → /home (user data) compression: zstd:3 @nix → /nix (legacy, unused) compression: zstd:3 @log → /var/log (system logs) compression: zstd:1 (lighter, frequent writes) ``` #### SATA Drive 1 (RAG Library) - **Capacity:** [Not specified, assume 1-2TB] - **UUID:** `18b9accd-754a-46f3-b994-da3c7ae795cd` - **Subvolume:** `@rag-library` - **Mount:** `/srv/rag-library` - **Compression:** zstd:3 - **Mount Options:** noatime, nofail (don't block boot if this drive fails) - **Purpose:** Document corpus, RAG indexes, knowledge bases #### SATA Drive 2 (Prompt Library) - **Capacity:** [Not specified, assume 1-2TB] - **UUID:** `82a240c4-390a-4167-8232-6a04ce4d84bb` - **Subvolume:** `@prompt-library` - **Mount:** `/srv/prompt-library` - **Compression:** zstd:1 (frequent write patterns) - **Mount Options:** noatime, nofail - **Purpose:** Prompt history, cached responses, chat logs #### SATA Drive 3 (Backup) - **Capacity:** [Not specified, assume 2-4TB] - **UUID:** `15b69400-f1f7-4cfd-82cb-4d1244951503` - **Subvolume:** `@backup` - **Mount:** `/srv/backup` - **Compression:** zstd:3 - **Mount Options:** noatime, nofail - **Purpose:** Borgmatic backups (Phase 10, deferred), local snapshots #### SATA Drive 4 (AI Logs) - **Capacity:** [Not specified, assume 1-2TB] - **UUID:** `1e57a52a-9c9d-44ef-a352-3cc542808d13` - **Subvolume:** `@ai-logs` - **Mount:** `/srv/ai-logs` - **Compression:** zstd:2 (middle ground: logs get compressed, reasonable speed) - **Mount Options:** noatime, nofail - **Purpose:** Ollama inference logs, model loading metrics, thermal data ### Network #### Interface - **Primary:** enp4s0 (Ethernet) - **IP Address (Static):** 192.168.0.240 - **Netmask:** 255.255.255.0 (/24) - **Gateway:** 192.168.0.1 - **DNS:** [Configured via DHCP or static, TBD] - **MAC Address:** [Pinned in Phase 9] - **Network:** Fritzy bench LAN (192.168.0.0/24) #### Services & Ports | Service | Port | Network | Status | |---------|------|---------|--------| | SSH | 22 | LAN + admin | Open | | Ollama API | 11434 | localhost-only | Closed to LAN | | Open WebUI | 8080 | LAN (if Phase 8) | Open | | Cockpit | 9090 | LAN (optional) | Open | #### Firewall Rules (Phase 9) ``` Default: DROP Allow: SSH 22/tcp (LAN) Allow: OpenWebUI 8080/tcp (LAN) Allow: Cockpit 9090/tcp (LAN, optional) Block: Ollama 11434 (localhost-only, reverse proxy if external needed) ``` --- ## Filesystem Layout (Post-Deployment) ``` / (NVMe @) ├── /boot → NVMe EFI (kernel, bootloader) ├── /home (NVMe @home) ├── /var/log (NVMe @log, zstd:1) ├── /nix (NVMe @nix, legacy, unused) ├── /srv → Data drives │ ├── /srv/rag-library (SATA Drive 1 @rag-library, zstd:3) │ ├── /srv/prompt-library (SATA Drive 2 @prompt-library, zstd:1) │ ├── /srv/backup (SATA Drive 3 @backup, zstd:3) │ └── /srv/ai-logs (SATA Drive 4 @ai-logs, zstd:2) └── /srv/deployment-log → Phase logs (on NVMe @, zstd:3) ``` --- ## fstab Configuration ``` # /etc/fstab # NVMe OS Root (4 subvolumes, all with zstd compression) UUID=5daac1d7-10b3-498a-82b0-a4498d7e0717 / btrfs subvol=@,compress=zstd:3,noatime 0 0 UUID=5daac1d7-10b3-498a-82b0-a4498d7e0717 /home btrfs subvol=@home,compress=zstd:3,noatime 0 0 UUID=5daac1d7-10b3-498a-82b0-a4498d7e0717 /nix btrfs subvol=@nix,compress=zstd:3,noatime 0 0 UUID=5daac1d7-10b3-498a-82b0-a4498d7e0717 /var/log btrfs subvol=@log,compress=zstd:1,noatime 0 0 # SATA Data Drives (nofail: don't block boot if drive missing) UUID=18b9accd-754a-46f3-b994-da3c7ae795cd /srv/rag-library btrfs subvol=@rag-library,compress=zstd:3,noatime,nofail 0 0 UUID=82a240c4-390a-4167-8232-6a04ce4d84bb /srv/prompt-library btrfs subvol=@prompt-library,compress=zstd:1,noatime,nofail 0 0 UUID=15b69400-f1f7-4cfd-82cb-4d1244951503 /srv/backup btrfs subvol=@backup,compress=zstd:3,noatime,nofail 0 0 UUID=1e57a52a-9c9d-44ef-a352-3cc542808d13 /srv/ai-logs btrfs subvol=@ai-logs,compress=zstd:2,noatime,nofail 0 0 ``` --- ## Device Mapping Reference ### Storage Devices (Post-Kickstart) ``` /dev/nvme0n1 → NVMe (OS + system) /dev/nvme0n1p1 → EFI (1GB vfat) /dev/nvme0n1p2 → btrfs root (rest of NVMe) /dev/sda → SATA Drive 1 (RAG Library) /dev/sdb → SATA Drive 2 (Prompt Library) /dev/sdc → SATA Drive 3 (Backup) /dev/sdd → SATA Drive 4 (AI Logs) ``` **Note:** Device order may vary. Use UUIDs (not /dev paths) in fstab for reliability. --- ## Performance Expectations ### Storage Performance | Metric | Expected | Tuning | |--------|----------|--------| | **btrfs Compression Ratio** | 30-40% (text/code/logs) | zstd:3 typical | | **Compression CPU Overhead** | 5-15% | Level 3 = good balance | | **Snapshot Speed** | Instant (CoW) | Metadata flush only | | **NVMe Bandwidth** | 3-5 GB/s | Sequential, uncompressed | | **SATA Bandwidth** | 0.5-1 GB/s | Sequential, uncompressed | ### GPU Performance (RTX 5060 Ti) | Metric | Expected | |--------|----------| | **Ollama Mistral 7B** | ~5-10 tokens/sec (inference) | | **VRAM Usage** | ~3.8 GB (near capacity) | | **GPU Utilization** | 95%+ during inference | | **Idle Power** | ~5W | | **Inference Power** | ~50-70W | ### Thermal Expectations (Phase 11) | Component | Idle | Inference Load | Limit | Notes | |-----------|------|-----------------|-------|-------| | **GPU (RTX 5060 Ti)** | <40°C | <65°C | <75°C | Baseline in Phase 11 | | **CPU** | <35°C | <55°C | <80°C | Depends on cooling | | **Memory** | <40°C | <50°C | <70°C | Rarely bottleneck | --- ## Deployment Artifacts ### Kickstart File - **Path:** `/home/john/projects/bigboy-setup/alma10-minimal-bigboy.ks` - **Purpose:** Unattended OS installation - **UUIDs Embedded:** None (created by Anaconda, then mapped in Ansible) ### Ansible Inventory - **Path:** `/home/john/projects/bigboy-setup/ansible/inventory.ini` - **Host:** `192.168.0.240` (BigBoy on Fritzy bench LAN) - **SSH:** root user, key-based auth - **Python:** /usr/bin/python3 ### Hardware Variables - **Path:** `/home/john/projects/bigboy-setup/ansible/group_vars/bigboy.yml` - **Contents:** All UUIDs, drive mappings, GPU settings, Ollama tuning - **Usage:** Sourced by all Ansible roles --- ## Maintenance & Monitoring ### Monthly Checks ```bash # Filesystem health btrfs filesystem usage / btrfs device stats / # Storage space by subvolume du -sh /srv/rag-library /srv/prompt-library /srv/backup /srv/ai-logs # GPU health nvidia-smi -q | grep -E "Temperature|Power Draw|VRAM" # Compression effectiveness btrfs filesystem usage / | grep "Unallocated" ``` ### Quarterly Actions ```bash # Scrub btrfs (check for corruption) sudo btrfs scrub start / # Check SMART health sudo smartctl -H /dev/sda /dev/sdb /dev/sdc /dev/sdd # Defragment if needed (rare for zstd) sudo btrfs filesystem defragment -v /srv/rag-library ``` ### Annual Review - Update kernel - Review thermal baseline (compare to Phase 11 baseline) - Review backup strategy (if Borgmatic in use) - Consider GPU driver update (if new version available) --- ## Hardware Upgrade Path ### GPU Addition (If VRAM Bottleneck) - Slot: PCIe 4.0 x16 (secondary) - Candidate: RTX 4070 Ti (12GB) or RTX 4090 (24GB) - Ollama config: Set `CUDA_VISIBLE_DEVICES=0,1` - Load balancing: Requires model routing logic ### Storage Addition - NVMe: Add 2nd NVMe via M.2 slot (if available) - SATA: Cascade to eSATA or USB 3.0 (slower, external) - btrfs: Add device: `sudo btrfs device add /dev/new /mount/point` ### RAM Upgrade - If Ollama uses >12GB: Add DIMM - Typical: 16GB is comfortable for 4GB GPU model serving --- ## Compliance & Documentation ### For Disaster Recovery - Keep copy of this HARDWARE.md in `/srv/backup/` - Include UUID list in Phase 14 observation runbook - Document MAC address pinning decision (Phase 9) ### For Audit Trail - All hardware changes logged to `/srv/deployment-log/` - Kernel version tracked by systemd logs - NVIDIA driver version in `nvidia-smi` output, logged during Phase 4 --- **Last Updated:** 2026-06-27 **Next Review:** After Phase 11 thermal testing (verify baseline vs. expectations) **Prepared By:** Claude Code (@workbench)