Skip to main content

Storage Architecture

Purpose

This page documents the physical disks, Proxmox storage pools, logical-volume layout, filesystem mounts, and intended storage roles within the Bytek homelab.

The storage architecture separates:

    Proxmox and application operating-system disks. Large user and application data. Local Proxmox backups. Temporary snapshots and rollback points.

    The main design goal is to prevent application data, operating-system disks, and backups from competing for the same physical storage role.


    Storage Overview

    Storage Tier Approximate Capacity Proxmox Storage Primary Purpose System NVMe 1 TB local-lvm Operating systems and infrastructure services User-data NVMe 4 TB user-data Large application and user-data disks Backup HDD 4 TB pve-backup Proxmox VZDump backups

    Physical Disk Inventory

    Linux Device Approximate Usable Size Device Type Current Role /dev/nvme1n1 931.5 GiB NVMe SSD Proxmox operating system and local-lvm /dev/nvme0n1 3.6 TiB NVMe SSD user-data LVM-thin storage /dev/sda 3.6 TiB WDC HDD Dedicated Proxmox backup storage

    Linux device names such as /dev/sda can change between boots or hardware changes.

    Permanent references should use:

      Filesystem UUIDs for mounted filesystems. /dev/disk/by-id/ paths for physical-device operations. Proxmox storage IDs for normal VM and backup management.

      System NVMe

      Physical Device

      Setting Value Linux device /dev/nvme1n1 Approximate capacity 931.5 GiB Partition table GPT Primary volume group pve

      Partition Layout

      Partition Approximate Size Purpose /dev/nvme1n1p1 1007 KiB Boot support partition /dev/nvme1n1p2 1 GiB EFI system partition /dev/nvme1n1p3 930.5 GiB Proxmox LVM physical volume

      Logical Volumes

      Logical Volume Approximate Size Purpose pve-root 96 GiB Proxmox root filesystem pve-swap 8 GiB Proxmox swap pve-data 794.3 GiB Proxmox LVM-thin pool

      Proxmox Storage

      The pve-data thin pool appears in Proxmox as:

        Storage ID: local-lvm Storage type: LVM-thin

        Intended Use

        The system NVMe stores:

          Proxmox VE. Infrastructure VM and LXC operating-system disks. Application operating-system disks. EFI disks. Small configuration volumes. Temporary Proxmox snapshots. Docker application configuration stored inside service VMs.

          Current Workloads

          The system NVMe currently stores operating-system disks for services such as:

            WireGuard. Pi-hole. Uptime Kuma. Traefik. Authentik. Nextcloud. Vikunja. BookStack.

            Storage Policy

            Use local-lvm for:

              VM and LXC operating-system disks. Infrastructure services. Small persistent application datasets. VM configuration disks. Temporary snapshots.

              Avoid using local-lvm for:

                Large Nextcloud user libraries. Large Plex media libraries. Large game-server libraries. Backup archives. Long-term media collections.

                User-Data NVMe

                Physical Device

                Setting Value Linux device /dev/nvme0n1 Approximate capacity 3.6 TiB Device purpose Large application and user data LVM volume group lvm1 Thin pool data

                LVM-Thin Layout

                The user-data NVMe contains:

                  lvm1-data_tmeta lvm1-data_tdata lvm1-data

                  These components represent:

                    Thin-pool metadata. Thin-pool data. The visible LVM-thin pool.

                    Proxmox Storage

                    The thin pool appears in Proxmox as:

                      Storage ID: user-data Storage type: LVM-thin Volume group: lvm1 Thin pool: data Configured chunk size: 256 KiB

                      Intended Use

                      The user-data NVMe stores:

                        Nextcloud user files. Large application-data disks. Future game-server data. Future media-storage testing. Other user-generated content.

                        Current Major Workload

                        Nextcloud has a separate virtual data disk on user-data.

                        Setting Value Nominal virtual-disk size 500 GB Guest filesystem ext4 Guest mount point /mnt/nextcloud-data Nextcloud data directory /mnt/nextcloud-data/ncdata

                        The Nextcloud operating system remains on local-lvm, while user files remain on user-data.

                        This separation makes it easier to:

                          Expand the user-data disk. Monitor data growth. Keep the operating-system disk smaller. Apply different backup decisions to application and data disks. Migrate data disks independently in the future.

                          Thin Provisioning

                          The local-lvm and user-data storage pools use LVM-thin provisioning.

                          A thin-provisioned virtual disk does not immediately consume its full nominal capacity.

                          For example, a 500 GB virtual disk initially consumes only the physical blocks that have actually been written.

                          Important Consequence

                          The sum of all nominal virtual-disk sizes may exceed the physical capacity of the thin pool.

                          This is safe only when actual usage is monitored.

                          If the thin pool reaches full physical allocation, affected VMs may experience:

                            Write failures. Filesystem corruption. Application outages. Database failures. Guest crashes.

                            Thin-Pool Monitoring

                            Review Proxmox storage usage using:

                            pvesm status

                            Review LVM-thin usage using:

                            lvs -a -o vg_name,lv_name,segtype,lv_attr,lv_size,data_percent,metadata_percent

                            Monitor both:

                              Data percent Metadata percent

                              Suggested operational thresholds:

                              Utilization Response Below 70 percent Normal monitoring 70 to 84 percent Review growth and available capacity 85 percent or higher Immediate capacity planning Near 100 percent Critical risk of storage failure

                              These thresholds are operational recommendations and should be adjusted based on growth rate and workload importance.


                              Backup HDD

                              Physical Device

                              Setting Value Linux device /dev/sda Partition /dev/sda1 Approximate usable capacity 3.6 TiB Filesystem ext4 Partition table GPT Stable WWN 0x5000cca097c44d7e

                              Permanent Mount

                              Setting Value Mount point /mnt/pve/pve-backup Proxmox storage ID pve-backup Proxmox content type VZDump backup files Mount method Filesystem UUID through /etc/fstab

                              The filesystem UUID is used instead of /dev/sda1 because Linux device letters can change.

                              Mount Options

                              The backup filesystem uses:

                                Read-write mounting. noatime to reduce unnecessary metadata writes.

                                Mount-Point Protection

                                The Proxmox storage uses mount-point validation.

                                This prevents Proxmox from treating the empty directory /mnt/pve/pve-backup as valid storage when the HDD is not mounted.

                                Without this protection, a failed HDD mount could cause backups to be written to the Proxmox root filesystem.

                                That could fill the root filesystem and disrupt the hypervisor.


                                Backup-HDD Intended Use

                                The backup HDD stores:

                                  Scheduled VM backups. Scheduled LXC backups. Manual baseline backups. Upgrade rollback backups. Restore-test source archives.

                                  The backup HDD must remain dedicated to backups.


                                  Prohibited Backup-HDD Uses

                                  Do not use the backup HDD for:

                                    Active VM disks. Active LXC root filesystems. Nextcloud user files. Plex media. Steam game-server data. Docker application data. Download staging. General file storage. Temporary application caches.

                                    Mixing active workloads with backups would:

                                      Increase disk contention. Increase wear. Reduce available retention. Expand the failure impact. Make recovery planning less predictable.

                                      Storage Placement Rules

                                      Workload Preferred Storage Infrastructure OS disk local-lvm Application OS disk local-lvm Nextcloud user data user-data Vikunja database and files Current VM OS disk unless growth requires separation BookStack database and files Current VM OS disk unless growth requires separation Plex configuration and metadata local-lvm or a dedicated application disk Plex media Future dedicated media storage Game-server executable files Dedicated game-server disk or user-data Game world and save data user-data with backup enabled Proxmox backup archives pve-backup Short-term snapshots Same thin pool as the source disk

                                      Future Plex Storage

                                      The RTX 2060 Plex VM should not use the backup HDD for media.

                                        Plex operating system on local-lvm. Plex configuration and metadata on NVMe-backed storage. Plex transcode directory on temporary fast storage. Movies and television content on future dedicated media storage. Music content on future shared media storage if Navidrome is deployed.

                                        A temporary media disk may be created on user-data for initial testing.

                                        Long-term media storage should ideally use:

                                          A dedicated HDD. A mirrored HDD pair. A dedicated storage pool. A NAS or storage server.

                                          Media capacity planning must account for continued Nextcloud growth on user-data.


                                          Future Game-Server Storage

                                          A dedicated game-server VM should use:

                                            Operating-system disk on local-lvm. Game data or world-save disk on user-data. Backup enabled for unique save data. Application-level save backups where supported.

                                            Steam-installed server binaries can usually be downloaded again.

                                            Unique game-world data, configuration files, allowlists, bans, and mods require backup.


                                            Storage Expansion Principles

                                            Before adding physical storage, decide whether the new disk is intended for:

                                              Operating-system workloads. Application data. Media. Backups. Redundancy. Offsite synchronization.

                                              Avoid adding unrelated physical disks into an existing unmirrored LVM volume group merely to increase capacity.

                                              Safer future expansion patterns include:

                                                Create a new independent Proxmox storage pool. Move selected VM disks to the new pool. Replace a smaller disk with a larger disk. Add mirrored storage for critical data. Add a dedicated media-storage pool. Add a dedicated Proxmox Backup Server. Add an encrypted offsite backup target.

                                                Failure-Domain Considerations

                                                System NVMe Failure

                                                Expected impact:

                                                  Proxmox root filesystem may be lost. Infrastructure VM and LXC operating-system disks may be lost. The user-data NVMe and backup HDD may remain physically intact.

                                                  Recovery would require:

                                                    Proxmox reinstallation or system-disk restoration. Reconnection of existing storage. VM and LXC restoration from pve-backup.

                                                    User-Data NVMe Failure

                                                    Expected impact:

                                                      Nextcloud user-data disk may be lost. Other large application-data disks may be lost. VM operating-system disks on local-lvm may continue working. Backups on the HDD may remain available.

                                                      Backup HDD Failure

                                                      Expected impact:

                                                        Live services continue running. New backup jobs fail. Existing local recovery points are lost. There is no current offsite replacement copy.

                                                        Complete Host Failure

                                                        Expected impact:

                                                          All running services become unavailable. The internal backup HDD may be inaccessible until moved or the host is repaired. A severe electrical or physical event could affect all three storage devices.

                                                          This is the primary reason a future offsite or separate-host backup is required.


                                                          Snapshot Policy

                                                          Proxmox snapshots are used as short-term rollback points.

                                                            Before a major operating-system upgrade. Before changing Authentik integration. Before changing Traefik routing or middleware. Before changing a Docker stack. Before database migrations. Before a major application upgrade. Before enabling GPU passthrough.

                                                            Snapshots are not backups because:

                                                              Snapshots remain on the same storage. A physical disk failure destroys the snapshot with the live disk. Long-lived snapshots consume thin-pool capacity. Snapshot growth can create unexpected storage pressure.

                                                              Delete unnecessary snapshots after the associated change has been validated.

                                                              Avoid snapshots with RAM unless restoring the exact running state is required.


                                                              Storage Validation

                                                              Confirm Proxmox Storage

                                                              Use:

                                                              pvesm status

                                                              Expected storage IDs include:

                                                                local local-lvm user-data pve-backup

                                                                Confirm Backup Mount

                                                                Use:

                                                                findmnt /mnt/pve/pve-backup

                                                                The source should be /dev/sda1.

                                                                Confirm Backup Capacity

                                                                Use:

                                                                df -h /mnt/pve/pve-backup

                                                                Confirm Physical Devices

                                                                Use:

                                                                lsblk -e7 -o NAME,PATH,SIZE,TYPE,FSTYPE,PTTYPE,MOUNTPOINTS,MODEL,SERIAL,WWN

                                                                Confirm Thin-Pool Utilization

                                                                Use:

                                                                lvs -a -o vg_name,lv_name,segtype,lv_attr,lv_size,data_percent,metadata_percent

                                                                Confirm Storage Configuration

                                                                Use:

                                                                cat /etc/pve/storage.cfg

                                                                Do not store credentials or secrets in the documentation when recording command output.


                                                                Disk-Health Monitoring

                                                                The backup HDD should be monitored using SMART.

                                                                Stable backup-HDD identifier:

                                                                /dev/disk/by-id/wwn-0x5000cca097c44d7e

                                                                Useful checks:

                                                                  smartctl -H /dev/disk/by-id/wwn-0x5000cca097c44d7e smartctl -A /dev/disk/by-id/wwn-0x5000cca097c44d7e smartctl -x /dev/disk/by-id/wwn-0x5000cca097c44d7e

                                                                  Important attributes include:

                                                                    Reallocated sector count. Current pending sector count. Offline uncorrectable sector count. UDMA CRC error count. Temperature. Power-on hours. SMART error log.

                                                                    Pending or uncorrectable sectors require immediate review.

                                                                    NVMe health should also be reviewed periodically using the appropriate NVMe SMART tools.


                                                                    Capacity Review Checklist

                                                                    Perform a storage review when:

                                                                      Nextcloud user data grows significantly. Plex media is introduced. A game-server data disk is created. Backup retention consumes unexpected space. Thin-pool utilization exceeds 70 percent. Snapshot count increases. A disk reports SMART warnings. Another physical disk is being considered.

                                                                      Review:

                                                                        Physical free capacity. Thin-pool data utilization. Thin-pool metadata utilization. Snapshot count. Backup-HDD free space. Nextcloud data growth. Media-storage requirements. Restore-capacity requirements. Backup-retention effectiveness.

                                                                        Current Limitations

                                                                        The current storage architecture does not provide disk redundancy.

                                                                        The system NVMe, user-data NVMe, and backup HDD are independent single devices.

                                                                        The architecture protects against some logical failures through backups, but does not provide uninterrupted operation after a physical disk failure.

                                                                        The local backup HDD is in the same:

                                                                          Physical server. Building. Power environment. Administrative security boundary.

                                                                          Future priorities include:

                                                                            Dedicated media storage. A third backup copy. Offsite encrypted backups. Separate Proxmox Backup Server hardware. Storage redundancy for critical user data.

                                                                            Document Control

                                                                              Owner: Bryan Gagne-Plante Last verified: YYYY-MM-DD System storage: 1 TB NVMe on local-lvm Application-data storage: 4 TB NVMe on user-data Backup storage: 4 TB HDD on pve-backup Storage redundancy: None Offsite backup: Not configured Recovery tested: Partial Known limitations: Single-device storage tiers and one physical host