Storage ======= .. _storage_disk_management: Disk Management --------------- .. image:: images/screenshots/pbs-gui-disks.png :align: right :alt: 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``: .. code-block:: console # 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: .. code-block:: console # proxmox-backup-manager disk initialize sdX .. image:: images/screenshots/pbs-gui-disks-dir-create.png :align: right :alt: 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``: .. code-block:: console # proxmox-backup-manager disk fs create store1 --disk sdd --filesystem ext4 --add-datastore true .. image:: images/screenshots/pbs-gui-disks-zfs-create.png :align: right :alt: 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``: .. code-block:: console # 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: .. code-block:: console # 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_intro: :term:`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 2\ :sup:`16` 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 ~~~~~~~~~~~~~~~~~~~~~~~ .. image:: images/screenshots/pbs-gui-datastore-content.png :align: right :alt: 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. :ref:`backup-pruning` and :ref:`garbage collection ` can also be configured to run periodically based on a configured schedule (see :ref:`calendar-events`) per datastore. .. _storage_datastore_create: Creating a Datastore ^^^^^^^^^^^^^^^^^^^^ .. image:: images/screenshots/pbs-gui-datastore-create-general.png :align: right :alt: 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 :ref:`backup-pruning`). * *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 :file:`/backup/disk1/store1` .. code-block:: console # proxmox-backup-manager datastore create store1 /backup/disk1/store1 Managing Datastores ^^^^^^^^^^^^^^^^^^^ To list existing datastores from the command line run: .. code-block:: console # 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: .. code-block:: console # 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: .. code-block:: console # 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: .. code-block:: console # 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. .. code-block:: console # 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 .