Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Remote configuration of a LIO-based storage appliance
Python Groff
branch: master

Check for -1 values when retrieving percentages

targetd was returning -3169126500561983635456 for a thinpool free space
during testing.  This was caused by the api returning -1 when retrieving
the property 'data_percent' & 'metadata_percent'.  This patch checks for
this and returns the full size for the free size if we are unable to get
actual values of consumed percentages.

Signed-off-by: Tony Asleson <>
latest commit 4c470ed245
@tasleson tasleson authored committed

targetd logo

Remote configuration of a LIO-based storage appliance

targetd turns Linux into a remotely-configurable storage appliance. It supports an HTTP/jsonrpc-2.0 interface to let a remote administrator allocate volumes from an LVM volume group, and export those volumes over iSCSI. It also has the ability to create remote file systems and export those file systems via NFS/CIFS (work in progress).

targetd's sister project is libstoragemanagement, which allows admins to configure storage arrays (including targetd) in an array-neutral manner.

targetd development

targetd is licensed under the GPLv3. Contributions are welcome.

NOTE: targetd is STORAGE-RELATED software, and may be used to remove volumes and file systems without warning from the resources it is configured to use. Please take care in its use.

Getting Started

targetd has these Python library dependencies:

All of these are available in Fedora Rawhide.

Configuring targetd

A configuration file may be placed at /etc/target/targetd.yaml, and is in YAML format. Here's an example:

user: "foo" # strings quoted, or not
password: bar
ssl: false

block_pools: [vg-targetd, vg-targetd-too]
fs_pools: [/mnt/btrfs]

targetd defaults to using the "vg-targetd" volume group, and username 'admin'. The admin password does not have a default -- each installation must set it.

Then, run sudo ./ is a basic testing script, to get started making API calls.

Something went wrong with that request. Please try again.