In this proposal description we would like to introduce a separate pool type:fspool. Fspool provides and manages filesystems. Below are listed possible examples of fspool, depending on source type: volume, directory or network. Volume fspool uses storage pool volume to reside upon. <fspool type = 'volume'> <name>fspool</name> <uuid>cb07b799-8e03-485c-aaa0-7c88f60b37b0</uuid> <allocation>0</allocation> <capacity>0<capacity> <source> <pool ='pool name'/> <volume='volume name'/> <format type = 'ext4'/> (ext4, zfs - depending on type of volume that is used as a backend). <source/> <target> <path>/path/to/fspool</path> <permissions> <mode>0777</mode> <owner>0</owner> <group>0</group> </permissions> </target> </fspool> Directory fspool represents a host directory: <fspool type = 'dir'> <name>fspool</name> <uuid>cb07b799-8e03-485c-aaa0-7c88f60b37b0</uuid> <target> <path>/path/to/fspool/root</path> <permissions> <mode>0777</mode> <owner>0</owner> <group>0</group> </permissions> </target> </fspool> Network fspool is similar to previous one, except it is remote: <fspool type='network'> <name>fspool</name> <uuid>b27a72b5-a92e-4e58-a172-a80ba73b30fe</uuid> <source> <host name='X.X.X.X'/> - if the pool is not on the host <dir path='some/directory/exposed/to/our/host'/> </source> <target> <path>/fspool</path> </target> </fspool> basic API for fspool management: fspool-define fspool-build fspool-start fspool-stop fspool-destroy fspool-undefine Fspools are divided into fs items. Single item is a directory inside the fspool root directory. Fs item example is listed below: <fs> <name>item</name> <allocation>0</allocation> <capacity>0<capacity> <source>fspool='name'</source> <target> <path>/fspool</path> </target> <permissions> <mode>0777</mode> <owner>0</owner> <group>0</group> <cgroups> Limits</cgroups> </permissions> </fs> - allocation/capacity - is omitted when fspools type is directory. - target path is a path to fs item from the fspool root. If it is not present then the content of item is placed directly in fspool root. - cgroups can be used in order to manipulate space usage politics. Fs items will be manipulated via fs API: fs-define fs-delete fs-list In addition to containers use-cases, fspools are also useful for libvirt itself - they will help store and easily manage some internal metadata, such as snapshots or internal connection driver information (logs, domain configurations, etc). Please, take a look and share your opinion. Olga -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list