# Storage management architecture

The storage management APIs are based around 2 core concepts

1. Volume - a single storage volume which can be assigned to a guest, or used for creating further pools. A volume is either a block device, a raw file, or a special format file.
2. Pool - provides a means for taking a chunk of storage and carving it up into volumes. A pool can be used to manage things such as a physical disk, a NFS server, a iSCSI target, a host adapter, an LVM group.

These two concepts are mapped through to two libvirt objects, a `virStorageVolPtr` and a `virStoragePoolPtr`, each with a collection of APIs for their management.