Navigation Menu

Skip to content

Commit

Permalink
jclone: add clone-local.d hook notes
Browse files Browse the repository at this point in the history
  • Loading branch information
User Web committed Jun 2, 2019
1 parent 0c5878e commit b72b1ab
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 17 deletions.
25 changes: 17 additions & 8 deletions en/12.0.x/wf_jclone.html
Expand Up @@ -11,20 +11,29 @@ <h2><a name="jclone_cmd">jclone command</a></h2>
<p><strong>Description</strong>:</p>
<p>Creates a clone of a given jail. The command requires the name of the original jail (passed with <strong>old</strong>) as well as a name for the clone, specified with <strong>new</strong> and a FQDN (hostname) with <strong>host_hostname</strong>. Optionally a new IP Address can be given with the <strong>ip4_addr</strong> parameter (multiple IPs need to be separated by commas).</p>
<div class="warning">
<p><strong>Attention:</strong> Since 11.0.10 version, CBSD on ZFS-based hosters will be use ZFS clone features!</p>
<p><strong>Attention:</strong> when you are using a ZFS-based system, <strong>CBSD</strong> will use ZFS cloning by default!</p>
</div>
<p>ZFS clone features is ultra fast operation (thanks to Copy-on-write), but imposes some restrictions - you will be dependent on the parent snapshot. If you try to remove parent environment, CBSD automatically executes the <strong>zfs promote</strong> command,
but when you works with snapshot independently - just keep it in your mind</p>
<p>ZFS cloning features is ultra fast operation (thanks to Copy-on-write), but imposes some restrictions - you will be dependent on the parent snapshot.</p>
<p>You can control this behaviour via <strong>clone_method=</strong> argument or, to set it globally, use <i>rclone.conf</i> and <i>bclone.conf</i> to overwrite settings from 'auto' to 'rsync':
<pre class="brush:bash;ruler:true;">
% echo 'clone_method="rsync"' > ~cbsd/etc/rclone.conf
% echo 'clone_method="rsync"' > ~cbsd/etc/bclone.conf
<pre>
<p>When <i>~cbsd/etc/bclone.conf</i> (for bclone) and <i>~cbsd/etc/rclone.conf</i> contain:
<pre>
clone_method="rsync"
</pre>
<p>Clone will not use zfs clone even on ZFS filesystem and you will get full copy via rsync</p>
<h2><a name="clone-local.d hook: local/custom data clone">Custom data cloning jail method</a></h2>
<p>You can create your own data cloning method using script(s) in the directory <em>$workdir/jail-system/$jname/clone-local.d</em>.</p>
<p>For example, creating a script to the $workdir/jail-system/$jname/clone-local.d/ directory with the name <strong>myclone.sh</strong> and the contents of the form:
<pre class="brush:bash;ruler:true;">
#!/bin/sh
echo "My custom clone for: $jname -> $newjname
echo "${data} -> ${newdata}"
/bin/cp -Ra ${data} ${newdata}
</pre>
<p>You will force <strong>CBSD</strong> to execute your script as a data cloning method.</p>
<div class="warning">
<p><strong>Attention:</strong> The script must always end with 0 exit code when success</p>
</div>
<p>Please note that standard variables are available in the script <a href="/<!--#echo var="lang" -->/<!--#echo var="version" -->/wf_cbsd_variables_ssi.html">CBSD variables</a>. Additionally, these variables are exported: <strong>$newjname</strong>,<strong>$newdata</strong></p>
<p>Why it is needed: if you use NAS or NFS as a storage and have access there, you can clone the data using NAS or directly on the NFS server, which will significantly increase the cloning speed and reduce unnecessary traffic. See: <a target="_blank" href="https://github.com/cbsd/cbsd/issues/373">Issue #373</a></p>
<p><strong>Example:</strong></p>
<p>cloning jail jail2 to jail3 with changes ip address <strong>ip4_addr</strong> and name of hosts <strong>host_hostname</strong>:</p>
<pre class="brush:bash;ruler:true;">
Expand Down
30 changes: 21 additions & 9 deletions ru/12.0.x/wf_jclone.html
Expand Up @@ -11,20 +11,32 @@ <h2><a name="jclone_cmd">Команда jclone</a></h2>
<p><strong>Описание</strong>:</p>
<p>Выполняет клонирование jail в новый. В качестве обязательных аргументов, указывается источник/оригинал клетки через <strong>old</strong>,новое имя через аргумент <strong>new</strong> и FQDN (hostname) через <strong>host_hostname</strong>. В качестве необязательного&nbsp;— новые ip адреса через <strong>ip4_addr</strong> (если IP несколько, адреса указываются через запятую без пробелов)</p>
<div class="warning">
<p><strong>Внимание:</strong> Начиная с версии 11.0.10, CBSD на ZFS системах применяет средства ZFS clone!</p>
<p><strong>Внимание:</strong> Если вы используете ZFS-based систему, <strong>CBSD</strong> будет использовать ZFS клонирование по-умолчанию!</p>
</div>
<p>ZFS клонирование, это мгновенная операция независимо от объемов (спасибо Copy-on-write), но накладывает некоторые ограничения - вы будете записимы от наличия родительского снапшота. Если вы попробуете удалить родительское окружение,, CBSD автоматически выполнит команду <strong>zfs promote</strong>,
однако если вы работаете со снапшотами независимо от CBSD - имейте это ввиду</p>
<p>Вы можете контроллировать это поведение через аргумент <strong>clone_method=</strong>. Либо можете выставить его глобально через <i>rclone.conf</i> и <i>bclone.conf</i>, переопределив настройку с 'auto' на 'rsync':
<p>ZFS клонирование - это мгновенная операция независимо от объемов (спасибо Copy-on-write), но накладывает некоторые ограничения - вы будете записимы от наличия родительского снапшота.</p>
<p>Если вы попробуете удалить родительское окружение,, <strong>CBSD</strong> автоматически выполнит команду <strong>zfs promote</strong></p>
<p>Вы можете контроллировать это поведение через аргумент <strong>clone_method=</strong>. Либо можете выставить его глобально через <i>rclone.conf</i> и <i>bclone.conf</i>, переопределив настройку с 'auto' на 'rsync':</p>
<pre class="brush:bash;ruler:true;">
% echo 'clone_method="rsync"' > ~cbsd/etc/rclone.conf
% echo 'clone_method="rsync"' > ~cbsd/etc/bclone.conf
<pre>
<p>Когда <i>~cbsd/etc/bclone.conf</i> (для bclone) и <i>~cbsd/etc/rclone.conf</i> содержат:
<pre>
clone_method="rsync"
</pre>
<p>клон не будет использовать zfs clone, даже если вы работаете на ZFS</p>
<h2><a name="clone-local.d hook: local/custom data clone">Кастомный метод клонирования данных jail</a></h2>
<p>Вы можете создать собственный метод клонирования данных через выполняемый скрипт(ы) в каталоге <em>$workdir/jail-system/$jname/clone-local.d</em>.</p>
<p>Например, создав к каталоге $workdir/jail-system/$jname/clone-local.d/ скрипт с именем <strong>myclone.sh</strong> и содержимым вида:<p>
<pre class="brush:bash;ruler:true;">
#!/bin/sh
echo "My custom clone for: $jname -> $newjname
echo "${data} -> ${newdata}"
/bin/cp -Ra ${data} ${newdata}
</pre>
<p>Вы заставите <strong>CBSD</strong> выполнять ваш скрипт в качестве метода клонирования данных</p>
<div class="warning">
<p><strong>Внимание:</strong> Этот скрипт должен завершаться с кодом 0 в случае успеха!</p>
</div>
<p>Обратите внимание, что в скрипте доступны стандартные переменные <a href="/<!--#echo var="lang" -->/<!--#echo var="version" -->/wf_cbsd_variables_ssi.html">CBSD variables</a>, в дополнение
к которым экспортируется переменные: <strong>$newjname</strong>, <strong>$newdata</strong></p>
<p>Зачем это нужно: если в качестве storage вы используете NAS или NFS и имеете на нее доступ, вы можете выполнить клонирование данных средствами NAS или непосредственно на сервере NFS, что
значительно увеличит скорость клонирования и уменьшит ненужный трафик. См. <a target="_blank" href="https://github.com/cbsd/cbsd/issues/373">Issue #373</a></p>
<p><strong>Пример:</strong> клонирование клетки jail2 в jail3 со сменой имени хоста <strong>host_hostname</strong> и ip адреса <strong>ip4_addr</strong>:</p>
<pre class="brush:bash;ruler:true;">
% cbsd jclone old=jail2 new=jail3 host_hostname=jail3.my.domain ip4_addr=10.0.0.22/24
Expand Down

0 comments on commit b72b1ab

Please sign in to comment.