मैं फ्रीबीएसडी ऑटोमोटिव को छोटे टुकड़ों में काटने और उन्हें तेल में उबालने जा रहा हूं


40

मैं फ्रीबीएसडी जेलों की एक संख्या के लिए घर निर्देशिकाओं के पदानुक्रम को उजागर करने की कोशिश कर रहा हूं। होम निर्देशिकाओं को ऐसे कॉन्फ़िगर किया गया है कि प्रत्येक एक अद्वितीय ZFS डेटासेट है। जेलों का उपयोग विकास कार्यों के लिए किया जाता है और इसलिए इसे नियमित आधार पर बनाया और नष्ट किया जाता है।

मेरा पहला विचार बस जेल के अंदर माउंट करने के लिए nullfs का उपयोग /homeकरना था, लेकिन nullfs अधीनस्थ फाइल सिस्टम तक पहुंचने का कोई रास्ता प्रदान नहीं करता है।

मेरा दूसरा विचार एनएफएस के माध्यम से निर्देशिकाओं का निर्यात करना था और फिर प्रत्येक जेल के अंदर ऑटोमन डेमॉन (एएमडी) चलाना था। यह सिर्फ काम किया होता ... अगर किसी जेल के अंदर एनएफएस आरोहण करना संभव होता। लेकिन ऐसा नहीं है।

मेरा तीसरा विचार होस्ट पर amd चलाने का था और nullfs mounts को जेलों में रखने का था ... लेकिन nullfs के लिए amd का समर्थन मौजूद है।

मेरा चौथा विचार NFS का उपयोग करके निर्देशिकाओं के निर्यात पर वापस जाना था, क्योंकि निश्चित रूप से NFS के साथ काम करता है, सही? दुर्भाग्य से, लक्ष्य माउंटपॉइंट पर एक निर्देशिका बढ़ने के बजाय, amd एक अस्थायी स्थान ( /.amd_mnt/...) में चीजों को माउंट करना पसंद करता है और फिर एक सिम्लिंक बनाता है ... जो, निश्चित रूप से जेल के वातावरण के अंदर बेकार है।

तो शायद आप जेल के एक उपनिर्देशिका को उजागर करने के लिए nullfs का उपयोग कर सकते हैं /.amd_mnt? नहीं! यह हमें मेरे पहले प्रयास में वापस लाता है, जिसमें हम पाते हैं कि nullfs का उपयोग करके अधीनस्थ फाइल सिस्टम तक पहुंचने का कोई तरीका नहीं है ।

और फिर मेरा सर फट गया।

क्या मैं जो करने की कोशिश कर रहा हूं उसका कोई अच्छा समाधान है? एक बुरा समाधान जेल को बूट करने के बाद एक स्क्रिप्ट को चलाने के लिए होगा जो प्रत्येक होम डायरेक्टरी के लिए कई nullfs माउंटपॉइंट बनाएगा , लेकिन यह बहुत क्लिंकी है - इसे नई निर्देशिकाओं या हटाए गए निर्देशिकाओं को ध्यान में रखने के लिए समय-समय पर चलाने की आवश्यकता होगी। इसलिए मूल रूप से मुझे एक खराब ऑटोमोटिव लिखना होगा।

इसके लिए अवश्य ही एक बेहतर तरीका होना चाहिए। ' मेरी मदद करो, सर्वरफॉल्ट, तुम मेरी एकमात्र आशा हो!

अद्यतन 1 : यह मेरे साथ हुआ है कि मैं इस समस्या के भाग को हल करने में सक्षम हो सकता हूं pam_mount, हालांकि यह कम से कम अधूरा होगा। इसके अलावा, यह प्रलेखन से स्पष्ट नहीं है कि क्या pam_mountस्वचालित रूप से लक्ष्य माउंटपॉइंट बना सकते हैं या नहीं । यदि इसे पहले से मौजूद होने के लिए माउंटपॉइंट की आवश्यकता होती है, तो यह समाधान मेरे द्वारा पहले से प्रस्तावित किए गए खराब ऑटोमोटिव से बेहतर नहीं होगा।

अद्यतन 2 : जैसा कि नीचे दिए गए जवाबों में चर्चा की गई है, VFCF_JAILएनएफएस फाइलसिस्टम पर सेटिंग जेलों को एनएफएस माउंट करने की अनुमति देती है। दुर्भाग्यवश, आटोमैटिक का व्यवहार जारी रहता है जो अनहेल्दी होता है, और जब जेल में चलाया जाता है, तो इस तरह से वेज हो जाना बहुत अच्छा प्रतीत होता है, जैसे कि प्रक्रिया प्रविष्टि को हटाने के लिए सिस्टम रिबूट आवश्यक है।


1
और अगर आप उन सुविधाओं को FreeBSD पर पोर्ट करना चाहते हैं, जो भयानक होंगी। गंभीरता से, मानक लिनक्स आटोमोटिव का व्यवहार इसके लिए एकदम सही होगा, क्योंकि यह वास्तव में सिम्पलिंक का उपयोग करने के बजाय लक्ष्य माउंटपॉइंट पर फाइल सिस्टम को माउंट करता है।
लार्क्स

4
मैं समय की भारी कमी को जिम्मेदार ठहराता हूं। और शायद प्रेरणा की कमी के बस थोड़ा सा ...>।>
इग्नासियो वाज़केज़-अब्राम्स

15
+1 भयानक शीर्षक के लिए पूरी तरह से। :)
शौना

4
यह मुझे चिंता है कि कैसे विशिष्ट निष्पादन के अपने विशेष विधि है
मार्क हेंडरसन

2
ओह, @Wilshire, आप कोई मज़ा नहीं कर रहे हैं।
लार्क्स

जवाबों:


26

क्यों, नमस्ते वहाँ लार्स! यह एक आकर्षक प्रश्न है जो आपने पूछा है, और कुछ शोध के बाद मुझे आपके लिए एक उत्तर मिल सकता है।

इस और अन्य पदों के अनुसार , VFCF_JAIL एनएफएस फाइलसिस्टम प्रदाता पर विशेषता को सेट करना संभव हो सकता है , जो सिद्धांत रूप में जेलों को एनएफएस माउंट करने की अनुमति देगा। यह बदले में, जेल के अंदर एक को चलाने की अनुमति दे सकता है ... जो बड़े करीने से इस मुद्दे को हल करेगा।

मैं इस शाम को कर्नेल के पुनर्निर्माण की कोशिश करूँगा कि यह देखने के लिए कि चीजें कैसे काम करती हैं। यह आवश्यक रूप से सबसे बड़ा समाधान नहीं है (क्योंकि इसका मतलब है कि आपको यह सुनिश्चित करने की आवश्यकता है कि यह बदलाव भविष्य के कर्नेल अपडेट में बना रहे), लेकिन यह दिलचस्प होगा अगर यह काम करता है।

और याद रखें...

           ___________    ____                                           
    ______/   \__//   \__/____\                             
  _/   \_/  :           //____\\                             
 /|      :  :  ..      /        \                         
| |     ::     ::      \        /                             
| |     :|     ||     \ \______/     Don't try to rebuild the
| |     ||     ||      |\  /  |        kernel remotely because
 \|     ||     ||      |   / | \         you know you're just
  |     ||     ||      |  / /_\ \        going to hose the server.
  | ___ || ___ ||      | /  /    \    
   \_-_/  \_-_/ | ____ |/__/      \   
                _\_--_/    \      /   
               /____             /  
              /     \           /    
              \______\_________/     

6
धन्यवाद, लार्स; काश, मैंने आपकी सलाह ले ली होती, क्योंकि अब मैं सर्वर तक नहीं पहुंच सकता और मुझे यह कोशिश करने के लिए घर पहुंचने तक इंतजार करना होगा।
लार्क्स

10
LOLs के लिए +1। रात्रि के इस अधिकार पर भी विचार करें - KERNEL.OLD (या KERNEL.GENERIC) को बूट करने के लिए रात के मध्य में अपने सर्वर से बाहर निकलें - आप अपने सिस्टम पर एक सामान्य तारीख रखते हैं, यदि आप नहीं? शुरू करना चाहिए।) कई सबक सिखाता है ...
voretaq7

मैं mfsbsd की शुद्ध-बूट करने योग्य प्रतिलिपि रखता हूं , वह भी, जिसने मुझे कई बूट-लोडर संबंधित समस्याओं से बचाया है।
लार्क्स

1
सेट VFCF_JAILकिए गए एनएफएस माउंट काम करते हैं, लेकिन आटोमैटिक मुझे परेशान करना जारी रखता है।
लार्क्स

1
एह, मैं विभिन्न वातावरण में एक दशक से बेहतर समय के लिए होम निर्देशिकाओं के लिए ऑटोमाउंट का उपयोग कर रहा हूं और मैं इसके साथ खुश हूं। ध्यान रहे, यह लिनक्स (और सोलारिस) ऑटोमैटिक है, न कि एमड।
लार्क्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.