| 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>
| |