<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On 22 July 2015 at 19:44, Kir Kolyshkin <span dir="ltr">&lt;<a href="mailto:kir@openvz.org" target="_blank">kir@openvz.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
Next thing, you can actually use shared base deltas for containers, and although it is not<br>
enabled by default, but quite possible and works in practice. The key is to create a base delta<br>
and use it for multiple containers (via hardlinks).<br>
<br>
Here is a quick and dirty example:<br>
<br>
SRCID=50 # &quot;Donor&quot; container ID<br>
vztmpl-dl centos-7-x86_64 # to make sure we use the latest<br>
vzctl create $SRCID --ostemplate centos-7-x86_64<br></blockquote><div><br></div><div><br></div><div>Addition to this place:</div><div><br></div><div>     vzctl mount $SRCID</div><div>     sleep 20</div><div>     vzctl umount $SRCID</div><div><br></div><div><br></div><div>This is required because ploop uses lazy inode table initialization when formatting ext4,</div><div>and it leads to inode table init (lots of writes) being done later, when the container is first</div><div>mounted. If we don&#39;t mount it here and wait till it does its job, the code below will multiply</div><div>the data written by a factor of 1000 which we don&#39;t want.</div><div><br></div><div>Also, Instead of &quot;sleep 20&quot; we could use something like</div><div><br></div><div>     while killall -0 ext4lazyinit; do sleep 1; done<br></div><div><br></div><div>to wait for real until lazy init finishes.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
vzctl snapshot $SRCID<br>
for CT in $(seq 1000 2000); do \<br>
      mkdir -p /vz/private/$CT/root.hdd /vz/root/$CT; \<br>
      ln /vz/private/$SRCID/root.hdd/root.hdd /vz/private/$CT/root.hdd/root.hdd; \<br>
      cp -nr /vz/private/$SRCID/root.hdd /vz/private/$CT/; \<br>
      cp /etc/vz/conf/$SRCID.conf /etc/vz/conf/$CT.conf; \<br>
   done<br>
vzctl set $SRCID --disabled yes --save # make sure we don&#39;t use it<br>
<br>
This will create 1000 containers (so make sure your host have enough RAM),<br>
each having about 650MB files, so 650GB in total. Host disk space used will be<br>
about 650 + 1000*1 MB before start (i.e. about 2GB) , or about 650 + 1000*30 MB<br>
after start (i.e. about 32GB). So:<br>
<br>
real data used inside containers near 650 GB<br>
real space used on hard disk is near 32 GB<br>
<br>
So, 20x disk space savings, and this result is reproducible. Surely it will get worse<br>
over time etc., and this way of using plooop is neither official nor supported/recommended,<br>
but it&#39;s not the point here. The points are:<br>
 - this is a demonstration of what you could do with ploop<br>
 - this shows why you shouldn&#39;t trust any numbers<span class=""><br></span></blockquote></div></div></div>