Open main menu

OpenVZ Virtuozzo Containers Wiki β

Changes

Ploop/diskinodes

351 bytes added, 08:42, 26 December 2015
Marked this version for translation
<translate>
<!--T:1-->
Everything you wanted to know about DISKINODES for ploop but were afraid to ask.
== Limitations ==<!--T:2-->
<!--T:3-->
With simfs layout, vzquota is used to set limits for DISKSPACE and
DISKINODES, so these limits can be changed any time.
<!--T:4-->
Unlike simfs, ploop contains a real file system, so amount of disk space
and disk inodes are properties of the file system, determined while
inodes.
<!--T:5-->
{{Note|There is no way to change DISKINODES for existing ploop. This is a limitation of ext4.}}
<!--T:6-->
In other words, <code>vzctl set --diskinodes</code> is ignored for ploop layout -- it can only be specified on create.
== Default value ==<!--T:7-->
<!--T:8-->
By default, ext4 allocates 1 (one) inode per each 16 KB of data; this is
practically the same as to assume that the average file size will be 16KB.
<!--T:9-->
For example, when creating a ploop with 40GB of disk space, 2621440 inodes
will be available:
<!--T:10-->
<math>\frac{40 * 1024 * 1024}{16} = 2621440</math>
== Increasing ==<!--T:11-->
<!--T:12-->
If the above default is too low for your usage (for example, a container
has or will have too many small files), you can specify a larger value
for DISKINODES '''during container creation or conversion only'''.
<!--T:13-->
{{Note|The feature works since vzctl 4.7.}}
<!--T:14-->
{{Note|You can only specify <code>--diskinodes</code> for <code>vzctl create</code> or <code>vzctl convert</code>.}}
<!--T:15-->
The way it works is the following. First, a file system big enough
to accommodate the requested number of DISKINODES is created, and then
requested amount of DISKSPACE.
<!--T:16-->
Example:
<!--T:17-->vzctl create 123 --diskspace 40G --diskinodes 5242880
<!--T:18-->
Here, a filesystem big enough to have 5242880 of diskinodes
will be created (it's 5242880 * 16K = 80G), then downsized to 40G.
== Issues ==<!--T:19-->
=== Too high DISKINODES value ===<!--T:20-->
<!--T:21-->
Sometimes, when the amount of DISKINODES specified is too high,
a very large filesystem is created, and it can not be downsized
shown when converting a container from simfs to ploop:
<!--T:22-->vzctl set ''CTID'' --diskspace 40G --diskinodes 1000000000 --save
...
vzctl convert ''CTID''
Failed to resize image: Error in ploop_resize_image (ploop.c:2477): Unable to change image size to 83877888 sectors, minimal size is 502423144 [38]
<!--T:23-->
In this case, 1G inodes requirement leads to creation of 16TB filesystem
(remember, 1 inode per 16K). Unfortunately, such huge FS can't be downsized
the error message are in sectors which are 512 bytes each).
<!--T:24-->
'''Solution 1''': please be reasonable when requesting diskinodes for ploop.
<!--T:25-->
'''Solution 2''': please set DISKINODES to 0 before conversion:
<!--T:26-->vzctl stop ''CTID''
vzctl set ''CTID'' --diskspace ''xxx''G--diskinodes 0 --save
vzctl convert ''CTID''
<!--T:27-->
This will lead to creating a filesystem with default number of inodes.
=== Too low DISKINODES value ===<!--T:28-->
<!--T:29-->
If DISKINODES specified during <code>create</code> or <code>convert</code> is
lower than the default (1 inode per 16K of disk space), it is silently ignored.
In other words, there is no way to limit DISKINODES to lower than DISKSPACE / 16384.
== See also ==<!--T:30-->
* {{git commit|vzctl|ef320d32a4}}
* https://lists.openvz.org/pipermail/users/2014-October/005913.html