6,534
edits
Changes
removed translate tags
Everything you wanted to know about DISKINODES for ploop but were afraid to ask.
== Limitations == <!--T:2-->
With simfs layout, vzquota is used to set limits for DISKSPACE and
DISKINODES, so these limits can be changed any time.
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.
{{Note|There is no way to change DISKINODES for existing ploop. This is a limitation of ext4.}}
In other words, <code>vzctl set --diskinodes</code> is ignored for ploop layout -- it can only be specified on create.
== Default value == <!--T:7-->
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.
For example, when creating a ploop with 40GB of disk space, 2621440 inodes
will be available:
<math>\frac{40 * 1024 * 1024}{16} = 2621440</math>
== Increasing == <!--T:11-->
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'''.
{{Note|The feature works since vzctl 4.7.}}
{{Note|You can only specify <code>--diskinodes</code> for <code>vzctl create</code> or <code>vzctl convert</code>.}}
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.
Example:
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-->
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:
...
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]
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).
'''Solution 1''': please be reasonable when requesting diskinodes for ploop.
'''Solution 2''': please set DISKINODES to 0 before conversion:
vzctl set ''CTID'' --diskspace ''xxx''G --diskinodes 0 --save
vzctl convert ''CTID''
This will lead to creating a filesystem with default number of inodes.
=== Too low DISKINODES value === <!--T:28-->
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
[[Category: Storage]]