[libvirt] [PATCH rfc v2 0/8] fspool: backend directory
Maxim Nestratov
mnestratov at virtuozzo.com
Wed Sep 21 16:17:03 UTC 2016
> 20 сент. 2016 г., в 23:52, John Ferlan <jferlan at redhat.com> написал(а):
>
>
>
>> On 09/15/2016 03:32 AM, Olga Krishtal wrote:
>> Hi everyone, we would like to propose the first implementation of fspool
>> with directory backend.
>>
>> Filesystem pools is a facility to manage filesystems resources similar
>> to how storage pools manages volume resources. Furthermore new API follows
>> storage API closely where it makes sense. Uploading/downloading operations
>> are not defined yet as it is not obvious how to make it properly. I guess
>> we can use some kind of tar to make a stream from a filesystem. Please share
>> you thoughts on this particular issue.
>
>
> So how do you differentiate between with the existing <pool type="fs">
Pool type=fs still provides volumes, i. e. block devices rather than filesystem, though this storage pool can mount file systems resided on a source block device.
>
> http://libvirt.org/storage.html#StorageBackendFS
>
> Sure the existing fs pool requires/uses a source block device as the
> source path and this new variant doesn't require that source but seems
> to use some item in order to dictate how to "define" the source on the
> fly. Currently only a "DIR" is created - so how does that differ from a
> "dir" pool.
>
Same here, storage "dir" provides files, which are in fact block devices for guests. While filesystem pool "dir" provides guests with file systems.
> I think it'll be confusing to have and differentiate fspool and pool
> commands.
>
> I didn't dig through all the patches, but from the few I did look at it
> seems as though all that's done is to rip out the guts of stuff not
> desired from the storage pool driver and replace it with this new code
> attributing all the work to the new author/copyright. IOW: Lots of
> places where StoragePool appears to be exactly the same as the FSPool.
>
> I think you need to find a different means to do what you want. It's not
> 100% what the end goal is.
>
> I did download/git am the patches and scan a few patches...
> * In patch 2 you've totally missed how to modify libvirt_public.syms.
> * In patch 3, the build breaks in "conf/fs_conf" since the "if { if {}
> }" aren't done properly in virFSPoolDefFormatBuf.
> * In patch 5 the remote_protocol_structs fails check/syntax-check... I
> stopped there in my build each patch test.
>
> John
>
>>
>> The patchset provides 'dir' backend which simply expose directories in some
>> directory in host filesystem. The virsh commands are provided too. So it is
>> ready to play with, just replace 'pool' in xml descriptions and virsh commands
>> to 'fspool' and 'volume' to 'item'.
>> Examle and usage:
>> Define:
>> virsh -c qemu:///system fspool-define-as fs_pool_name dir --target /path/on/host
>> Build
>> virsh -c qemu:///system fspool-build fs_pool_name
>> Start
>> virsh -c qemu:///system fspool-start fs_pool_name
>> Look inside
>> virsh -c qemu:///system fspool-list (--all) fspool_name
>>
>> Fspool called POOL, on the host fs uses /fs_driver to hold items.
>> virsh -c qemu:///system fspool-dumpxml POOL
>> <fspool type='dir'>
>> <name>POOL</name>
>> <uuid>c57c9d7c-b1d5-4c45-ba9c-67f03d4da160</uuid>
>> <capacity unit='bytes'>733722615808</capacity>
>> <allocation unit='bytes'>1331486720</allocation>
>> <available unit='bytes'>534810800128</available>
>> <source>
>> </source>
>> <target>
>> <path>/fs_driver</path>
>> <permissions>
>> <mode>0755</mode>
>> <owner>0</owner>
>> <group>0</group>
>> </permissions>
>> </target>
>> </fspool>
>>
>> virsh -c qemu:///system fspool-info POOL
>> Name: POOL
>> UUID: c57c9d7c-b1d5-4c45-ba9c-67f03d4da160
>> State: running
>> Persistent: yes
>> Autostart: no autostart
>> Capacity: 683.33 GiB
>> Allocation: 1.24 GiB
>> Available: 498.08 GiB
>>
>> virsh -c qemu+unix:///system item-list POOL
>> Name Path
>> ------------------------------------------------------------------------------
>> item1 /fs_driver/item1
>> item10 /fs_driver/item10
>> item11 /fs_driver/item11
>> item12 /fs_driver/item12
>> item15 /fs_driver/item15
>>
>> Fspool of directory type is some directory on host fs that holds items (subdirs).
>> Example of usage for items:
>> virsh -c vz+unix:///system item-create-as POOL item1 1g - create item
>> virsh -c qemu+unix:///system item-dumpxml item1 POOL
>> <fsitem>
>> <name>item1</name>
>> <key>/fs_driver/item1</key>
>> <source>
>> </source>
>> <capacity unit='bytes'>0</capacity>
>> <allocation unit='bytes'>0</allocation>
>> <target>
>> <format type='dir'/>
>> </target>
>> </fsitem>
>>
>> virsh -c qemu+unix:///system item-info item1 POOL
>> Name: item1
>> Type: dir
>> Capacity: 683.33 GiB
>> Allocation: 634.87 MiB
>> Autostart: no autostart
>> Capacity: 683.33 GiB
>> Allocation: 1.24 GiB
>> Available: 498.08 GiB
>> virsh -c qemu+unix:///system item-list POOL
>> Name Path
>> ------------------------------------------------------------------------------
>> item1 /fs_driver/item1
>> item10 /fs_driver/item10
>> item11 /fs_driver/item11
>> item12 /fs_driver/item12
>> item15 /fs_driver/item15
>>
>> v2:
>> - renamed Fs to FS
>> - in configure.ac script macro m4 is used
>> - updates docs
>> - created simple tests
>> - updated virsh.pod
>> - added information abot fspool in fotmatfs.html
>>
>> Olga Krishtal (8):
>> fspool: introduce filesystem pools API
>> fspool: usual driver based implementation of filesystem pools API
>> fspools: configuration and internal representation
>> fspools: acl support for filesystem pools
>> remote: filesystem pools driver implementation
>> fspool: default implementation of filesystem pools
>> virsh: filesystem pools commands
>> fspools: docs and tests for fspool directory backend
>>
>> configure.ac | 38 +
>> daemon/Makefile.am | 4 +
>> daemon/libvirtd.c | 10 +
>> daemon/remote.c | 35 +
>> docs/formatfs.html.in | 208 ++
>> docs/fspool.html.in | 41 +
>> docs/schemas/fsitem.rng | 66 +
>> docs/schemas/fspool.rng | 82 +
>> docs/sitemap.html.in | 4 +
>> include/libvirt/libvirt-fs.h | 260 +++
>> include/libvirt/libvirt.h | 1 +
>> include/libvirt/virterror.h | 8 +
>> m4/virt-driver-fspool.m4 | 52 +
>> po/POTFILES.in | 6 +
>> src/Makefile.am | 46 +
>> src/access/viraccessdriver.h | 12 +
>> src/access/viraccessdrivernop.c | 19 +
>> src/access/viraccessdriverpolkit.c | 47 +
>> src/access/viraccessdriverstack.c | 49 +
>> src/access/viraccessmanager.c | 31 +
>> src/access/viraccessmanager.h | 11 +
>> src/access/viraccessperm.c | 15 +-
>> src/access/viraccessperm.h | 124 ++
>> src/check-driverimpls.pl | 2 +
>> src/conf/fs_conf.c | 1637 ++++++++++++++++
>> src/conf/fs_conf.h | 323 +++
>> src/datatypes.c | 154 ++
>> src/datatypes.h | 94 +
>> src/driver-fs.h | 192 ++
>> src/driver.h | 3 +
>> src/fs/fs_backend.h | 107 +
>> src/fs/fs_backend_dir.c | 355 ++++
>> src/fs/fs_backend_dir.h | 8 +
>> src/fs/fs_driver.c | 2058 ++++++++++++++++++++
>> src/fs/fs_driver.h | 10 +
>> src/libvirt-fs.c | 1556 +++++++++++++++
>> src/libvirt.c | 28 +
>> src/libvirt_private.syms | 53 +
>> src/libvirt_public.syms | 42 +
>> src/remote/remote_driver.c | 66 +
>> src/remote/remote_protocol.x | 466 ++++-
>> src/remote_protocol-structs | 165 ++
>> src/rpc/gendispatch.pl | 23 +-
>> src/util/virerror.c | 37 +
>> tests/Makefile.am | 12 +
>> tests/fsitemxml2xmlin/item.xml | 13 +
>> tests/fsitemxml2xmlout/item.xml | 13 +
>> tests/fsitemxml2xmltest.c | 105 +
>> .../dir-missing-target-path-invalid.xml | 12 +
>> tests/fspoolxml2xmlin/fspool-dir.xml | 16 +
>> tests/fspoolxml2xmlout/fspool-dir.xml | 16 +
>> tests/fspoolxml2xmltest.c | 81 +
>> tools/Makefile.am | 2 +
>> tools/virsh-fsitem.c | 1292 ++++++++++++
>> tools/virsh-fsitem.h | 39 +
>> tools/virsh-fspool.c | 1586 +++++++++++++++
>> tools/virsh-fspool.h | 38 +
>> tools/virsh.c | 4 +
>> tools/virsh.h | 9 +
>> tools/virsh.pod | 252 ++-
>> 60 files changed, 12028 insertions(+), 10 deletions(-)
>> create mode 100644 docs/formatfs.html.in
>> create mode 100644 docs/fspool.html.in
>> create mode 100644 docs/schemas/fsitem.rng
>> create mode 100644 docs/schemas/fspool.rng
>> create mode 100644 include/libvirt/libvirt-fs.h
>> create mode 100644 m4/virt-driver-fspool.m4
>> create mode 100644 src/conf/fs_conf.c
>> create mode 100644 src/conf/fs_conf.h
>> create mode 100644 src/driver-fs.h
>> create mode 100644 src/fs/fs_backend.h
>> create mode 100644 src/fs/fs_backend_dir.c
>> create mode 100644 src/fs/fs_backend_dir.h
>> create mode 100644 src/fs/fs_driver.c
>> create mode 100644 src/fs/fs_driver.h
>> create mode 100644 src/libvirt-fs.c
>> create mode 100644 tests/fsitemxml2xmlin/item.xml
>> create mode 100644 tests/fsitemxml2xmlout/item.xml
>> create mode 100644 tests/fsitemxml2xmltest.c
>> create mode 100644 tests/fspoolschemadata/dir-missing-target-path-invalid.xml
>> create mode 100644 tests/fspoolxml2xmlin/fspool-dir.xml
>> create mode 100644 tests/fspoolxml2xmlout/fspool-dir.xml
>> create mode 100644 tests/fspoolxml2xmltest.c
>> create mode 100644 tools/virsh-fsitem.c
>> create mode 100644 tools/virsh-fsitem.h
>> create mode 100644 tools/virsh-fspool.c
>> create mode 100644 tools/virsh-fspool.h
>>
More information about the libvir-list
mailing list