[Devel] simfs challenge

Konstantin Khorenko khorenko at virtuozzo.com
Thu Jan 28 01:27:19 PST 2016


Hi All,

so, this is the current situation with simfs:

First of all we cannot implement as it was previously (in OpenVZ 6, 2.6.32-x kernels).
This is because there is no vzfs in Virtuozzo 7, but all quota related code used by simfs
was shared between vzfs and simfs, and maintaining that code for simfs only is definitely
not the thing we'd be happy to do.
Yes, we definitely want to reuse some mainstream (or write a mainstream-able) code for it.

So, how this could be implemented?

"Old" simfs fs without quota - is just a bindmount => this is a start point.
1st level quota for simfs-based Containers (the quota for the Container as a whole) can be
implemented using project quota which is going to be accepted to mainstream sooner or later.

As for the 2nd level quota (per-user quota inside a CT), we had not found any good solution
during our internal discussions, so ideas from community are very welcome.

So what do we have at the moment: you can create a simfs-based Container in Virtuozzo 7
(see instructions below), but cannot manage quota for it.

What should be done further (that's what you can help us with):

1. Take project quota kernel patches (which Stas Kinsbursky alredy ported to vz7 kernel
some time ago), apply them to current vz7 kernel - you'll get the kernel able to manage
project quota.

2. Need to add project quota support to appropriate userspace tools: quota-tools and e2fsprogs
see details at https://bugs.openvz.org/browse/OVZ-6619

Hope that helps to understand our plans on simfs in Virtuozzo 7
and looking forward for a hero who could drive this forward! :)



More formal feature description is below:

===========================================================================================
1. Feature
simfs filesystem for Virtuozzo 7 Containers


2. Description
https://bugs.openvz.org/browse/OVZ-6613
https://jira.sw.ru/browse/PSBM-40730

Differences between recommended Containers disk backend (ploop) and simfs:
https://openvz.org/CT_storage_backends

Unlike previous versions of OpenVZ, simfs layout in Virtuozzo 7 is based on bindmounts.
This means once you start a simfs-based Container, effectively
"private" area of a Container is bindmounted to the "root" Container area.
That's it.

How to create a simfs-based Container:
* set VEFSTYPE=simfs in the /etc/vz/vz.conf
# vzctl create $VEID

3. Products
Virtuozzo 7, libvzctl-7.0.170


4. Testing
just a validation:
- create a Container
- start/stop the Container
- destroy the Container

5. Known issues
* quota for simfs-based Containers is not implemented
   - 1st level quota (for the Container as a whole) is planned to be implemented via project quota
     https://bugs.openvz.org/browse/OVZ-6619

   - 2nd level quota (per-user quota inside a Container) is not planned

* online migration of a simfs-based Container is not implemented


6. Feature owner
Kernel part:	Stanislav Kinsbursky <skinsbursky at virtuozzo.com>
Userspace part: Igor Sukhih <igor at virtuozzo.com>


--
Best regards,

Konstantin Khorenko,
Virtuozzo Linux Kernel Team


More information about the Devel mailing list