Btrfs पर LXC कंटेनरों को संभालने का उचित तरीका


11

आइए हम कहते हैं कि हमारे पास एक सर्वर है जिसमें lxc इंस्टॉल है, और एक lxc कंटेनर का उपयोग आधार img के रूप में किया जाता है /var/lib/lxc/ubuntu_base। सादगी के लिए आइए बेस इमग कॉपी करने के बाद कॉन्फिग चेंजेस को भूल जाते हैं।

कुछ लोग नए कंटेनर बनाने के लिए सबवोल्यूम्स और स्नैपशॉट का उपयोग करने का सुझाव देते हैं, लेकिन एक सिमेरिलर परिणामों के साथ आसानी से cp --reflink कर सकता है।

तो कई कंटेनरों के प्रबंधन के लिए प्रॉपर तरीका (या जो बेहतर है) क्या है?

  • स्नैपशॉट

यह तरीका सबसे अच्छा लगता है, लेकिन lxc- नष्ट जैसे कमांड काम नहीं करेंगे क्योंकि यह निर्देशिका को हटाने में सक्षम नहीं होगा।

btrfs subvolume snapshot /var/lib/lxc/ubuntu_base /var/lib/lxc/container_1
  • Reflink के साथ सी.पी.

मुझे यकीन नहीं है कि इस या स्नैपशॉट के बीच कोई प्रदर्शन अंतर है

cp --reflink=always /var/lib/lxc/ubuntu_base /var/lib/lxc/container_1
  • या क्या ऐसा करने का कोई और बेहतर तरीका है जिसके बारे में मुझे जानकारी नहीं है।

संपादित करें:

एक बात जो मैंने रिफ़्लिंक विकल्प के साथ देखी है, वह यह है कि आप आधार कंटेनर को नहीं हटा सकते हैं यदि अन्य चल रहे हैं, क्योंकि /procऔर /devमाउंट किए जाते हैं और कभी नहीं बदले जाते हैं, संदर्भ को हमेशा एक ही है। लेकिन सभी कॉपी किए गए कंटेनरों को बंद करने से मदद मिलती है।


मैंने नए कंटेनरों को बनाने के लिए btrfs स्नैपशॉट सुविधा का उपयोग किया है - और यह अच्छी तरह से काम करता है (सुंदर त्वरित प्रावधान आदि)। हालाँकि, btrfs में एक प्रति-उपवृत्त पृष्ठ कैश है - इसलिए हालांकि स्नैपशॉट का उपयोग त्वरित / डिस्क स्थान कुशल है, आपको स्मृति में प्रभावी रूप से एक ही बाइनरी की कई प्रतियां होने की संभावना है।
डेविड गुडविन

जवाबों:


2

मैं उबंटू एलटीएस 14 पर हूं और बस निम्नलिखित चला गया (पहली बार भी) और इसने एक आकर्षण की तरह काम किया:

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

अगर ling store btrfs (आपके मामले में) है, तो lxc-क्लोन के साथ -s का उपयोग एक स्नैपशॉट लेगा।

के साथ नए क्लोन / स्नैपशॉट सत्यापित करें

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

उम्मीद है की वो मदद करदे!


1
ध्यान दें कि इन दिनों आपको बैकिंग स्टोर के रूप में btrfs को निर्दिष्ट करने की आवश्यकता होती है जब आप lxc-create चलाते हैं या lxc-clone आपको इसके बजाय एक ओवरलेफ़्स देगा
लेस्टर चेउंग

केवल एक नया "लाइट" कंटेनर बनाने के लिए, ऐसा लगता है कि दो पहली लाइनें पर्याप्त हैं (lxc-stop और lxc-clone), -sविकल्प के लिए धन्यवाद , और यह कि तीन आखिरी वाले (lxc_start, lxc_stop, lxc_snapshot) सिर्फ एक हैं भविष्य के कंटेनर के विकास को प्रबंधित करने के लिए सहायक प्रक्रिया। क्या यह सही है ?
lalebarde

3

यदि आप lxc के लिए btrfs सबवॉल्म्स का उपयोग करेंगे, तो आपको user_subvol_rm_allowedअपने में विकल्प जोड़ने की आवश्यकता है /etc/fstab। उदाहरण एक fstab फ़ाइल से निकाला गया:

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

विकल्प यह अनुमति देगा कि आप बिना सामान्य उपयोगकर्ता के सबवोल को हटा सकते हैं। इस क्षमता का उपयोग lxc द्वारा किया जाता है जब स्नैपशॉट btrfs सबवॉल्म्स में जाते हैं


3

अनुमान करें कि यह आपकी आधार छवि कितनी बड़ी है। मैं शायद था LXC से बनाने का एक नया कंटेनर और साल्ट / कठपुतली आदि प्रावधान करने के लिए अपने कंटेनर और केवल का उपयोग LXC क्लोन अपेक्षाकृत बड़ा कंटेनरों के लिए (जैसे देव कंटेनर उपकरण स्थापित और कॉन्फ़िगर के बहुत सारे के साथ)।

ध्यान दें कि lxc-clone स्रोत के समान बैकिंग स्टोर का उपयोग करेगा। इसलिए सबवोल्यूम का उपयोग करने के लिए आपको "-बी बीट्रॉफ़्स" के साथ अपने कंटेनर बनाने की आवश्यकता होगी। उदाहरण के लिए:

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

फिर इसके साथ क्लोन करें:

lxc-clone -s mycontainer mynewcontainer

यदि आप --zfsrootz कंटेनरों को स्टोर करने के लिए zfs का उपयोग कर रहे हैं, तो lxc-create का एक अतिरिक्त विकल्प है, ताकि आप डिफ़ॉल्ट "टैंक" के अलावा एक ज़ूलू चुन सकें। उदाहरण के लिए:

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

साझा करें और आनंद लें!


मैं BTRFS के साथ डेबियन व्हीज़ी पर हूं। ऐसा लगता है कि विकल्प -B btrfsडिफ़ॉल्ट रूप से उपयोग किया जाता है - मुझे लगता है क्योंकि मेरा डेबियन बीटीआरएफएस के साथ सेट-अप है। वास्तव में, मैंने इस विकल्प के बिना अपना पहला कंटेनर (एक 32 बिट डेबियन व्हीज़ी) बनाया, और इसके लिए एक सबवोल्यूम बनाया गया।
lalebarde

@lalebarde जो शायद -B bestएक्शन में है लेकिन जानना अच्छा है!
लेस्टर चेउंग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.