Changes

Jump to: navigation, search

Man/ploop.8

24,633 bytes added, 18:51, 28 November 2016
Bot: Automated import of articles *** existing text overwritten ***
[<b>-t&nbsp;</b><i>fstype</i>]
[<b>-b&nbsp;</b><i>blocksize</i>]
[<b>-B&nbsp;</b><i>fsblocksize</i>] [<b>--nolazy</b>]<i>delta_file</i></p></td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<b>-m</b> <i>mount_point</i> | <i>DiskDescriptor.xml</i> |
<i>image_file</i> }</p></td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="20%">
 
<p style="margin-top: 1em"><b>ploop&nbsp;replace</b></p></td>
<td width="69%">
 
<p style="margin-top: 1em">{ <b>-u</b> <i>uuid</i> |
<b>-l</b> <i>level</i> | <b>-o</b> <i>cur_image_file</i> }
[<b>--keep-name</b>] <b>-i</b> <i>image_file
DiskDescriptor.xml</i></p> </td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<p style="margin-top: 1em">{ <b>-f</b> <i>format</i> |
<b>-v</b> <i>version</i> } <i>DiskDescriptor.xml</i></p></td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="20%">
 
<p style="margin-top: 1em"><b>ploop&nbsp;check</b></p></td>
<td width="69%">
</td></tr>
</table>
 
<p style="margin-left:11%;">[<b>-u&nbsp;</b><i>uuid</i>]
<i>DiskDescriptor.xml</i></p>
 
<table width="100%" border="0" rules="none" frame="void"
cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="11%"></td>
<td width="17%">
 
<p style="margin-top: 1em"><b>ploop&nbsp;check</b></p></td>
<td width="72%">
 
<p style="margin-top: 1em">[<b>--force</b>]
[<b>--hard-force</b>] [<b>--check</b>] [<b>--ro</b>]
[<b>--silent</b>] [<b>--drop-inuse</b>] [<b>--raw</b>]
[<b>--blocksize&nbsp;</b><i>size</i>]
[<b>--repair-sparse</b>] <i>image_file</i></p></td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="17%">
 
<p style="margin-top: 1em"><b>ploop&nbsp;info</b></p></td>
<td width="72%">
 
<p style="margin-top: 1em">[<b>-s</b>] [<b>-d</b>]
<i>DiskDescriptor.xml</i></p> </td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="17%">
 
<p style="margin-top: 1em"><b>ploop&nbsp;list</b></p></td>
<td width="72%">
 
<p style="margin-top: 1em">[<b>-a</b>]</p></td></tr>
</table>
<p style="margin-top: 1em"><b>ploop&nbsp;snapshot-merge</b></p> </td>
<td width="4357%">
<p style="margin-top: 1em">[<b>-u&nbsp;</b><i>uuid&nbsp;</i>[<b>-U&nbsp;</b><i>uuid2</i>]&nbsp;|&nbsp;<b>-A</b>][<b>-n&nbsp;</b><i>new_delta</i>]<i>DiskDescriptor.xml</i></p> </td><td width="14%"></td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<p style="margin-top: 1em"><b>ploop&nbsp;snapshot-switch</b></p> </td>
<td width="4357%">
<p style="margin-top: 1em"><b>-u</b> <i>uuid
DiskDescriptor.xml</i></p> </td><td width="14%"></td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<p style="margin-top: 1em"><b>ploop&nbsp;snapshot-delete</b></p> </td>
<td width="4357%">
<p style="margin-top: 1em"><b>-u</b> <i>uuid
DiskDescriptor.xml</i></p> </td><td width="14%"></td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<p style="margin-top: 1em"><b>ploop&nbsp;snapshot-list</b></p> </td>
<td width="43%"></td><td width="1457%">
</td></tr>
</table>
<p style="margin-left:11%;">[<b>-H</b>]
[<b>-u&nbsp;</b><i>uuid</i>] [<b>-s</b>]
[<b>-o&nbsp;</b><i>field</i>[,<i>field</i>...]]
<i>DiskDescriptor.xml</i></p>
 
<table width="100%" border="0" rules="none" frame="void"
cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="11%"></td>
<td width="15%">
 
<p style="margin-top: 1em"><b>ploop&nbsp;copy</b></p></td>
<td width="2%"></td>
<td width="72%">
 
<p style="margin-top: 1em"><b>-s</b> <i>device</i>
[<b>-F&nbsp;</b><i>stop_command</i>] {
[<b>-d&nbsp;</b><i>file</i>] |
[<b>-o&nbsp;</b><i>output_fd</i>]
[<b>-f&nbsp;</b><i>feedback_fd</i>] }</p></td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="15%">
 
<p style="margin-top: 1em"><b>ploop&nbsp;copy</b></p></td>
<td width="2%"></td>
<td width="72%">
 
<p style="margin-top: 1em"><b>-d</b> <i>file</i>
[<b>-i&nbsp;</b><i>input_fd</i>]
[<b>-f&nbsp;</b><i>feedback_fd</i>]</p> </td></tr>
</table>
 
<table width="100%" border="0" rules="none" frame="void"
cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
 
<p style="margin-top: 1em"><b>ploop&nbsp;balloon&nbsp;discard</b></p> <td width="45%"></td>
<td width="50%">
 
<p style="margin-top: 1em">[<b>--automount</b>]
[<b>--to-free&nbsp;</b><i>size</i>]
[<b>--min-block&nbsp;</b><i>min_size</i>] [<b>--defrag</b>]
<i>DiskDescriptor.xml</i></p> </td>
<td width="5%">
</td></tr>
</table>
 
<table width="100%" border="0" rules="none" frame="void"
cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
 
<p style="margin-top: 1em"><b>ploop&nbsp;restore-descriptor</b></p> <td width="49%"></td>
<td width="51%">
 
<p style="margin-top: 1em"><b>-f</b> <i>format</i>
[<b>-b&nbsp;</b><i>blocksize</i>] <i>disk_dir
delta_file</i></p> </td></tr>
</table>
== DESCRIPTION ==
the form with DiskDescriptor.xml.</p>
==OPTIONS = BASIC COMMANDS = <p style="margin-left:11%; margin-top: 1em">Run<b>ploop</b> without any options to show a short synopsys,including a list of commands.</p> <p style="margin-left:11%; margin-top: 1em">Run<b>ploop</b> <i>command</i> to show synopsys and a shortdescription for a particular <i>command</i>.</p> === Basic commands ===
==== init ====
<p style="margin-left:11%; margin-top: 1em">Create andinitalize a ploop image file and a corresponding<b>DiskDescriptor.xml</b> file.</p>
<table width="100%" border="0" rules="none" frame="void"
[<b>-t&nbsp;</b><i>fstype</i>]
[<b>-b&nbsp;</b><i>blocksize</i>]
[<b>-B&nbsp;</b><i>fsblocksize</i>] [<b>--nolazy</b>]<i>delta_file</i></p></td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="72%">
<p>Image format. See <b>IMAGE FORMATSImage formats</b> below.</p></td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<p>Image version, can be <b>1</b> or <b>2</b>. Default is
<b>2</b>, if supported by the kernel.</p></td></tr>
<tr valign="top" align="left"><td width="11%"></td><td width="15%"table>
<pstyle="margin-left:11%;"><b>-tnone</b> |<ib>fstypeext3</ib>|</pb>ext4</td><td width="2%"b></td><td width="72%"p>
<pstyle="margin-left:28%;">File system typeto create,default is <b>ext4</b>. If this parameter Unless <b>none</b> is specified, a
partition, a filesystem, and a balloon file will be created
inside the image. Currently supported types are <b>ext3</b>and <b>ext4</b>. Using <b>ext3</b> is not recommended.</p></td></tr></table>
<p style="margin-left:11%;"><b>-b</b> <i>blocksize</i></p>
<p style="margin-left:28%;">Filesystem block size, in
bytes. Default is 4096 bytes.</p>
 
<p style="margin-left:11%;"><b>-n</b>, <b>--nolazy</b></p>
 
<p style="margin-left:28%;">Disable lazy mkfs
initialization (which is enabled by default). Currently that
means if this flag is set, <b>mkfs.ext4</b>(8) is called
with <b>-Elazy_itable_init=0,lazy_journal_init=0</b>
options.</p>
<table width="100%" border="0" rules="none" frame="void"
==== mount ====
<p style="margin-left:11%; margin-top: 1em">Assemble aploop device from one or more delta images, start it, andoptionally mount the file system residing on the device.</p>
<p style="margin-left:11%; margin-top: 1em">Two forms ofthis command are provided. The first one accepts a list ofdelta images to be used for assembling the ploop device,while the second one is using information from aDiskDescriptor.xml file. Please note that not all mountoptions are applicable to both forms.</p>
<table width="100%" border="0" rules="none" frame="void"
<td width="71%">
<p>Ploop device to use, e.g.i, <b>/dev/ploop0</b>. If notspecified, the first unused a randomly numbered ploop device will be used.</p></td></tr>
</table>
==== umount ====
<p style="margin-left:11%; margin-top: 1em">Unmount a ploopdevice. Since a mounted ploop device consists of an image(or multiple images), a device, and (optionally) a file system mounted to
a directory, one can refer to any of the above entities to
specify what to unmount. The recommended way is to use
<td width="69%">
<p>Ploop device, e.g., <b>/dev/ploop0</b>. If notspecified, the first unused ploop device will be used.</p></td></tr>
</table>
</td></tr>
</table>
 
==== replace ====
 
<p style="margin-top: 1em">Replaces a ploop image by a
different (but identical) one, on a running ploop device.
Only a read-only image (e.g. a non-top one in a stacked
configuration) can be replaced. An image to be replaced is
specified by either one of level, UUID, or the current image
file.</p>
 
<p style="margin-top: 1em">If a new image is not identical
to the old one (i.e. its content differs) or not suitable
for ploop in any other way (e.g. it is sparse, or resides on
a file system not supported by ploop), the result is
undefined.</p>
 
<table width="100%" border="0" rules="none" frame="void"
cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="11%"></td>
<td width="20%">
 
<p style="margin-top: 1em"><b>ploop&nbsp;replace</b></p></td>
<td width="1%"></td>
<td width="68%">
 
<p style="margin-top: 1em">{ <b>-u</b> <i>uuid</i> |
<b>-l</b> <i>level</i> | <b>-o</b> <i>cur_image_file</i> }
[<b>--keep-name</b>] <b>-i</b> <i>image_file
DiskDescriptor.xml</i></p> </td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="20%">
 
<p><b>-u</b> <i>uuid</i></p></td>
<td width="1%"></td>
<td width="68%">
 
<p>A <i>uuid</i> of an image to be replaced.</p></td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="20%">
 
<p><b>-l</b> <i>level</i></p></td>
<td width="1%"></td>
<td width="68%">
 
<p>A level of image to be replaced. A level is a distance
of an image from the base delta.</p></td></tr>
</table>
 
<p style="margin-left:11%;"><b>-o</b>
<i>cur_image_file</i></p>
 
<p style="margin-left:32%;">A current image file (the one
to replace).</p>
 
<p style="margin-left:11%;"><b>-k</b>,
<b>--keep-name</b></p>
 
<p style="margin-left:32%;">A flag to keep the same image
file name. If this flag is set, after the image is replaced,
a new <i>image_file</i> is renamed to the old one (removing
the old, now unused, image), so no modification to
DiskDescriptor.xml is required.</p>
 
<table width="100%" border="0" rules="none" frame="void"
cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="11%"></td>
<td width="20%">
 
<p><b>-i</b> <i>image_file</i></p></td>
<td width="1%"></td>
<td width="37%">
 
<p>A new replacement image.</p></td>
<td width="31%">
</td></tr>
</table>
 
<p style="margin-left:11%;"><i>DiskDescriptor.xml</i></p>
 
<p style="margin-left:32%;">Path to the DiskDescriptor.xml
file with information about images.</p>
==== resize ====
<p style="margin-left:11%; margin-top: 1em">Resize a ploopimage. Bothimageonline (i.e. Online when ploop is mounted and used) and offlineresize is supported, and the tool can eithergrow or shrink both the ploop image and the underlying filesystem.</p>
<table width="100%" border="0" rules="none" frame="void"
==== convert ====
<p style="margin-left:11%; margin-top: 1em">Convert either ploopimageimage format or version(but not both at the same time).Conversion can only be performed offline (i.e. image shouldnot be in use).</p>
<table width="100%" border="0" rules="none" frame="void"
<td width="68%">
<p>Image format. See <b>IMAGE FORMATSImage formats</b> below.</p></td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="68%">
<p>Image version, can be <b>1</b> or <b>2</b>. Only offline</p></td></tr></table> ==== check ==== <p style="margin-top: 1em">Check the internal consistencyof (and possibly repair) a ploop image (or images). Notethat image (s) to be tested should not be in use.</p> <table width="100%" border="0" rules="none" frame="void" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="11%"></td><td width="17%"> <p style="margin-top: 1em"><b>ploop&nbsp;check</b></p></td><td width="1%"></td><td width="43%"> <p style="margin-top: 1em">[<b>-u&nbsp;</b><i>uuid</i>]<i>DiskDescriptor.xml</i></p> </td><td width="28%"></td></tr></table> <p style="margin-top: 1em">Check all the images in<i>DiskDescriptor.xml</i> up to the one denoted by the<i>uuid</i> (or default top delta, if UUID is notspecified). Default built-in check options are used, and theones specified on the command line, if any, are ignored.</p> <table width="100%" border="0" rules="none" frame="void" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="11%"></td><td width="17%"> <p style="margin-top: 1em"><b>ploop&nbsp;check</b></p></td><td width="1%"></td><td width="71%"> <p style="margin-top: 1em">[<b>--force</b>][<b>--hard-force</b>] [<b>--check</b>] [<b>--ro</b>][<b>--silent</b>] [<b>--drop-inuse</b>] [<b>--raw</b>][<b>--blocksize&nbsp;</b><i>size</i>][<b>--repair-sparse</b>] <i>DiskDescriptor.xml</i> |<i>image_file</i></p> </td></tr><tr valign="top" align="left"><td width="11%"></td><td width="17%"> <p><b>-f</b>, <b>--force</b></p></td><td width="1%"></td><td width="71%"> <p>Force check even if image&rsquo;s dirty flag is notset.</p> </td></tr></table> <p style="margin-left:11%;"><b>-F</b>,<b>--hard-force</b></p> <p style="margin-left:29%;">Same as <b>-f</b>, plus try tofix even fatal errors (can be dangerous).</p> <table width="100%" border="0" rules="none" frame="void" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="11%"></td><td width="17%"> <p><b>-c</b>, <b>--check</b></p></td><td width="1%"></td><td width="63%"> <p>Check for duplicated blocks and holes.</p></td><td width="8%"></td></tr><tr valign="top" align="left"><td width="11%"></td><td width="17%"> <p><b>-r</b>, <b>--ro</b></p></td><td width="1%"></td><td width="63%"> <p>Read-only access, do not modify image(s).</p></td><td width="8%"></td></tr></table> <p style="margin-left:11%;"><b>-s</b>, <b>--silent</b></p> <p style="margin-left:29%;">Be more silent, only reporterrors.</p> <p style="margin-left:11%;"><b>-d</b>,<b>--drop-inuse</b></p> <p style="margin-left:29%;">Drop image &quot;in use&quot;flag.</p> <table width="100%" border="0" rules="none" frame="void" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="11%"></td><td width="14%"> <p><b>-R</b>, <b>--raw</b></p></td><td width="4%"></td><td width="71%"> <p>Specifies that <i>image_file</i> is a raw ploopimage.</p> </td></tr></table> <p style="margin-left:11%;"><b>-b</b>, <b>--blocksize</b><i>size</i></p> <p style="margin-left:29%;">Image cluster block size, insectors (for raw images).</p> <p style="margin-left:11%;"><b>-S</b>,<b>--repair-sparse</b></p> <p style="margin-left:29%;">Repair sparse image(s).</p> === Miscellaneous commands === ==== info ==== <table width="100%" border="0" rules="none" frame="void" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="11%"></td><td width="15%"> <p style="margin-top: 1em"><b>ploop&nbsp;info</b></p></td><td width="2%"></td><td width="27%"> <p style="margin-top: 1em"><i>DiskDescriptor.xml</i></p></td><td width="45%"></td></tr></table> <p>When run without any options, show information aboutdisk space and inodes usage and limits on the inner ploopfilesystem, somewhat similar to [[Man/vzquota.8|<b>vzquota</b>(8)]]<b>stat</b> or <b>show</b> commands.</p> <table width="100%" border="0" rules="none" frame="void" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="11%"></td><td width="15%"> <p style="margin-top: 1em"><b>ploop&nbsp;info</b></p></td><td width="2%"></td><td width="43%"> <p style="margin-top: 1em">[<b>-s</b>] [<b>-d</b>]<i>DiskDescriptor.xml</i></p> </td><td width="29%"></td></tr></table> <p>Either one or both options can be used together. Option<b>-s</b> is used to show information about ploop devicesize, block size, and format version conversion . Option <b>-d</b> is supportedused to show a corresponding ploop block device, itavailable. file.</p> ==== list ==== <table width="100%" border="0" rules="none" frame="void" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="11%"></td><td width="15%"> <p style="margin-top: 1em"><b>ploop&nbsp;list</b></p></td><td width="2%"></td><td width="6%"> <p style="margin-top: 1em">[<b>-a</b>]</p></td><td width="66%"></td></tr></table> <p style="margin-top: 1em">Shows a list of running ploopdevices (first column) and their corresponding base images.With option <b>-a</b> it also shows a mount point (thirdcolumn).</p> ==== restore-descriptor ==== <p style="margin-top: 1em">Create DiskDescriptor.xml filesuitable for <i>delta_file</i> and put it into<i>disk_dir</i>.</p> <table width="100%" border="0" rules="none" frame="void" cellspacing="0" cellpadding="0"><tr valign="top" align="left"><td width="11%"></td><td width="37%"> <p style="margin-top: 1em"><b>ploop&nbsp;restore-descriptor</b></p> </td><td width="1%"></td><td width="51%"> <p style="margin-top: 1em"><b>-f</b> <i>format</i>[<b>-b&nbsp;</b><i>blocksize</i>] <i>disk_dirdelta_file</i></p></td></tr>
</table>
 
<p style="margin-top: 1em">Read image header in case of
ploop1 format or check raw image size and generate proper
DiskDescriptor.xml file. You can specify blocksize for raw
images. If it&rsquo;s not specified it will be choosen
automatically - largest possible value between 32K and 1M.
Raw image size must be aligned to blocksize.</p>
 
<p style="margin-top: 1em">This command works only for base
images. Snapshots are not supported.</p>
 
=== Working with snapshots ===
 
<p style="margin-top: 1em">Ploop snapshots is a mechanism
for creating and managing instant states of a running file
system. Creating a snapshot leads to creating a new empty
ploop image which is layered on top of an old one, then all
writes are ending up in the top image, and reads are falling
through to a lower level. There can be up to 126) stacked
ploop images (or snapshots). Online snapshot merging is also
supported.</p>
 
<p style="margin-top: 1em">Snapshots are identified by a
unique UUID. A snapshot can be mounted using <b>ploop mount
-u</b> <i>uuid</i> command, see above.</p>
==== snapshot ====
<p style="margin-left:11%; margin-top: 1em">Create a ploopsnapshot.</p>
<table width="100%" border="0" rules="none" frame="void"
==== snapshot-merge ====
<p style="margin-left:11%; margin-top: 1em">Merge asnapshot with itsparent. That is, contents of the delta file corresponding tothe snapshot is merged to a parent delta, then the file isremoved. Parent snapshot UUID is lost (as it is replacedwith the <i>uuid</i> specified). All snapshots having thelost one as a parent are updated to have the <i>uuid</i> asits parent.</p>
<table width="100%" border="0" rules="none" frame="void"
<td width="57%">
<p style="margin-top: 1em">[<b>-u&nbsp;</b><i>uuid&nbsp;</i>[<b>-U&nbsp;</b><i>uuid2</i>]&nbsp;|&nbsp;<b>-A</b>][<b>-n&nbsp;</b><i>new_delta</i>]
<i>DiskDescriptor.xml</i></p> </td></tr>
<tr valign="top" align="left">
<td width="57%">
<p>Specify a single snapshot <i>uuid</i> to merge. If this optionis not specified, the top delta will be used.</p></td></tr><tr valign="top" align="left"><td width="11%"></td><td width="31%"> <p><b>-U</b> <i>uuid2</i></p></td><td width="1%"></td><td width="57%"> <p>Together with <b>-u</b> <i>uuid</i>, specify that allsnapshots in the range <i>uuid</i>...<i>uuid2</i> are to bemerged.</p></td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
snapshots have more than a single child, they will be
impossible to merge.</p></td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="31%">
 
<p><b>-n</b> <i>new_delta</i></p></td>
<td width="1%"></td>
<td width="57%">
 
<p>If this option is set, instead of merging the child
delta into its parent, both the parent and the child deltas
are merged into a newly created file <i>new_delta</i>, which
replaces the parent delta. Both deltas are then removed.</p></td></tr>
</table>
==== snapshot-switch ====
<p style="margin-left:11%; margin-top: 1em">Switch to thespecifiedspecified snapshot. This operation can only be performedwhile ploop is not running (i.e. is unmounted). The currenttop delta image will be removed.</p>
<table width="100%" border="0" rules="none" frame="void"
==== snapshot-delete ====
<p style="margin-left:11%; margin-top: 1em">Delete thespecifed snapshot. This operation can only be performed ifthe specified snapshot is not active. In case snapshotdoesn&rsquo;t have any children, it will simply be removed.In case snapshot has a single child, it will be merged tothat child. Deleting a snapshot that has multiple childrenis currently not supported (but can be performed manually inan iterative fashion).</p>
<table width="100%" border="0" rules="none" frame="void"
==== snapshot-list ====
<p style="margin-left:11%; margin-top: 1em">List availablesnapshots.</p>
<table width="100%" border="0" rules="none" frame="void"
<p style="margin-top: 1em">[<b>-H</b>]
[<b>-u&nbsp;</b><i>uuid</i>] [<b>-s</b>]
[<b>-o&nbsp;</b><i>field</i>[,<i>field</i>...]]
<i>DiskDescriptor.xml</i></p> </td></tr>
<p style="margin-left:42%;">Filter the output to a
specified <i>uuid</i>.</p>
 
<table width="100%" border="0" rules="none" frame="void"
cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="11%"></td>
<td width="21%">
 
<p><b>-s</b>, <b>--snapshot</b></p></td>
<td width="10%"></td>
<td width="58%">
 
<p>List in terms of snapshots. By default (i.e. without
this option) the command lists all deltas, and top delta is
marked as current. When this option is used, top delta is
not listed, and the snapshot which is the parent of top
delta is marked as current.</p></td></tr>
</table>
<p style="margin-left:11%;"><b>-o</b>, <b>--output</b>
&bull; <b>fname</b> - snapshot image file name.</p>
=== ADVANCED COMMANDS Image copying === <p style="margin-top: 1em"><b>ploop copy</b> is a mechanismof effective copying of a top ploop image with the help ofbuild-in ploop kernel driver feature called write tracker.Write tracker is a feature that lets <b>ploop copy</b> toiteratively obtain a list of modified image blocks from thekernel. Two <b>ploop copy</b> processes are required foriterative top delta transfer. These are used by<b>vzmigrate(8).</b></p>
==== shapshot copy (sending) ====
<table width="100%" border="0" rules="none" frame="void"
<tr valign="top" align="left">
<td width="11%"></td>
<td width="2115%">
<p style="margin-top: 1em"><b>ploop&nbsp;snapshotcopy</b></p></td>
<td width="2%"></td>
<td width="6672%"> <p style="margin-top: 1em"><b>-s</b> <i>device</i>[<b>-F&nbsp;</b><i>stop_command</i>] {[<b>-d&nbsp;</b><i>file</i>] |[<b>-o&nbsp;</b><i>output_fd</i>][<b>-f&nbsp;</b><i>feedback_fd</i>] }</p></td></tr></table> <p style="margin-top: 1em">This command enables thein-kernel write tracker for the specified ploop<i>device,</i> then sends all the data blocks from the topdelta image to a pipe specified by the <i>output_fd</i>argument (<b>stdout</b>, i.e. <b>1</b> by default),supposedly read by destination <b>ploop copy</b>, or a<i>file</i>. After that, it iteratively gets the list of themodified data blocks from the kernel and sends those blocksagain. After a number of iterations (or when the list isempty), it executes the <i>stop_command</i> (this could be<b>vzctl stop</b> or <b>vzctl chkpnt</b>) and does the lastiteration of sending the modified data blocks. Finally, itchecks that the data were not modified, error is returnedotherwise.</p> <p style="margin-top: 1em">If <i>feedback_fd</i> isspecified, it is used to read back from the ploop copyreceiving side. The feedback channel is currently used towait for <b>fdatasync</b>(2) completion.</p> ==== copy (receiving) ====
<p styletable width="margin-top: 1em100%" border="0" rules="none" frame="void">[<b>-F</b>][<b>-d&nbsp;</b><i>device</i>] <i>image_file</i></p></td></tr cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="11%"></td>
<td width="2115%">
<pstyle="margin-top: 1em"><b>-Fploop&nbsp;copy</b></p></td>
<td width="2%"></td>
<td width="6658%"> <p style="margin-top: 1em"><b>-d</b> <i>file</i>[<b>-i&nbsp;</b><i>input_fd</i>][<b>-f&nbsp;</b><i>feedback_fd</i>]</p> </td><td width="14%"></td></tr></table> <p style="margin-top: 1em">Reads the data blocks (providedby the source <b>ploop copy</b>) from the file descriptor<i>input_fd</i> (<b>stdin</b>, i.e. <b>0</b> by default) andwrites them to the <i>file</i>.</p> <p style="margin-top: 1em">If <i>feedback_fd</i> isspecified, it is used to send status back to the ploop copysending side.</p> === Ballooning === <p style="margin-top: 1em">Since there is no online shrinksupport in <b>ext4</b> file system, ploop internally uses atechnique called &quot;ballooning&quot; as a work around toshrink its images.</p> <p style="margin-top: 1em">Ballooning operation consists ofinflating a special balloon file (invisible for ordinaryusers), loading fiemap info of the inflated balloon to thekernel, relocating blocks of the image file from the tail tothe space specified by fiemap info, and truncating the tailof the image file. Result is the image file of a smallersize.</p> <p style="margin-top: 1em">However, it is quite possiblethat inflated balloon file will only span blocks that werenever touched before. Those will look like &quot;notallocated&quot; space from the kernel ploop point of view.In this case nothing will be relocated and nothingtruncated.</p> <p style="margin-top: 1em">So, if balloon operationsucceeded, it&rsquo;s only guaranteed that a user of ploopdevice won&rsquo;t be able to consume more space than theinitial block device size minus the size of the inflatedballoon. On the other hand, if a user of block device used alot of space on it, then freed the significant part of usedspace, balloon operation will result in significant truncateof image file.</p> <p style="margin-top: 1em">All the ploop ballooning logicis hidden from the end user, so while a number of low-levelcommands exist for working with ploop ballooning, those arenot needed and therefore are not documented here, except fora single command.</p>
<p>Freeze filesystem before making a snapshot. If theoption is not given, the file system will not be frozen andsnapshot will have an inconsistent file system. If you needa quick snapshot, do not use this option. Journal will bereplayed when you mount the snapshot.</p></td></tr><tr valign="top" align="left"><td width="11%"></td><td width="21%">balloon discard ====
<pstyle="margin-top: 1em">In a situation when a lot ofdisk space were freed on an in-ploop filesystem, use<b>-dploop balloon discard</b> <i>device</i>to optimize the ploop imagesize.</p></td><td width="2%"></td><td width="66%">
<p>Ploop device, e.g., <b>/dev/ploop0</b>.</p></td></trtable width="100%" border="0" rules="none" frame="void" cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="11%"></td>
<td width="2132%">
<pstyle="margin-top: 1em"><ib>image_fileploop&nbsp;balloon&nbsp;discard</ib></p></td>
<td width="2%"></td>
<td width="6650%">
<pstyle="margin-top: 1em">Path [<b>--automount</b>][<b>--to a file to write a new snapshot to. If this file-free&nbsp;</b><i>size</i>]already exists, [<b>ploop snapshot--min-block&nbsp;</b> will exit with an<i>min_size</i>] [<b>--defrag</b>]error<i>DiskDescriptor.xml</i></p> </td><td width="5%"></td></tr>
</table>
<p style="margin-top: 1em">Iteratively try to relocate anddiscard unused blocks from a ploop image, reducing itssize.</p> <p style= IMAGE FORMATS "margin-top: 1em">Note that ploop device and itsinner file system should be mounted. If not, one can use<b>--automount</b> option to automatically mount ploop forthe duration of the operation.</p> <p style="margin-top: 1em">Option <b>--defrag</b> can beused to run a filesystem defragmentation utility (currentlye4defrag2 on ext4 only) before the main operation.</p> <p style="margin-top: 1em">Option <b>--to-free</b> can beused to specify a maximum disk space to be freed. In otherwords, stop the process once freed space exceeded requested<i>size</i>. Default is 0, meaning to try to free as muchspace as possible.</p> <p style="margin-top: 1em">Option <b>--min-block</b> can beused to specify a minimum size of an extent to free. Thesmallest possible extent is 1 cluster (currently 1 MB), onecan specify higher value to speed up the whole discardingoperation.</p> <p style="margin-top: 1em">Note that the same functionalityis available by means of <b>vzctl compact</b> command.</p>
<p style="margin-left:11%; margin-top: 1em">The == Image formats ===followingimage formats are currently supported.</p>
<table width="100%" border="0" rules="none" frame="void"
<tr valign="top" align="left">
<td width="11%"></td>
<td width="424%"> <p><b>raw</b></p></td><td width="10%"></td><td width="55%"> <p>Raw format, with 1:1 mapping between the image file andthe ploop device.</p></td></tr><tr valign="top" align="left"><td width="11%"></td><td width="24%"> <p><b>ploop1</b>,&nbsp;<b>expanded</b></p></td><td width="10%"></td><td width="55%"> <p>Expanded format. The image will grow according to theneeds of the underlying file system. This format is thedefault. Names &rsquo;<b>ploop1</b>&rsquo; and&rsquo;<b>expanded</b>&rsquo; are aliases.</p></td></tr><tr valign="top" align="left"><td width="11%"></td><td width="24%">
<p style="margin-top: 1em"><b>rawpreallocated</b></p></td><td width="710%"></td><td width="7855%">
<p style="margin-top: 1em">Raw formatThis is the same as &rsquo;<b>ploop1</b>&rsquo; or&rsquo;<b>expanded</b>&rsquo;, with 1:1 mappingthe only difference is allbetween the image file and the ploop deviceblocks are allocated during creation.</p></td></tr>
</table>
== EXIT STATUS == <p style="margin-left:11%; margin-top: 1em"><b>ploop</b>exits with status 0 in case of successful execution. Anystatus greater than 0 signifies an error. <b><br>1</b>,&nbsp;<b>SYSEXIT_CREAT</b></p> <p style="margin-left:22%;">Error creating a file.</p> <p style="margin-left:11%;"><b>2</b>,&nbsp;<b>SYSEXIT_DEVICE</b></p> <p style="margin-left:22%;">Error getting or opening aploop device.</p> <p style="margin-left:11%;"><b>3</b>,&nbsp;<b>SYSEXIT_DEVIOC</b></p> <p style="margin-left:22%;">Error doing <b>ioctl</b>(2) onploop device.</p> <p style="margin-left:11%;"><b>4</b>,&nbsp;<b>SYSEXIT_OPEN</b></p> <p style="margin-left:22%;">Error opening a file.</p> <p style="margin-left:11%;"><b>5</b>,&nbsp;<b>SYSEXIT_MALLOC</b></p> <p style="margin-left:22%;">Not enough memory (error from<b>malloc</b>(3), <b>realloc</b>(3), <b>calloc</b>(3), or<b>posix_memalign</b>(3)).</p> <p style="margin-left:11%;"><b>6</b>,&nbsp;<b>SYSEXIT_READ</b></p> <p style="margin-left:22%;">Error during read.</p> <p style="margin-left:11%;"><b>7</b>,&nbsp;<b>SYSEXIT_WRITE</b></p> <p style="margin-left:22%;">Error during write.</p> <p style="margin-left:11%;"><b>9</b>,&nbsp;<b>SYSEXIT_SYSFS</b></p> <p style="margin-left:22%;">Error reading from a sysfs file(usually under <b>/sys/block/ploop...</b>).</p> <p style="margin-left:11%;"><b>11</b>,&nbsp;<b>SYSEXIT_PLOOPFMT</b></p> <p style="margin-left:22%;">Corrupted ploop imagedetected.</p> <p style="margin-left:11%;"><b>12</b>,&nbsp;<b>SYSEXIT_SYS</b></p> <p style="margin-left:22%;">Other system error.</p> <p style="margin-left:11%;"><b>13</b>,&nbsp;<b>SYSEXIT_PROTOCOL</b></p> <p style="margin-left:22%;">Broken protocol (unexpectedvalue received).</p> <p style="margin-left:11%;"><b>14</b>,&nbsp;<b>SYSEXIT_LOOP</b></p> <p style="margin-left:22%;"><b>pcopy</b> commandcan&rsquo;t finalize copying (frozen filesystem ischanging).</p> <p style="margin-left:11%;"><b>15</b>,&nbsp;<b>SYSEXIT_FSTAT</b></p> <p style="margin-left:22%;">Error from <b>stat</b>(2),<b>fstat</b>(2), or <b>statfs</b>(2).</p> <p style="margin-left:11%;"><b>16</b>,&nbsp;<b>SYSEXIT_FSYNC</b></p> <p style="margin-left:22%;">Error from <b>fsync</b>(2) or<b>syncfs</b>(2).</p> <p style="margin-left:11%;"><b>17</b>,&nbsp;<b>SYSEXIT_EBUSY</b></p> <p style="margin-left:22%;">Can&rsquo;t continue, anotheroperation is in progress.</p> <p style="margin-left:11%;"><b>18</b>,&nbsp;<b>SYSEXIT_FLOCK</b></p> <p style="margin-left:22%;">Error from <b>flock</b>(2).</p> <p style="margin-left:11%;"><b>19</b>,&nbsp;<b>SYSEXIT_FTRUNCATE</b></p> <p style="margin-left:22%;">Error from <b>ftruncate</b>(2)or <b>truncate</b>(2).</p> <p style="margin-left:11%;"><b>20</b>,&nbsp;<b>SYSEXIT_FALLOCATE</b></p> <p style="margin-left:22%;">Error from<b>fallocate</b>(2).</p> <p style="margin-left:11%;"><b>21</b>,&nbsp;<b>SYSEXIT_MOUNT</b></p> <p style="margin-left:22%;">Can&rsquo;t mount ploop imageor file system.</p> <p style="margin-left:11%;"><b>22</b>,&nbsp;<b>SYSEXIT_UMOUNT</b></p> <p style="margin-left:22%;">Can&rsquo;t unmount ploop imageor file system.</p> <p style="margin-left:11%;"><b>23</b>,&nbsp;<b>SYSEXIT_LOCK</b></p> <p style="margin-left:22%;">Locking failed (anotheroperation in progress?).</p> <p style="margin-left:11%;"><b>24</b>,&nbsp;<b>SYSEXIT_MKFS</b></p> <p style="margin-left:22%;">Can&rsquo;t create filesystem.</p> <p style="margin-left:11%;"><b>26</b>,&nbsp;<b>SYSEXIT_RESIZE_FS</b></p> <p style="margin-left:22%;">Utility <b>resizefs</b>failed.</p> <p style="margin-left:11%;"><b>27</b>,&nbsp;<b>SYSEXIT_MKDIR</b></p> <p style="margin-left:22%;">Error from <b>mkdir</b>(2).</p> <p style="margin-left:11%;"><b>28</b>,&nbsp;<b>SYSEXIT_RENAME</b></p> <p style="margin-left:22%;">Error from<b>rename</b>(2).</p> <p style="margin-left:11%;"><b>29</b>,&nbsp;<b>SYSEXIT_ABORT</b></p> <p style="margin-left:22%;">Operation aborted.</p> <p style="margin-left:11%;"><b>30</b>,&nbsp;<b>SYSEXIT_RELOC</b></p> <p style="margin-left:22%;">Block relocation failed.</p> <p style="margin-left:11%;"><b>33</b>,&nbsp;<b>SYSEXIT_CHANGE_GPT</b></p> <p style="margin-left:22%;">Error resizing GPT partitiontable.</p> <p style="margin-left:11%;"><b>35</b>,&nbsp;<b>SYSEXIT_UNLINK</b></p> <p style="margin-left:22%;">Error from<b>unlink</b>(2).</p> <p style="margin-left:11%;"><b>ploop136</b>,&nbsp;<b>expandedSYSEXIT_MKNOD</b></p> <p style="margin-left:22%;">Error from <b>mknod</b>(2).</p> <p style="margin-left:11%;"><b>37</b>,&nbsp;<b>SYSEXIT_PLOOPINUSE</b></p> <p style="margin-left:22%;">Image is already in use.</p> <p style="margin-left:11%;"><b>38</b>,&nbsp;<b>SYSEXIT_PARAM</b></p> <p style="margin-left:22%;">Invalid parameter.</p> <p style="margin-left:11%;"><b>39</b>,&nbsp;<b>SYSEXIT_DISKDESCR</b></p> <p style="margin-left:22%;">Problem with DiskDescriptor.xmlfile.</p>
<p style="margin-left:2211%;">Expanded format. The image willgrow according to the needs of the underlying file system.This format is the default. Names&rsquo;<b>ploop140</b>,&rsquo; and&rsquonbsp;<b>expandedSYSEXIT_DEV_NOT_MOUNTED</b>&rsquo; are aliases.</p>
<p style="margin-left:1122%;"><b>preallocated</b>Ploop image is not mounted.</p>
<p style="margin-left:2211%;">This is the same as<b>41</b>,&rsquonbsp;<b>ploop1SYSEXIT_FSCK</b>&rsquo</p> <p style="margin-left:22%; or">Error from <b>fsck</b>(8).</p> <p style="margin-left:11%;"><b>43</b>,&rsquonbsp;<b>expandedSYSEXIT_NOSNAP</b></p> <p style="margin-left:22%;">Can&rsquo;, the only difference is allt find specifiedthe file blocks are allocated during creationsnapshot UUID.</p>
== SEE ALSO ==
<p style="margin-left:11%; margin-top: 1em">[[Man/vzctl.8|<b>vzctl</b>(8)]],[[Man/vzmigrate.8|<b>vzmigrate</b>(8)]], <b>http://openvz.org/Ploop</b>.</p>

Navigation menu