By tamer

It is probably not common place to find yourself hosting a Proxmox Backup Server as a Virtual Machine running within an XCP -ng Hypervisor but, that is exactly where we are today and our task is to address backup failures due to shortage of storage space on our PBS VM.

Table of Contents

    Overview

    The Linux kernel’s Logical Volume Manager lets us abstract our disk partitioning. Instead of assigning our storage volumes to partitions written to a physical disk’s partition table, we flexibly apportion out space as needed. And we don’t draw upon one disk at a time, but instead, use a storage pool. That means we can grow or shrink our /usr or /var volumes if we run out of space.

    In this tutorial, we’ll add a new physical disk to our storage pool (a.k.a., volume group) and use the added storage to grow our existing filesystem.

    Background

    The reason why we have PBS running on XCP-ng is two fold. First, whilst it is possible, it is not a good idea to keep our backups on the same physical machine where we are hosting our VM’s on a Proxmox Hypervisor server. If Proxmox goes down, then it will take PBS with it and we would be check-mated. So a different physical machine is required. Ideally we would have a dedicated server to host PBS and of course a Static IP address that goes with it… All adding to a steep set of requirements list making acquisition somewhat out of reach.

    Before discovering and migrating to Proxmox, I had been happy with what evolved into a XCP-ng Hypervisor server setup, based on a HP Z800 workstation. This has been a rock solid Home-Lab and served me well for many years albeit without the security of backups – other than Snapshots on the same hardware.

    I have since established a separate server on a new generation of HP Z4 G8 I picked up on a whim. This is a much more advanced system ideally suited as a Proxmox Hypervisor and I have been happily running numerous VMs on this machine for a couple of years now.

    What’s covered in this article

    This article shows how to extend storage space on a Proxmox Backup Server, which is essentially a variation to the Adding a Disk in LVM, where we have shown a practical approach to adding storage space to an Ubuntu server. However, PBS is not Ubuntu and LVM disk naming conventions are slightly different. We will go over the nuance and show how to extend disk space for our PBS VM – notably running under XCP-ng!

    As shown in the image above, our PBS VM began with a single 512GB /dev/xvda which was marked as VDisk-0 storage device. When this became insufficient, we used the XCP-ng environment to add a second storage device VDISK-1, a further 384GB virtual disk. It is these two drives that we will be merging to extend storage space on our PBS VM.

    Note that within the XCP-ng realms, storage devices are identified with an ‘x’ in front of the traditional Linux nomenclature of vda, vdb, vdc naming conventions of storage devices. So these become xvda, xvdb, xvdc and so on.. This is shown in the last column named Device path in the image above.

    PuttY and Commands summary

    We will be using the same tools including df, vgdisplay, lvdisplay, lsblk and other commands using commands using PuttY to SSH into our PBS server.

    lvdisplay (command)

    This allows us to see the Logical Volumes on our server. Note that one of the Logical Volumes created for us during installation of PBS is a SWAP volume. We simply note its’ existence but will not be making changes to it.

    What’s important and will be required in subsequent stages is the VG name and LV name.

    In particular, the Logical Volume assigned-name is of significance because, this ubiquitous keyword (root) can be misleading, yet we see that it is in fact the identifier of our Logical Volume…

    root@pbs:~# lvdisplay pbs
      --- Logical volume ---
      LV Path                /dev/pbs/swap
      LV Name                swap
      VG Name                pbs
      LV UUID                nSKo2U-QPjn-cHdG-Hw7d-arqf-4tOL-ibWzMF
      LV Write Access        read/write
      LV Creation host, time proxmox, 2025-09-29 19:12:03 +0100
      LV Status              available
      # open                 1
      LV Size                8.00 GiB
      Current LE             2048
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           252:0
    
      --- Logical volume ---
      LV Path                /dev/pbs/root
      LV Name                root
      VG Name                pbs
      LV UUID                ugJsDB-D6pi-qFSc-Tlpq-ot1T-vWpV-z1xy9Y
      LV Write Access        read/write
      LV Creation host, time proxmox, 2025-09-29 19:12:03 +0100
      LV Status              available
      # open                 1
      LV Size                <483.00 GiB
      Current LE             123647
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           252:1
    
    
    

    VG name is pbs
    LV name is root

    vgdisplay (command)

    root@pbs:~# vgdisplay
      --- Volume group ---
      VG Name               pbs
      System ID
      Format                lvm2
      Metadata Areas        2
      Metadata Sequence No  4
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                2
      Open LV               2
      Max PV                0
      Cur PV                2
      Act PV                2
      VG Size               894.99 GiB
      PE Size               4.00 MiB
      Total PE              229118
      Alloc PE / Size       125695 / <491.00 GiB
      Free  PE / Size       103423 / <404.00 GiB
      VG UUID               HHbHVs-QnrD-yEhZ-21TF-vGoW-v3EF-9SW9c8

    lsblk (command)

    root@pbs:~# lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT /dev/xvda
    NAME          SIZE TYPE FSTYPE      MOUNTPOINT
    xvda          512G disk
    ├─xvda1      1007K part
    ├─xvda2         1G part vfat
    └─xvda3       511G part LVM2_member
      ├─pbs-swap    8G lvm  swap        [SWAP]
      └─pbs-root  483G lvm  ext4        /
    root@pbs:~# df -hT -text4
    Filesystem           Type  Size  Used Avail Use% Mounted on
    /dev/mapper/pbs-root ext4  475G  451G     0 100% /
    

    pvcreate (command)

    root@pbs:~# pvcreate /dev/xvdb
      Can't initialize physical volume "/dev/xvdb" of volume group "pbs" without -ff
      /dev/xvdb: physical volume not initialized.
    root@pbs:~#
    root@pbs:~#
    root@pbs:~#
    root@pbs:~# pvdisplay
      --- Physical volume ---
      PV Name               /dev/xvda3
      VG Name               pbs
      PV Size               <511.00 GiB / not usable 2.98 MiB
      Allocatable           yes
      PE Size               4.00 MiB
      Total PE              130815
      Free PE               5120
      Allocated PE          125695
      PV UUID               FcsTw9-JCEk-Pkj4-cBlD-4Ch1-8zNq-zUnXcq
    
      --- Physical volume ---
      PV Name               /dev/xvdb
      VG Name               pbs
      PV Size               384.00 GiB / not usable 4.00 MiB
      Allocatable           yes
      PE Size               4.00 MiB
      Total PE              98303
      Free PE               98303
      Allocated PE          0
      PV UUID               Fjgen7-LAJk-SWZe-pCyW-2BxO-prZV-JX1Gnl

    resize (command)

    
    root@pbs:~# lvresize --extents +95%FREE --resizefs pbs/root
      File system ext4 found on pbs/root mounted at /.
      Size of logical volume pbs/root changed from <483.00 GiB (123647 extents) to 866.79 GiB (221899 extents).
      Extending file system ext4 to 866.79 GiB (930711863296 bytes) on pbs/root...
    resize2fs /dev/pbs/root
    resize2fs 1.47.2 (1-Jan-2025)
    Filesystem at /dev/pbs/root is mounted on /; on-line resizing required
    old_desc_blocks = 61, new_desc_blocks = 109
    The filesystem on /dev/pbs/root is now 227224576 (4k) blocks long.
    
    resize2fs done
      Extended file system ext4 on pbs/root.
      Logical volume pbs/root successfully resized.
    root@pbs:~# h

    Leave a Reply

    AI assistant