Backup Storage

Disk Management

List of disks

Proxmox Backup Server comes with a set of disk utilities, which are accessed using the disk subcommand. This subcommand allows you to initialize disks, create various filesystems, and get information about the disks.

To view the disks connected to the system, navigate to Administration -> Disks in the web interface or use the list subcommand of disk:

# proxmox-backup-manager disk list
┌──────┬────────┬─────┬───────────┬─────────────┬───────────────┬─────────┬────────┐
│ name │ used   │ gpt │ disk-type │        size │ model         │ wearout │ status │
╞══════╪════════╪═════╪═══════════╪═════════════╪═══════════════╪═════════╪════════╡
│ sda  │ lvm    │   1 │ hdd       │ 34359738368 │ QEMU_HARDDISK │       - │ passed │
├──────┼────────┼─────┼───────────┼─────────────┼───────────────┼─────────┼────────┤
│ sdb  │ unused │   1 │ hdd       │ 68719476736 │ QEMU_HARDDISK │       - │ passed │
├──────┼────────┼─────┼───────────┼─────────────┼───────────────┼─────────┼────────┤
│ sdc  │ unused │   1 │ hdd       │ 68719476736 │ QEMU_HARDDISK │       - │ passed │
└──────┴────────┴─────┴───────────┴─────────────┴───────────────┴─────────┴────────┘

To initialize a disk with a new GPT, use the initialize subcommand:

# proxmox-backup-manager disk initialize sdX
Create a directory

You can create an ext4 or xfs filesystem on a disk using fs create, or by navigating to Administration -> Disks -> Directory in the web interface and creating one from there. The following command creates an ext4 filesystem and passes the --add-datastore parameter, in order to automatically create a datastore on the disk (in this case sdd). This will create a datastore at the location /mnt/datastore/store1:

# proxmox-backup-manager disk fs create store1 --disk sdd --filesystem ext4 --add-datastore true
Create ZFS

You can also create a zpool with various raid levels from Administration -> Disks -> Zpool in the web interface, or by using zpool create. The command below creates a mirrored zpool using two disks (sdb & sdc) and mounts it under /mnt/datastore/zpool1:

# proxmox-backup-manager disk zpool create zpool1 --devices sdb,sdc --raidlevel mirror

Note

You can also pass the --add-datastore parameter here, to automatically create a datastore from the disk.

You can use disk fs list and disk zpool list to keep track of your filesystems and zpools respectively.

Proxmox Backup Server uses the package smartmontools. This is a set of tools used to monitor and control the S.M.A.R.T. system for local hard disks. If a disk supports S.M.A.R.T. capability, and you have this enabled, you can display S.M.A.R.T. attributes from the web interface or by using the command:

# proxmox-backup-manager disk smart-attributes sdX

Note

This functionality may also be accessed directly through the use of the smartctl command, which comes as part of the smartmontools package (see man smartctl for more details).

Datastore

A datastore refers to a location at which backups are stored. The current implementation uses a directory inside a standard Unix file system (ext4, xfs or zfs) to store the backup data.

Datastores are identified by a simple ID. You can configure this when setting up the datastore. The configuration information for datastores is stored in the file /etc/proxmox-backup/datastore.cfg.

Note

The File Layout requires the file system to support at least 65538 subdirectories per directory. That number comes from the 216 pre-created chunk namespace directories, and the . and .. default directory entries. This requirement excludes certain filesystems and filesystem configuration from being supported for a datastore. For example, ext3 as a whole or ext4 with the dir_nlink feature manually disabled.

Datastore Configuration

Datastore Overview

You can configure multiple datastores. Minimum one datastore needs to be configured. The datastore is identified by a simple name and points to a directory on the filesystem. Each datastore also has associated retention settings of how many backup snapshots for each interval of hourly, daily, weekly, monthly, yearly as well as a time-independent number of backups to keep in that store. Pruning and Removing Backups and garbage collection can also be configured to run periodically based on a configured schedule (see Calendar Events) per datastore.

Creating a Datastore

Create a datastore

You can create a new datastore from the web interface, by clicking Add Datastore in the side menu, under the Datastore section. In the setup window:

  • Name refers to the name of the datastore
  • Backing Path is the path to the directory upon which you want to create the datastore
  • GC Schedule refers to the time and intervals at which garbage collection runs
  • Prune Schedule refers to the frequency at which pruning takes place
  • Prune Options set the amount of backups which you would like to keep (see Pruning and Removing Backups).
  • Comment can be used to add some contextual information to the datastore.

Alternatively you can create a new datastore from the command line. The following command creates a new datastore called store1 on /backup/disk1/store1

# proxmox-backup-manager datastore create store1 /backup/disk1/store1

Managing Datastores

To list existing datastores from the command line run:

# proxmox-backup-manager datastore list
┌────────┬──────────────────────┬─────────────────────────────┐
│ name   │ path                 │ comment                     │
╞════════╪══════════════════════╪═════════════════════════════╡
│ store1 │ /backup/disk1/store1 │ This is my default storage. │
└────────┴──────────────────────┴─────────────────────────────┘

You can change the garbage collection and prune settings of a datastore, by editing the datastore from the GUI or by using the update subcommand. For example, the below command changes the garbage collection schedule using the update subcommand and prints the properties of the datastore with the show subcommand:

# proxmox-backup-manager datastore update store1 --gc-schedule 'Tue 04:27'
# proxmox-backup-manager datastore show store1
┌────────────────┬─────────────────────────────┐
│ Name           │ Value                       │
╞════════════════╪═════════════════════════════╡
│ name           │ store1                      │
├────────────────┼─────────────────────────────┤
│ path           │ /backup/disk1/store1        │
├────────────────┼─────────────────────────────┤
│ comment        │ This is my default storage. │
├────────────────┼─────────────────────────────┤
│ gc-schedule    │ Tue 04:27                   │
├────────────────┼─────────────────────────────┤
│ keep-last      │ 7                           │
├────────────────┼─────────────────────────────┤
│ prune-schedule │ daily                       │
└────────────────┴─────────────────────────────┘

Finally, it is possible to remove the datastore configuration:

# proxmox-backup-manager datastore remove store1

Note

The above command removes only the datastore configuration. It does not delete any data from the underlying directory.

File Layout

After creating a datastore, the following default layout will appear:

# ls -arilh /backup/disk1/store1
276493 -rw-r--r-- 1 backup backup       0 Jul  8 12:35 .lock
276490 drwxr-x--- 1 backup backup 1064960 Jul  8 12:35 .chunks

.lock is an empty file used for process locking.

The .chunks directory contains folders, starting from 0000 and taking hexadecimal values until ffff. These directories will store the chunked data after a backup operation has been executed.

# ls -arilh /backup/disk1/store1/.chunks
545824 drwxr-x--- 2 backup backup 4.0K Jul  8 12:35 ffff
545823 drwxr-x--- 2 backup backup 4.0K Jul  8 12:35 fffe
415621 drwxr-x--- 2 backup backup 4.0K Jul  8 12:35 fffd
415620 drwxr-x--- 2 backup backup 4.0K Jul  8 12:35 fffc
353187 drwxr-x--- 2 backup backup 4.0K Jul  8 12:35 fffb
344995 drwxr-x--- 2 backup backup 4.0K Jul  8 12:35 fffa
144079 drwxr-x--- 2 backup backup 4.0K Jul  8 12:35 fff9
144078 drwxr-x--- 2 backup backup 4.0K Jul  8 12:35 fff8
144077 drwxr-x--- 2 backup backup 4.0K Jul  8 12:35 fff7
...
403180 drwxr-x--- 2 backup backup 4.0K Jul  8 12:35 000c
403179 drwxr-x--- 2 backup backup 4.0K Jul  8 12:35 000b
403177 drwxr-x--- 2 backup backup 4.0K Jul  8 12:35 000a
402530 drwxr-x--- 2 backup backup 4.0K Jul  8 12:35 0009
402513 drwxr-x--- 2 backup backup 4.0K Jul  8 12:35 0008
402509 drwxr-x--- 2 backup backup 4.0K Jul  8 12:35 0007
276509 drwxr-x--- 2 backup backup 4.0K Jul  8 12:35 0006
276508 drwxr-x--- 2 backup backup 4.0K Jul  8 12:35 0005
276507 drwxr-x--- 2 backup backup 4.0K Jul  8 12:35 0004
276501 drwxr-x--- 2 backup backup 4.0K Jul  8 12:35 0003
276499 drwxr-x--- 2 backup backup 4.0K Jul  8 12:35 0002
276498 drwxr-x--- 2 backup backup 4.0K Jul  8 12:35 0001
276494 drwxr-x--- 2 backup backup 4.0K Jul  8 12:35 0000
276489 drwxr-xr-x 3 backup backup 4.0K Jul  8 12:35 ..
276490 drwxr-x--- 1 backup backup 1.1M Jul  8 12:35 .