Simfs filesystem for Virtuozzo 7 Containers

From OpenVZ Virtuozzo Containers Wiki
Jump to: navigation, search

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:


Feature

simfs filesystem for Virtuozzo 7 Containers


Description

Differences between recommended Containers disk backend (ploop) and simfs.

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
  • create container: vzctl create $VEID

Products

Virtuozzo 7, libvzctl-7.0.170


Testing

just a validation:

  • create a Container
  • start/stop the Container
  • destroy the Container

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 in 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


Feature owner

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