[libvirt] RFC filesystem pool proposal description.

Olga Krishtal okrishtal at virtuozzo.com
Thu Apr 28 16:57:14 UTC 2016


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














More information about the libvir-list mailing list