Btrfs üzerinde LXC konteynırlarını elleçlemenin uygun yolu


11

Lxc yüklü bir sunucumuz ve temel img olarak kullanılan bir lxc kapsayıcımız olduğunu varsayalım /var/lib/lxc/ubuntu_base. Basitlik için, temel img kopyalandıktan sonra yapılandırma değişikliklerini unutmayalım.

bazı insanlar yeni kaplar yapmak için alt hacimler ve anlık görüntüler kullanmanızı önerir, ancak biri kolayca cp --reflink ile benzer sonuçlar verebilir.

Peki, birden fazla kapsayıcıyı yönetmenin en iyi yolu (veya hangisi daha iyi) nedir?

  • anlık

Bu şekilde en iyi şekilde görünür, ancak dizini silemeyeceği için lxc-destroy gibi komutlar çalışmaz.

btrfs subvolume snapshot /var/lib/lxc/ubuntu_base /var/lib/lxc/container_1
  • reflink ile cp

Bu veya anlık görüntüler arasında herhangi bir performans farkı olup olmadığından emin değilim

cp --reflink=always /var/lib/lxc/ubuntu_base /var/lib/lxc/container_1
  • veya Farkında olmadığım bunu yapmanın daha iyi bir yolu var mı?

Düzenle:

Reflink seçeneğiyle gördüğüm bir şey, başkaları çalışıyorsa, temel kabı silemezsiniz, çünkü /procve /devmonte edilir ve asla değiştirilmez, referans her zaman aynıdır. Ancak tüm kaplanmış kapların kapatılması yardımcı görünüyor.


Yeni kapsayıcılar oluşturmak için btrfs anlık görüntü özelliğini kullandım - ve iyi çalışıyor (oldukça hızlı sağlama vb.). Bununla birlikte, btrfs, cilt başına sayfa önbelleğine sahiptir; bu nedenle, anlık görüntüleri kullanmak hızlı / disk alanı açısından verimli olsa da, muhtemelen bellekte aynı ikili olanın birden çok kopyasına sahip olursunuz.
David Goodwin

Yanıtlar:


2

Ben Ubuntu LTS 14 üzerinde ve sadece (ilk kez bile) aşağıdaki koştu ve bir cazibe gibi çalıştı:

lxc-stop -n ubuntu_base
lxc-clone -o ubuntu_base -n ubuntu_base_c1 -s
lxc-start -n ubuntu_base_c1 -d # make changes if needed
lxc-stop -n ubuntu_base_c1
lxc-snapshot -n ubuntu_base_c1

Lxc-clone ile -s kullanılması, destek deposu btrfs ise (durumunuzda) anlık görüntü alacaktır.

İle yeni klon / anlık görüntüleri doğrulayın

lxc-ls -f
btrfs subvolume list /var/lib/lxc

Umarım yardımcı olur!


1
İhtiyacınız bugünlerde belirtmek için geldiğini hatırlatırız Btrfs çalıştırdığınızda arka deposu olarak LXC oluşturmak veya LXC-klon size verecektir overlayfs yerine.
Lester Cheung

Sadece yeni bir "hafif" kap oluşturmak için, -sseçenek sayesinde ilk iki satırın yeterli olduğu (lxc-stop ve lxc-clone) ve son üç tanesinin (lxc_start, lxc_stop, lxc_snapshot) sadece bir gelecekteki konteyner evrimlerini yönetmek için yardımcı süreç. Doğru mu ?
lalebarde

3

lxc için btrfs alt hacimlerini kullanacaksanız, seçeneğinize eklemeniz user_subvol_rm_allowedgerekir /etc/fstab. Bir fstab dosyasından alınan örnek:

UUID=XXXXXXXXXXXXXXXXXXXXXX / btrfs subvol=@,user_subvol_rm_allowed,defaults 0 0

Bu seçenek, altvol kök olmadan, yalnızca normal kullanıcı olmadan kaldırabilmenizi sağlar. Anlık görüntüler btrfs alt hacimlerine girdiğinde bu özellik lxc tarafından kullanılır


3

Sanırım temel görüntünüzün büyüklüğüne bağlıdır. Muhtemelen lxc- yeni bir konteyner oluşturmak ve benim konteyner sağlamak için Tuz / Kukla vb kullanın ve nispeten büyük konteynerler için sadece lxc-klon (örneğin yüklü ve yapılandırılmış çok sayıda araç ile dev konteynerler).

Lxc-clone'un kaynakla aynı destek deposunu kullanacağını unutmayın . Bu nedenle, alt hacim kullanmak için kaplarınızı "-B btrfs" ile oluşturmanız gerekir. Örneğin:

lxc-create -B btrfs -n mycontainer -t ubuntu

Sonra klonlayın:

lxc-clone -s mycontainer mynewcontainer

Kapları saklamak --zfsrootiçin zfs kullanıyorsanız, varsayılan "tank" dışında bir zpool seçebilmeniz için lxc-create için ek bir seçenek vardır . Örneğin:

lxc-create -B zfs --zfsroot=data/lxc

Paylaş ve Keyfini çıkar!


BTRFS ile debian wheezy'dayım. Bu seçenek -B btrfsvarsayılan olarak kullanılır gibi görünüyor - Ben debian benim BTRFS ile ayarlandığını düşünüyorum. Aslında, bu seçeneği olmayan ilk konteyneri (32 bit debian wheezy) yarattım ve bunun için bir alt hacim oluşturuldu.
lalebarde

@lalebarde muhtemelen -B besteylemde ama bilmek güzel!
Lester Cheung
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.