Latest revision |
Your text |
Line 20: |
Line 20: |
| [<b>-t </b><i>fstype</i>] | | [<b>-t </b><i>fstype</i>] |
| [<b>-b </b><i>blocksize</i>] | | [<b>-b </b><i>blocksize</i>] |
− | [<b>-B </b><i>fsblocksize</i>] [<b>--nolazy</b>] | + | [<b>-B </b><i>fsblocksize</i>] <i>delta_file</i></p></td></tr> |
− | <i>delta_file</i></p> </td></tr> | |
| <tr valign="top" align="left"> | | <tr valign="top" align="left"> |
| <td width="11%"></td> | | <td width="11%"></td> |
Line 64: |
Line 63: |
| <b>-m</b> <i>mount_point</i> | <i>DiskDescriptor.xml</i> | | | <b>-m</b> <i>mount_point</i> | <i>DiskDescriptor.xml</i> | |
| <i>image_file</i> }</p></td></tr> | | <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 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"> | | <tr valign="top" align="left"> |
| <td width="11%"></td> | | <td width="11%"></td> |
Line 93: |
Line 81: |
| <p style="margin-top: 1em">{ <b>-f</b> <i>format</i> | | | <p style="margin-top: 1em">{ <b>-f</b> <i>format</i> | |
| <b>-v</b> <i>version</i> } <i>DiskDescriptor.xml</i></p></td></tr> | | <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 check</b></p></td>
| |
− | <td width="69%">
| |
− | </td></tr>
| |
− | </table>
| |
− |
| |
− | <p style="margin-left:11%;">[<b>-u </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 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 </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 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 list</b></p></td>
| |
− | <td width="72%">
| |
− |
| |
− | <p style="margin-top: 1em">[<b>-a</b>]</p></td></tr>
| |
| </table> | | </table> |
| | | |
Line 158: |
Line 103: |
| | | |
| <p style="margin-top: 1em"><b>ploop snapshot-merge</b></p> </td> | | <p style="margin-top: 1em"><b>ploop snapshot-merge</b></p> </td> |
− | <td width="57%"> | + | <td width="43%"> |
| | | |
− | <p style="margin-top: 1em">[<b>-u </b><i>uuid </i>[<b>-U </b><i>uuid2</i>] | <b>-A</b>] | + | <p style="margin-top: 1em">[<b>-u </b><i>uuid</i>] |
− | [<b>-n </b><i>new_delta</i>]
| + | <i>DiskDescriptor.xml</i></p> </td> |
− | <i>DiskDescriptor.xml</i></p> </td></tr>
| + | <td width="14%"> |
| + | </td></tr> |
| <tr valign="top" align="left"> | | <tr valign="top" align="left"> |
| <td width="11%"></td> | | <td width="11%"></td> |
Line 168: |
Line 114: |
| | | |
| <p style="margin-top: 1em"><b>ploop snapshot-switch</b></p> </td> | | <p style="margin-top: 1em"><b>ploop snapshot-switch</b></p> </td> |
− | <td width="57%"> | + | <td width="43%"> |
| | | |
| <p style="margin-top: 1em"><b>-u</b> <i>uuid | | <p style="margin-top: 1em"><b>-u</b> <i>uuid |
− | DiskDescriptor.xml</i></p> </td></tr> | + | DiskDescriptor.xml</i></p> </td> |
| + | <td width="14%"> |
| + | </td></tr> |
| <tr valign="top" align="left"> | | <tr valign="top" align="left"> |
| <td width="11%"></td> | | <td width="11%"></td> |
Line 177: |
Line 125: |
| | | |
| <p style="margin-top: 1em"><b>ploop snapshot-delete</b></p> </td> | | <p style="margin-top: 1em"><b>ploop snapshot-delete</b></p> </td> |
− | <td width="57%"> | + | <td width="43%"> |
| | | |
| <p style="margin-top: 1em"><b>-u</b> <i>uuid | | <p style="margin-top: 1em"><b>-u</b> <i>uuid |
− | DiskDescriptor.xml</i></p> </td></tr> | + | DiskDescriptor.xml</i></p> </td> |
| + | <td width="14%"> |
| + | </td></tr> |
| <tr valign="top" align="left"> | | <tr valign="top" align="left"> |
| <td width="11%"></td> | | <td width="11%"></td> |
Line 186: |
Line 136: |
| | | |
| <p style="margin-top: 1em"><b>ploop snapshot-list</b></p> </td> | | <p style="margin-top: 1em"><b>ploop snapshot-list</b></p> </td> |
− | <td width="57%"> | + | <td width="43%"></td> |
| + | <td width="14%"> |
| </td></tr> | | </td></tr> |
| </table> | | </table> |
| | | |
| <p style="margin-left:11%;">[<b>-H</b>] | | <p style="margin-left:11%;">[<b>-H</b>] |
− | [<b>-u </b><i>uuid</i>] [<b>-s</b>] | + | [<b>-u </b><i>uuid</i>] |
| [<b>-o </b><i>field</i>[,<i>field</i>...]] | | [<b>-o </b><i>field</i>[,<i>field</i>...]] |
| <i>DiskDescriptor.xml</i></p> | | <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 copy</b></p></td>
| |
− | <td width="2%"></td>
| |
− | <td width="72%">
| |
− |
| |
− | <p style="margin-top: 1em"><b>-s</b> <i>device</i>
| |
− | [<b>-F </b><i>stop_command</i>] {
| |
− | [<b>-d </b><i>file</i>] |
| |
− | [<b>-o </b><i>output_fd</i>]
| |
− | [<b>-f </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 copy</b></p></td>
| |
− | <td width="2%"></td>
| |
− | <td width="72%">
| |
− |
| |
− | <p style="margin-top: 1em"><b>-d</b> <i>file</i>
| |
− | [<b>-i </b><i>input_fd</i>]
| |
− | [<b>-f </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 balloon discard</b></p> <td width="45%"></td>
| |
− | <td width="50%">
| |
− |
| |
− | <p style="margin-top: 1em">[<b>--automount</b>]
| |
− | [<b>--to-free </b><i>size</i>]
| |
− | [<b>--min-block </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 restore-descriptor</b></p> <td width="49%"></td>
| |
− | <td width="51%">
| |
− |
| |
− | <p style="margin-top: 1em"><b>-f</b> <i>format</i>
| |
− | [<b>-b </b><i>blocksize</i>] <i>disk_dir
| |
− | delta_file</i></p> </td></tr>
| |
− | </table>
| |
| | | |
| == DESCRIPTION == | | == DESCRIPTION == |
Line 272: |
Line 168: |
| the form with DiskDescriptor.xml.</p> | | 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 short
| |
− | description for a particular <i>command</i>.</p>
| |
− | | |
− | === Basic commands ===
| |
| | | |
| ==== init ==== | | ==== init ==== |
| | | |
− | <p style="margin-top: 1em">Create and initalize a ploop | + | <p style="margin-left:11%; margin-top: 1em">Create and |
− | image file and a corresponding <b>DiskDescriptor.xml</b> | + | initalize a ploop image file and a corresponding |
− | file.</p> | + | <b>DiskDescriptor.xml</b> file.</p> |
| | | |
| <table width="100%" border="0" rules="none" frame="void" | | <table width="100%" border="0" rules="none" frame="void" |
Line 305: |
Line 191: |
| [<b>-t </b><i>fstype</i>] | | [<b>-t </b><i>fstype</i>] |
| [<b>-b </b><i>blocksize</i>] | | [<b>-b </b><i>blocksize</i>] |
− | [<b>-B </b><i>fsblocksize</i>] [<b>--nolazy</b>] | + | [<b>-B </b><i>fsblocksize</i>] <i>delta_file</i></p></td></tr> |
− | <i>delta_file</i></p> </td></tr> | |
| <tr valign="top" align="left"> | | <tr valign="top" align="left"> |
| <td width="11%"></td> | | <td width="11%"></td> |
Line 328: |
Line 213: |
| <td width="72%"> | | <td width="72%"> |
| | | |
− | <p>Image format. See <b>Image formats</b> below.</p></td></tr> | + | <p>Image format. See <b>IMAGE FORMATS</b> below.</p></td></tr> |
| <tr valign="top" align="left"> | | <tr valign="top" align="left"> |
| <td width="11%"></td> | | <td width="11%"></td> |
Line 339: |
Line 224: |
| <p>Image version, can be <b>1</b> or <b>2</b>. Default is | | <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> | | <b>2</b>, if supported by the kernel.</p></td></tr> |
− | </table> | + | <tr valign="top" align="left"> |
| + | <td width="11%"></td> |
| + | <td width="15%"> |
| | | |
− | <p style="margin-left:11%;"><b>-t | + | <p><b>-t</b> <i>fstype</i></p></td> |
− | none</b>|<b>ext3</b>|<b>ext4</b></p>
| + | <td width="2%"></td> |
| + | <td width="72%"> |
| | | |
− | <p style="margin-left:28%;">File system type to create, | + | <p>File system type. If this parameter is specified, a |
− | default is <b>ext4</b>. Unless <b>none</b> is specified, a
| |
| partition, a filesystem, and a balloon file will be created | | partition, a filesystem, and a balloon file will be created |
− | inside the image. Using <b>ext3</b> is not recommended.</p> | + | 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:11%;"><b>-b</b> <i>blocksize</i></p> |
Line 360: |
Line 249: |
| <p style="margin-left:28%;">Filesystem block size, in | | <p style="margin-left:28%;">Filesystem block size, in |
| bytes. Default is 4096 bytes.</p> | | 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" | | <table width="100%" border="0" rules="none" frame="void" |
Line 384: |
Line 265: |
| ==== mount ==== | | ==== mount ==== |
| | | |
− | <p style="margin-top: 1em">Assemble a ploop device from one | + | <p style="margin-left:11%; margin-top: 1em">Assemble a |
− | or more delta images, start it, and optionally mount the | + | ploop device from one or more delta images, start it, and |
− | file system residing on the device.</p> | + | optionally mount the file system residing on the device.</p> |
| | | |
− | <p style="margin-top: 1em">Two forms of this command are | + | <p style="margin-left:11%; margin-top: 1em">Two forms of |
− | provided. The first one accepts a list of delta images to be | + | this command are provided. The first one accepts a list of |
− | used for assembling the ploop device, while the second one | + | delta images to be used for assembling the ploop device, |
− | is using information from a DiskDescriptor.xml file. Please | + | while the second one is using information from a |
− | note that not all mount options are applicable to both | + | DiskDescriptor.xml file. Please note that not all mount |
− | forms.</p> | + | options are applicable to both forms.</p> |
| | | |
| <table width="100%" border="0" rules="none" frame="void" | | <table width="100%" border="0" rules="none" frame="void" |
Line 474: |
Line 355: |
| <td width="71%"> | | <td width="71%"> |
| | | |
− | <p>Ploop device to use, e.g. <b>/dev/ploop0</b>. If not | + | <p>Ploop device to use, e.g.i, <b>/dev/ploop0</b>. If not |
− | specified, a randomly numbered ploop device will be | + | specified, the first unused ploop device will be used.</p></td></tr> |
− | used.</p> </td></tr> | |
| </table> | | </table> |
| | | |
Line 529: |
Line 409: |
| ==== umount ==== | | ==== umount ==== |
| | | |
− | <p style="margin-top: 1em">Unmount a ploop device. Since a | + | <p style="margin-left:11%; margin-top: 1em">Unmount a ploop |
− | mounted ploop device consists of an image (or multiple | + | device. Since a mounted ploop device consists of an image |
− | images), a device, and (optionally) a file system mounted to | + | (or multiple images), a device, and a file system mounted to |
| a directory, one can refer to any of the above entities to | | a directory, one can refer to any of the above entities to |
| specify what to unmount. The recommended way is to use | | specify what to unmount. The recommended way is to use |
Line 557: |
Line 437: |
| <td width="69%"> | | <td width="69%"> |
| | | |
− | <p>Ploop device, e.g., <b>/dev/ploop0</b>.</p></td></tr> | + | <p>Ploop device, e.g., <b>/dev/ploop0</b>. If not |
| + | specified, the first unused ploop device will be used.</p></td></tr> |
| </table> | | </table> |
| | | |
Line 585: |
Line 466: |
| </td></tr> | | </td></tr> |
| </table> | | </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 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 ==== | | ==== resize ==== |
| | | |
− | <p style="margin-top: 1em">Resize a ploop image. Both | + | <p style="margin-left:11%; margin-top: 1em">Resize a ploop |
− | online (i.e. when ploop is mounted and used) and offline
| + | image. Online resize is supported, and the tool can either |
− | resize is supported, and the tool can either grow or shrink | + | grow or shrink the ploop image and the underlying file |
− | both the ploop image and the underlying file system.</p>
| + | system.</p> |
| | | |
| <table width="100%" border="0" rules="none" frame="void" | | <table width="100%" border="0" rules="none" frame="void" |
Line 711: |
Line 507: |
| ==== convert ==== | | ==== convert ==== |
| | | |
− | <p style="margin-top: 1em">Convert either ploop image | + | <p style="margin-left:11%; margin-top: 1em">Convert ploop |
− | format or version (but not both at the same time). | + | image format or version.</p> |
− | Conversion can only be performed offline (i.e. image should
| |
− | not be in use).</p>
| |
| | | |
| <table width="100%" border="0" rules="none" frame="void" | | <table width="100%" border="0" rules="none" frame="void" |
Line 736: |
Line 530: |
| <td width="68%"> | | <td width="68%"> |
| | | |
− | <p>Image format. See <b>Image formats</b> below.</p></td></tr> | + | <p>Image format. See <b>IMAGE FORMATS</b> below.</p></td></tr> |
| <tr valign="top" align="left"> | | <tr valign="top" align="left"> |
| <td width="11%"></td> | | <td width="11%"></td> |
Line 745: |
Line 539: |
| <td width="68%"> | | <td width="68%"> |
| | | |
− | <p>Image version, can be <b>1</b> or <b>2</b>.</p></td></tr> | + | <p>Image version, can be <b>1</b> or <b>2</b>. Only offline |
− | </table>
| + | image version conversion is supported.</p></td></tr> |
− | | |
− | ==== check ====
| |
− | | |
− | <p style="margin-top: 1em">Check the internal consistency
| |
− | of (and possibly repair) a ploop image (or images). Note
| |
− | that 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 check</b></p></td>
| |
− | <td width="1%"></td>
| |
− | <td width="43%">
| |
− | | |
− | <p style="margin-top: 1em">[<b>-u </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 not
| |
− | specified). Default built-in check options are used, and the
| |
− | ones 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 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 </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’s dirty flag is not
| |
− | set.</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 to
| |
− | fix 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 report
| |
− | errors.</p>
| |
− | | |
− | <p style="margin-left:11%;"><b>-d</b>,
| |
− | <b>--drop-inuse</b></p>
| |
− | | |
− | <p style="margin-left:29%;">Drop image "in use"
| |
− | 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 ploop
| |
− | image.</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, in
| |
− | sectors (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 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 about
| |
− | disk space and inodes usage and limits on the inner ploop
| |
− | filesystem, 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 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 device
| |
− | size, block size, and format version. Option <b>-d</b> is
| |
− | used to show a corresponding ploop block device, it
| |
− | available. 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 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 ploop
| |
− | devices (first column) and their corresponding base images.
| |
− | With option <b>-a</b> it also shows a mount point (third
| |
− | column).</p>
| |
− | | |
− | ==== restore-descriptor ====
| |
− | | |
− | <p style="margin-top: 1em">Create DiskDescriptor.xml file
| |
− | suitable 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 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 </b><i>blocksize</i>] <i>disk_dir
| |
− | delta_file</i></p> </td></tr>
| |
| </table> | | </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’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 ==== | | ==== snapshot ==== |
| | | |
− | <p style="margin-top: 1em">Create a ploop snapshot.</p> | + | <p style="margin-left:11%; margin-top: 1em">Create a ploop |
| + | snapshot.</p> |
| | | |
| <table width="100%" border="0" rules="none" frame="void" | | <table width="100%" border="0" rules="none" frame="void" |
Line 1,018: |
Line 576: |
| ==== snapshot-merge ==== | | ==== snapshot-merge ==== |
| | | |
− | <p style="margin-top: 1em">Merge a snapshot with its | + | <p style="margin-left:11%; margin-top: 1em">Merge a |
− | parent. That is, contents of the delta file corresponding to
| + | snapshot with its parent.</p> |
− | the snapshot is merged to a parent delta, then the file is
| |
− | removed. Parent snapshot UUID is lost (as it is replaced
| |
− | with the <i>uuid</i> specified). All snapshots having the | |
− | lost one as a parent are updated to have the <i>uuid</i> as
| |
− | its parent.</p> | |
| | | |
| <table width="100%" border="0" rules="none" frame="void" | | <table width="100%" border="0" rules="none" frame="void" |
Line 1,036: |
Line 589: |
| <td width="57%"> | | <td width="57%"> |
| | | |
− | <p style="margin-top: 1em">[<b>-u </b><i>uuid </i>[<b>-U </b><i>uuid2</i>] | <b>-A</b>] | + | <p style="margin-top: 1em">[<b>-u </b><i>uuid</i>] |
− | [<b>-n </b><i>new_delta</i>]
| |
| <i>DiskDescriptor.xml</i></p> </td></tr> | | <i>DiskDescriptor.xml</i></p> </td></tr> |
| <tr valign="top" align="left"> | | <tr valign="top" align="left"> |
Line 1,047: |
Line 599: |
| <td width="57%"> | | <td width="57%"> |
| | | |
− | <p>Specify a single snapshot <i>uuid</i> to merge. If this | + | <p>Specify a snapshot <i>uuid</i> to merge. If this option |
− | option is not specified, the top delta will be used.</p></td></tr>
| + | is 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 all
| |
− | snapshots in the range <i>uuid</i>...<i>uuid2</i> are to be
| |
− | merged.</p> </td></tr>
| |
| <tr valign="top" align="left"> | | <tr valign="top" align="left"> |
| <td width="11%"></td> | | <td width="11%"></td> |
Line 1,071: |
Line 612: |
| snapshots have more than a single child, they will be | | snapshots have more than a single child, they will be |
| impossible to merge.</p></td></tr> | | 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> | | </table> |
| | | |
| ==== snapshot-switch ==== | | ==== snapshot-switch ==== |
| | | |
− | <p style="margin-top: 1em">Switch to the specified | + | <p style="margin-left:11%; margin-top: 1em">Switch to the |
− | snapshot. This operation can only be performed while ploop | + | specified snapshot. This operation can only be performed |
− | is not running (i.e. is unmounted). The current top delta | + | while ploop is not running (i.e. is unmounted). The current |
− | image will be removed.</p> | + | top delta image will be removed.</p> |
| | | |
| <table width="100%" border="0" rules="none" frame="void" | | <table width="100%" border="0" rules="none" frame="void" |
Line 1,117: |
Line 646: |
| ==== snapshot-delete ==== | | ==== snapshot-delete ==== |
| | | |
− | <p style="margin-top: 1em">Delete the specifed snapshot. | + | <p style="margin-left:11%; margin-top: 1em">Delete the |
− | This operation can only be performed if the specified | + | specifed snapshot. This operation can only be performed if |
− | snapshot is not active. In case snapshot doesn’t have | + | the specified snapshot is not active. In case snapshot |
− | any children, it will simply be removed. In case snapshot | + | doesn’t have any children, it will simply be removed. |
− | has a single child, it will be merged to that child. | + | In case snapshot has a single child, it will be merged to |
− | Deleting a snapshot that has multiple children is currently | + | that child. Deleting a snapshot that has multiple children |
− | not supported (but can be performed manually in an iterative | + | is currently not supported (but can be performed manually in |
− | fashion).</p> | + | an iterative fashion).</p> |
| | | |
| <table width="100%" border="0" rules="none" frame="void" | | <table width="100%" border="0" rules="none" frame="void" |
Line 1,151: |
Line 680: |
| ==== snapshot-list ==== | | ==== snapshot-list ==== |
| | | |
− | <p style="margin-top: 1em">List available snapshots.</p> | + | <p style="margin-left:11%; margin-top: 1em">List available |
| + | snapshots.</p> |
| | | |
| <table width="100%" border="0" rules="none" frame="void" | | <table width="100%" border="0" rules="none" frame="void" |
Line 1,164: |
Line 694: |
| | | |
| <p style="margin-top: 1em">[<b>-H</b>] | | <p style="margin-top: 1em">[<b>-H</b>] |
− | [<b>-u </b><i>uuid</i>] [<b>-s</b>] | + | [<b>-u </b><i>uuid</i>] |
| [<b>-o </b><i>field</i>[,<i>field</i>...]] | | [<b>-o </b><i>field</i>[,<i>field</i>...]] |
| <i>DiskDescriptor.xml</i></p> </td></tr> | | <i>DiskDescriptor.xml</i></p> </td></tr> |
Line 1,184: |
Line 714: |
| <p style="margin-left:42%;">Filter the output to a | | <p style="margin-left:42%;">Filter the output to a |
| specified <i>uuid</i>.</p> | | 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> | | <p style="margin-left:11%;"><b>-o</b>, <b>--output</b> |
Line 1,214: |
Line 727: |
| • <b>fname</b> - snapshot image file name.</p> | | • <b>fname</b> - snapshot image file name.</p> |
| | | |
− | === Image copying === | + | === ADVANCED COMMANDS === |
− | | |
− | <p style="margin-top: 1em"><b>ploop copy</b> is a mechanism
| |
− | of effective copying of a top ploop image with the help of
| |
− | build-in ploop kernel driver feature called write tracker.
| |
− | Write tracker is a feature that lets <b>ploop copy</b> to
| |
− | iteratively obtain a list of modified image blocks from the
| |
− | kernel. Two <b>ploop copy</b> processes are required for
| |
− | iterative top delta transfer. These are used by
| |
− | <b>vzmigrate(8).</b></p>
| |
| | | |
− | ==== copy (sending) ==== | + | ==== shapshot ==== |
| | | |
| <table width="100%" border="0" rules="none" frame="void" | | <table width="100%" border="0" rules="none" frame="void" |
Line 1,231: |
Line 735: |
| <tr valign="top" align="left"> | | <tr valign="top" align="left"> |
| <td width="11%"></td> | | <td width="11%"></td> |
− | <td width="15%"> | + | <td width="21%"> |
| | | |
− | <p style="margin-top: 1em"><b>ploop copy</b></p></td> | + | <p style="margin-top: 1em"><b>ploop snapshot</b></p></td> |
| <td width="2%"></td> | | <td width="2%"></td> |
− | <td width="72%"> | + | <td width="66%"> |
| | | |
− | <p style="margin-top: 1em"><b>-s</b> <i>device</i> | + | <p style="margin-top: 1em">[<b>-F</b>] |
− | [<b>-F </b><i>stop_command</i>] { | + | [<b>-d </b><i>device</i>] <i>image_file</i></p></td></tr> |
− | [<b>-d </b><i>file</i>] | | + | <tr valign="top" align="left"> |
− | [<b>-o </b><i>output_fd</i>]
| + | <td width="11%"></td> |
− | [<b>-f </b><i>feedback_fd</i>] }</p></td></tr>
| + | <td width="21%"> |
− | </table> | |
| | | |
− | <p style="margin-top: 1em">This command enables the | + | <p><b>-F</b></p></td> |
− | in-kernel write tracker for the specified ploop
| + | <td width="2%"></td> |
− | <i>device,</i> then sends all the data blocks from the top
| + | <td width="66%"> |
− | delta 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 the | |
− | modified data blocks from the kernel and sends those blocks
| |
− | again. After a number of iterations (or when the list is
| |
− | empty), it executes the <i>stop_command</i> (this could be
| |
− | <b>vzctl stop</b> or <b>vzctl chkpnt</b>) and does the last | |
− | iteration of sending the modified data blocks. Finally, it
| |
− | checks that the data were not modified, error is returned
| |
− | otherwise.</p>
| |
− | | |
− | <p style="margin-top: 1em">If <i>feedback_fd</i> is
| |
− | specified, it is used to read back from the ploop copy
| |
− | receiving side. The feedback channel is currently used to
| |
− | wait for <b>fdatasync</b>(2) completion.</p>
| |
− | | |
− | ==== copy (receiving) ====
| |
| | | |
− | <table width="100%" border="0" rules="none" frame="void" | + | <p>Freeze filesystem before making a snapshot. If the |
− | cellspacing="0" cellpadding="0">
| + | option is not given, the file system will not be frozen and |
| + | snapshot will have an inconsistent file system. If you need |
| + | a quick snapshot, do not use this option. Journal will be |
| + | replayed when you mount the snapshot.</p></td></tr> |
| <tr valign="top" align="left"> | | <tr valign="top" align="left"> |
| <td width="11%"></td> | | <td width="11%"></td> |
− | <td width="15%"> | + | <td width="21%"> |
| | | |
− | <p style="margin-top: 1em"><b>ploop copy</b></p></td> | + | <p><b>-d</b> <i>device</i></p></td> |
| <td width="2%"></td> | | <td width="2%"></td> |
− | <td width="58%"> | + | <td width="66%"> |
| | | |
− | <p style="margin-top: 1em"><b>-d</b> <i>file</i> | + | <p>Ploop device, e.g., <b>/dev/ploop0</b>.</p></td></tr> |
− | [<b>-i </b><i>input_fd</i>]
| |
− | [<b>-f </b><i>feedback_fd</i>]</p> </td>
| |
− | <td width="14%">
| |
− | </td></tr>
| |
− | </table>
| |
− | | |
− | <p style="margin-top: 1em">Reads the data blocks (provided
| |
− | by the source <b>ploop copy</b>) from the file descriptor
| |
− | <i>input_fd</i> (<b>stdin</b>, i.e. <b>0</b> by default) and
| |
− | writes them to the <i>file</i>.</p>
| |
− | | |
− | <p style="margin-top: 1em">If <i>feedback_fd</i> is
| |
− | specified, it is used to send status back to the ploop copy
| |
− | sending side.</p>
| |
− | | |
− | === Ballooning ===
| |
− | | |
− | <p style="margin-top: 1em">Since there is no online shrink
| |
− | support in <b>ext4</b> file system, ploop internally uses a
| |
− | technique called "ballooning" as a work around to
| |
− | shrink its images.</p>
| |
− | | |
− | <p style="margin-top: 1em">Ballooning operation consists of
| |
− | inflating a special balloon file (invisible for ordinary
| |
− | users), loading fiemap info of the inflated balloon to the
| |
− | kernel, relocating blocks of the image file from the tail to
| |
− | the space specified by fiemap info, and truncating the tail
| |
− | of the image file. Result is the image file of a smaller
| |
− | size.</p>
| |
− | | |
− | <p style="margin-top: 1em">However, it is quite possible
| |
− | that inflated balloon file will only span blocks that were
| |
− | never touched before. Those will look like "not
| |
− | allocated" space from the kernel ploop point of view.
| |
− | In this case nothing will be relocated and nothing
| |
− | truncated.</p>
| |
− | | |
− | <p style="margin-top: 1em">So, if balloon operation
| |
− | succeeded, it’s only guaranteed that a user of ploop
| |
− | device won’t be able to consume more space than the
| |
− | initial block device size minus the size of the inflated
| |
− | balloon. On the other hand, if a user of block device used a
| |
− | lot of space on it, then freed the significant part of used
| |
− | space, balloon operation will result in significant truncate
| |
− | of image file.</p>
| |
− | | |
− | <p style="margin-top: 1em">All the ploop ballooning logic
| |
− | is hidden from the end user, so while a number of low-level
| |
− | commands exist for working with ploop ballooning, those are
| |
− | not needed and therefore are not documented here, except for
| |
− | a single command.</p>
| |
− | | |
− | ==== balloon discard ====
| |
− | | |
− | <p style="margin-top: 1em">In a situation when a lot of
| |
− | disk space were freed on an in-ploop filesystem, use
| |
− | <b>ploop balloon discard</b> to optimize the ploop image
| |
− | size.</p>
| |
− | | |
− | <table width="100%" border="0" rules="none" frame="void"
| |
− | cellspacing="0" cellpadding="0">
| |
| <tr valign="top" align="left"> | | <tr valign="top" align="left"> |
| <td width="11%"></td> | | <td width="11%"></td> |
− | <td width="32%"> | + | <td width="21%"> |
| | | |
− | <p style="margin-top: 1em"><b>ploop balloon discard</b></p> </td> | + | <p><i>image_file</i></p></td> |
| <td width="2%"></td> | | <td width="2%"></td> |
− | <td width="50%"> | + | <td width="66%"> |
| | | |
− | <p style="margin-top: 1em">[<b>--automount</b>] | + | <p>Path to a file to write a new snapshot to. If this file |
− | [<b>--to-free </b><i>size</i>]
| + | already exists, <b>ploop snapshot</b> will exit with an |
− | [<b>--min-block </b><i>min_size</i>] [<b>--defrag</b>]
| + | error.</p> </td></tr> |
− | <i>DiskDescriptor.xml</i></p> </td>
| |
− | <td width="5%">
| |
− | </td></tr> | |
| </table> | | </table> |
| | | |
− | <p style="margin-top: 1em">Iteratively try to relocate and
| + | == IMAGE FORMATS == |
− | discard unused blocks from a ploop image, reducing its
| |
− | size.</p>
| |
− | | |
− | <p style="margin-top: 1em">Note that ploop device and its
| |
− | inner file system should be mounted. If not, one can use
| |
− | <b>--automount</b> option to automatically mount ploop for
| |
− | the duration of the operation.</p>
| |
− | | |
− | <p style="margin-top: 1em">Option <b>--defrag</b> can be
| |
− | used to run a filesystem defragmentation utility (currently
| |
− | e4defrag2 on ext4 only) before the main operation.</p>
| |
− | | |
− | <p style="margin-top: 1em">Option <b>--to-free</b> can be
| |
− | used to specify a maximum disk space to be freed. In other
| |
− | words, stop the process once freed space exceeded requested
| |
− | <i>size</i>. Default is 0, meaning to try to free as much
| |
− | space as possible.</p>
| |
− | | |
− | <p style="margin-top: 1em">Option <b>--min-block</b> can be
| |
− | used to specify a minimum size of an extent to free. The
| |
− | smallest possible extent is 1 cluster (currently 1 MB), one
| |
− | can specify higher value to speed up the whole discarding
| |
− | operation.</p>
| |
− | | |
− | <p style="margin-top: 1em">Note that the same functionality
| |
− | is available by means of <b>vzctl compact</b> command.</p>
| |
| | | |
− | === Image formats === | + | <p style="margin-left:11%; margin-top: 1em">The following |
− | following image formats are currently supported.</p>
| + | image formats are currently supported.</p> |
| | | |
| <table width="100%" border="0" rules="none" frame="void" | | <table width="100%" border="0" rules="none" frame="void" |
Line 1,389: |
Line 787: |
| <tr valign="top" align="left"> | | <tr valign="top" align="left"> |
| <td width="11%"></td> | | <td width="11%"></td> |
− | <td width="24%"> | + | <td width="4%"> |
| | | |
− | <p><b>raw</b></p></td> | + | <p style="margin-top: 1em"><b>raw</b></p></td> |
− | <td width="10%"></td> | + | <td width="7%"></td> |
− | <td width="55%"> | + | <td width="78%"> |
| | | |
− | <p>Raw format, with 1:1 mapping between the image file and | + | <p style="margin-top: 1em">Raw format, with 1:1 mapping |
− | the ploop device.</p></td></tr> | + | between the image file and the ploop device.</p></td></tr> |
− | <tr valign="top" align="left">
| + | </table> |
− | <td width="11%"></td>
| |
− | <td width="24%">
| |
| | | |
− | <p><b>ploop1</b>, <b>expanded</b></p></td> | + | <p style="margin-left:11%;"><b>ploop1</b>, <b>expanded</b></p> |
− | <td width="10%"></td>
| |
− | <td width="55%">
| |
| | | |
− | <p>Expanded format. The image will grow according to the | + | <p style="margin-left:22%;">Expanded format. The image will |
− | needs of the underlying file system. This format is the | + | grow according to the needs of the underlying file system. |
− | default. Names ’<b>ploop1</b>’ and | + | This format is the default. Names |
− | ’<b>expanded</b>’ are aliases.</p></td></tr> | + | ’<b>ploop1</b>’ and |
− | <tr valign="top" align="left">
| + | ’<b>expanded</b>’ are aliases.</p> |
− | <td width="11%"></td>
| |
− | <td width="24%">
| |
| | | |
− | <p><b>preallocated</b></p></td> | + | <p style="margin-left:11%;"><b>preallocated</b></p> |
− | <td width="10%"></td>
| |
− | <td width="55%">
| |
| | | |
− | <p>This is the same as ’<b>ploop1</b>’ or | + | <p style="margin-left:22%;">This is the same as |
| + | ’<b>ploop1</b>’ or |
| ’<b>expanded</b>’, the only difference is all | | ’<b>expanded</b>’, the only difference is all |
− | the file blocks are allocated during creation.</p></td></tr> | + | the file blocks are allocated during creation.</p> |
− | </table>
| |
− | | |
− | == EXIT STATUS ==
| |
− | | |
− | <p style="margin-left:11%; margin-top: 1em"><b>ploop</b>
| |
− | exits with status 0 in case of successful execution. Any
| |
− | status greater than 0 signifies an error. <b><br>
| |
− | 1</b>, <b>SYSEXIT_CREAT</b></p>
| |
− | | |
− | <p style="margin-left:22%;">Error creating a file.</p>
| |
− | | |
− | <p style="margin-left:11%;"><b>2</b>, <b>SYSEXIT_DEVICE</b></p>
| |
− | | |
− | <p style="margin-left:22%;">Error getting or opening a
| |
− | ploop device.</p>
| |
− | | |
− | <p style="margin-left:11%;"><b>3</b>, <b>SYSEXIT_DEVIOC</b></p>
| |
− | | |
− | <p style="margin-left:22%;">Error doing <b>ioctl</b>(2) on
| |
− | ploop device.</p>
| |
− | | |
− | <p style="margin-left:11%;"><b>4</b>, <b>SYSEXIT_OPEN</b></p>
| |
− | | |
− | <p style="margin-left:22%;">Error opening a file.</p>
| |
− | | |
− | <p style="margin-left:11%;"><b>5</b>, <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>, <b>SYSEXIT_READ</b></p>
| |
− | | |
− | <p style="margin-left:22%;">Error during read.</p>
| |
− | | |
− | <p style="margin-left:11%;"><b>7</b>, <b>SYSEXIT_WRITE</b></p>
| |
− | | |
− | <p style="margin-left:22%;">Error during write.</p>
| |
− | | |
− | <p style="margin-left:11%;"><b>9</b>, <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>, <b>SYSEXIT_PLOOPFMT</b></p>
| |
− | | |
− | <p style="margin-left:22%;">Corrupted ploop image
| |
− | detected.</p>
| |
− | | |
− | <p style="margin-left:11%;"><b>12</b>, <b>SYSEXIT_SYS</b></p>
| |
− | | |
− | <p style="margin-left:22%;">Other system error.</p>
| |
− | | |
− | <p style="margin-left:11%;"><b>13</b>, <b>SYSEXIT_PROTOCOL</b></p>
| |
− | | |
− | <p style="margin-left:22%;">Broken protocol (unexpected
| |
− | value received).</p>
| |
− | | |
− | <p style="margin-left:11%;"><b>14</b>, <b>SYSEXIT_LOOP</b></p>
| |
− | | |
− | <p style="margin-left:22%;"><b>pcopy</b> command
| |
− | can’t finalize copying (frozen filesystem is
| |
− | changing).</p>
| |
− | | |
− | <p style="margin-left:11%;"><b>15</b>, <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>, <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>, <b>SYSEXIT_EBUSY</b></p>
| |
− | | |
− | <p style="margin-left:22%;">Can’t continue, another
| |
− | operation is in progress.</p>
| |
− | | |
− | <p style="margin-left:11%;"><b>18</b>, <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>, <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>, <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>, <b>SYSEXIT_MOUNT</b></p>
| |
− | | |
− | <p style="margin-left:22%;">Can’t mount ploop image
| |
− | or file system.</p>
| |
− | | |
− | <p style="margin-left:11%;"><b>22</b>, <b>SYSEXIT_UMOUNT</b></p>
| |
− | | |
− | <p style="margin-left:22%;">Can’t unmount ploop image
| |
− | or file system.</p>
| |
− | | |
− | <p style="margin-left:11%;"><b>23</b>, <b>SYSEXIT_LOCK</b></p>
| |
− | | |
− | <p style="margin-left:22%;">Locking failed (another
| |
− | operation in progress?).</p>
| |
− | | |
− | <p style="margin-left:11%;"><b>24</b>, <b>SYSEXIT_MKFS</b></p>
| |
− | | |
− | <p style="margin-left:22%;">Can’t create file
| |
− | system.</p>
| |
− | | |
− | <p style="margin-left:11%;"><b>26</b>, <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>, <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>, <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>, <b>SYSEXIT_ABORT</b></p>
| |
− | | |
− | <p style="margin-left:22%;">Operation aborted.</p>
| |
− | | |
− | <p style="margin-left:11%;"><b>30</b>, <b>SYSEXIT_RELOC</b></p>
| |
− | | |
− | <p style="margin-left:22%;">Block relocation failed.</p>
| |
− | | |
− | <p style="margin-left:11%;"><b>33</b>, <b>SYSEXIT_CHANGE_GPT</b></p>
| |
− | | |
− | <p style="margin-left:22%;">Error resizing GPT partition
| |
− | table.</p>
| |
− | | |
− | <p style="margin-left:11%;"><b>35</b>, <b>SYSEXIT_UNLINK</b></p>
| |
− | | |
− | <p style="margin-left:22%;">Error from
| |
− | <b>unlink</b>(2).</p>
| |
− | | |
− | <p style="margin-left:11%;"><b>36</b>, <b>SYSEXIT_MKNOD</b></p>
| |
− | | |
− | <p style="margin-left:22%;">Error from <b>mknod</b>(2).</p>
| |
− | | |
− | <p style="margin-left:11%;"><b>37</b>, <b>SYSEXIT_PLOOPINUSE</b></p>
| |
− | | |
− | <p style="margin-left:22%;">Image is already in use.</p>
| |
− | | |
− | <p style="margin-left:11%;"><b>38</b>, <b>SYSEXIT_PARAM</b></p>
| |
− | | |
− | <p style="margin-left:22%;">Invalid parameter.</p>
| |
− | | |
− | <p style="margin-left:11%;"><b>39</b>, <b>SYSEXIT_DISKDESCR</b></p>
| |
− | | |
− | <p style="margin-left:22%;">Problem with DiskDescriptor.xml
| |
− | file.</p>
| |
− | | |
− | <p style="margin-left:11%;"><b>40</b>, <b>SYSEXIT_DEV_NOT_MOUNTED</b></p>
| |
− | | |
− | <p style="margin-left:22%;">Ploop image is not mounted.</p>
| |
− | | |
− | <p style="margin-left:11%;"><b>41</b>, <b>SYSEXIT_FSCK</b></p>
| |
− | | |
− | <p style="margin-left:22%;">Error from <b>fsck</b>(8).</p>
| |
− | | |
− | <p style="margin-left:11%;"><b>43</b>, <b>SYSEXIT_NOSNAP</b></p>
| |
− | | |
− | <p style="margin-left:22%;">Can’t find specified
| |
− | snapshot UUID.</p>
| |
| | | |
| == SEE ALSO == | | == SEE ALSO == |
| | | |
− | <p style="margin-left:11%; margin-top: 1em">[[Man/vzctl.8|<b>vzctl</b>(8)]], | + | <p style="margin-left:11%; margin-top: 1em">[[Man/vzctl.8|<b>vzctl</b>(8)]].</p> |
− | [[Man/vzmigrate.8|<b>vzmigrate</b>(8)]], <b>http://openvz.org/Ploop</b>.</p>
| |