Difference between revisions of "Ploop/sparse"

From OpenVZ Virtuozzo Containers Wiki
Jump to: navigation, search
(Marked this version for translation)
(rm translate tags)
 
Line 1: Line 1:
−
<translate>
 
−
<!--T:1-->
 
 
'''Sparse file''' is a file that contains blocks of zeroes that are not allocated on disk (see [[w:Sparse file]]). By design, ploop images can't contain such non-allocated blocks.
 
'''Sparse file''' is a file that contains blocks of zeroes that are not allocated on disk (see [[w:Sparse file]]). By design, ploop images can't contain such non-allocated blocks.
  
−
<!--T:2-->
 
 
While ploop is never creating sparse image files, they can be accidentally made so when tools such as <code>rsync --sparse</code> or <code>cp --sparse=always</code> are used to copy images. So, one should not use backup or copy tools that create sparse files out of non-sparse ones.
 
While ploop is never creating sparse image files, they can be accidentally made so when tools such as <code>rsync --sparse</code> or <code>cp --sparse=always</code> are used to copy images. So, one should not use backup or copy tools that create sparse files out of non-sparse ones.
  
−
== Kernel warning == <!--T:3-->
+
== Kernel warning ==
  
−
<!--T:4-->
 
 
In case sparse file is detected by the kernel, it gives a warning in dmesg, for example:
 
In case sparse file is detected by the kernel, it gives a warning in dmesg, for example:
  
−
  <!--T:5-->
+
  Nov 21 20:37:27 sun kernel: [43451.057489] ploop(24002): a hole in image file detected (0)
−
Nov 21 20:37:27 sun kernel: [43451.057489] ploop(24002): a hole in image file detected (0)
 
  
−
<!--T:6-->
 
 
In case there are no other ploop-related warnings or errors immediately after, this one is harmless ({{B|2825}}).
 
In case there are no other ploop-related warnings or errors immediately after, this one is harmless ({{B|2825}}).
  
−
== Userspace warnings == <!--T:7-->
+
== Userspace warnings ==
  
−
<!--T:8-->
 
 
You might see something like this (reported by ploop library) during container start or mount:
 
You might see something like this (reported by ploop library) during container start or mount:
  
−
  <!--T:9-->
+
  Error in check_and_repair_sparse (check.c:542): Delta file /vz/private/1407/root.hdd/root.hdd contains uninitialized blocks (offset=135573536768 len=1323008) which are not aligned to cluster size
−
Error in check_and_repair_sparse (check.c:542): Delta file /vz/private/1407/root.hdd/root.hdd contains uninitialized blocks (offset=135573536768 len=1323008) which are not aligned to cluster size
 
 
  Error in fill_hole (check.c:456): Warning: ploop image '/vz/private/1407/root.hdd/root.hdd' is sparse
 
  Error in fill_hole (check.c:456): Warning: ploop image '/vz/private/1407/root.hdd/root.hdd' is sparse
 
  Reallocating sparse blocks back
 
  Reallocating sparse blocks back
  
−
<!--T:10-->
 
 
The last line tells that ploop library is going to fix the problem.
 
The last line tells that ploop library is going to fix the problem.
  
−
== How to fix == <!--T:11-->
+
== How to fix ==
  
−
<!--T:12-->
 
 
Since [[Download/ploop/1.10|ploop-1.10]], ploop images are checked for being sparse and are automatically fixed on mount, in case DiskDescriptor.xml is used. Otherwise, you can use <code>ploop check --repair-sparse</code> to check for and repair such images.
 
Since [[Download/ploop/1.10|ploop-1.10]], ploop images are checked for being sparse and are automatically fixed on mount, in case DiskDescriptor.xml is used. Otherwise, you can use <code>ploop check --repair-sparse</code> to check for and repair such images.
  
−
<!--T:13-->
+
Alternatively, you can just do something like this to get rid of holes. Make sure ploop file is not used!
−
Alternatelely, you can just do something like this to get rid of holes. Make sure ploop file is not used!
 
  
−
  <!--T:14-->
+
  cat root.hdd > root.hdd2 && mv root.hdd2 root.hdd
−
cat root.hdd > root.hdd2 && mv root.hdd2 root.hdd
+
 
 +
== See also ==
  
−
== See also == <!--T:15-->
 
  
−
<!--T:16-->
 
 
* [[Ploop]]
 
* [[Ploop]]
 
* [[w:Sparse file]]
 
* [[w:Sparse file]]
−
</translate>
 
  
 
[[Category: Storage]]
 
[[Category: Storage]]
 
[[Category: Troubleshooting]]
 
[[Category: Troubleshooting]]

Latest revision as of 15:27, 10 March 2021

Sparse file is a file that contains blocks of zeroes that are not allocated on disk (see w:Sparse file). By design, ploop images can't contain such non-allocated blocks.

While ploop is never creating sparse image files, they can be accidentally made so when tools such as rsync --sparse or cp --sparse=always are used to copy images. So, one should not use backup or copy tools that create sparse files out of non-sparse ones.

Kernel warning[edit]

In case sparse file is detected by the kernel, it gives a warning in dmesg, for example:

Nov 21 20:37:27 sun kernel: [43451.057489] ploop(24002): a hole in image file detected (0)

In case there are no other ploop-related warnings or errors immediately after, this one is harmless (#2825).

Userspace warnings[edit]

You might see something like this (reported by ploop library) during container start or mount:

Error in check_and_repair_sparse (check.c:542): Delta file /vz/private/1407/root.hdd/root.hdd contains uninitialized blocks (offset=135573536768 len=1323008) which are not aligned to cluster size
Error in fill_hole (check.c:456): Warning: ploop image '/vz/private/1407/root.hdd/root.hdd' is sparse
Reallocating sparse blocks back

The last line tells that ploop library is going to fix the problem.

How to fix[edit]

Since ploop-1.10, ploop images are checked for being sparse and are automatically fixed on mount, in case DiskDescriptor.xml is used. Otherwise, you can use ploop check --repair-sparse to check for and repair such images.

Alternatively, you can just do something like this to get rid of holes. Make sure ploop file is not used!

cat root.hdd > root.hdd2 && mv root.hdd2 root.hdd

See also[edit]