/ Var / run को माइग्रेट / रन क्यों किया गया है?


66

Ubuntu 11.10 Oneiric के तकनीकी अवलोकन से :

उबंटू 11.10 से दूर चले गए है /var/run, /var/lockऔर /dev/shmऔर अब का उपयोग करता है /run, /run/lockऔर /run/shmबजाय (क्रमशः)।

  • मैं अपने अनुप्रयोगों में इन रास्तों को हार्डकोड करता हूं, यह परिवर्तन वनरिक के लिए क्यों किया गया है?
  • मैं अपने अनुप्रयोगों को आगे और पीछे-संगत करने के लिए क्या कर सकता हूं? वहाँ एक बेहतर तरीका के अस्तित्व के लिए पहले की जाँच के अलावा अन्य है /run, और उसके बाद /var/run?

जवाबों:


58

इरादा tmpfsफ़ाइल सिस्टम की संख्या को कम करने का है। 11.04 tmpfsपर /var/lock, /var/runऔर पर अलग फ़ाइल सिस्टम हैं , और /dev/shm। यदि ये निर्देशिकाएं एक ही मूल निर्देशिका के अंतर्गत थीं, तो केवल एक एकल की tmpfsआवश्यकता होगी। यह आगे के रनटाइम स्टेट डेटा के लिए एक स्पष्ट स्थान भी प्रदान करता है जो रिबूट पर जारी नहीं होना चाहिए।

जब तक आपका आवेदन फाइलों के कैनोनिकल रास्तों पर निर्भर करता है, तब तक आपका आवेदन बिना किसी संशोधन के चलना चाहिए क्योंकि पुराने स्थानों को नए लोगों के लिए सीलिंक किया जाएगा। AppArmor नीतियां एक ऐसा मामला है जो वास्तविक पथ नामों पर निर्भर करता है, यही कारण है कि यह विशेष रूप से उल्लेख किया गया था।

निम्नलिखित कड़ियों को औचित्य समझाने में मदद करनी चाहिए:


36
  1. /run क्षणिक राज्य फ़ाइलों के भंडारण के लिए एक नया क्रॉस-डिस्ट्रीब्यूशन tmpfs स्थान है - यानी, रन-टाइम जानकारी वाली फ़ाइलें जो बूट प्रक्रिया में जल्दी लिखी जा सकती हैं या नहीं और जिनके लिए रिबूट को संरक्षित करने की आवश्यकता नहीं होती है।

    बनाना /runनिर्देशिका उपलब्ध हमें एक कदम जहां यह प्रणाली इस तरह के रूप में किसी भी भद्दा समाधान की आवश्यकता के बिना, रूट फाइल सिस्टम केवल पढ़ने के लिए माउंट किया गया साथ सामान्य रूप से उपयोग करना संभव है के करीब लाता है aufs/unionfsओवरले।

    /run फाइलसिस्टम पदानुक्रम मानक में वर्णित कई मौजूदा स्थानों की जगह:

    • /var/run/run
    • /var/lock/run/lock
    • /dev/shm/run/shm[वर्तमान में केवल डेबियन ने ऐसा करने की योजना बनाई है]
    • /tmp/run/tmp[वैकल्पिक; वर्तमान में केवल डेबियन की पेशकश करने की योजना है]
    • /run कुछ अन्य स्थानों को भी बदलता है जिनका उपयोग क्षणिक फ़ाइलों के लिए किया गया है:

    • /lib/init/rw/run

    • /dev/.*/run/*
    • /dev/shm/*/run/*
    • के तहत लिखने योग्य फ़ाइलें /etc/run/*

    (इसलिए आप शायद इनसे उम्मीद कर सकते हैं कि आप भी इससे आगे बढ़ सकते हैं)

    स्रोत: डेबियन रिलीज लक्ष्य

  2. मैं आपके सॉफ़्टवेयर में एक भाग बनाने पर सलाह दूंगा जहाँ आप इन निर्देशिकाओं को चर में सेट करते हैं, इन चर का उपयोग करने के लिए अपना कोड बदलें और फिर उस प्रणाली के आधार पर चर को बदल दें जिसका उपयोग किया जाता है (लेकिन मुझे यकीन है कि आप पहले से ही जानते थे)।


1
क्या आप के तहत लेखन योग्य फ़ाइलें मतलब है /etc। उन सभी को पिछले रिबूट को जारी रखना चाहिए, है ना? यह सिर्फ सामान्य गोपनीय फ़ाइलें है।
इवान कैरोल

6
ओह मैं समझा। तीन फाइलों के तहत /etc, /etc/lvm/cache/ /etc/mtab /etc/network/run/ifstateऔर जल्द ही /etc/adjtime। मुझे लगता है कि उनके /etcलिए शुरुआत के साथ रहना बुरा था ।
इवान कैरोल

5

मैंने जो कुछ भी पढ़ा है, उसमें से मूल विवरण दिया गया था कि क्यों / रन शुरू किया गया था। http://lwn.net/Articles/436012/


8
जब भी यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, तो यहां उत्तर के आवश्यक भागों को शामिल करना बेहतर होगा , और संदर्भ के लिए लिंक प्रदान करना होगा।
Stefano Palazzo

3

नोट: परिचय / चलाने के बाद से, छोटे विन्यासों से परेशानी हो सकती है। मेरा उबंटू सर्वर 256Mo रैम है और / रन डिफ़ॉल्ट रूप से 49Mo पर सेट है।
स्टार्टअप पर, यह फ़ाइल सिस्टम को पूर्णता तक भर देता है।
Fstab में परिवर्तन करने से inscrease tempfs / run आकार का संचालन नहीं होता है। न ही अन्य प्रक्रियाएं जिन्हें मैंने gg पर पाया है।
मुझे इनइट स्क्रिप्ट में जोड़ने का समाधान मिला: स्टार्टअप पर विस्तार करने के /etc/rc.localलिए लाइन mount -t tmpfs tmpfs /run -o remount,size=85M(85M मेरे विश्वास के लिए है।)


2

आपको इन /runरास्तों में से किसी को भी हार्डकोड नहीं करना चाहिए !

  • उपयोग करें /var/run, क्योंकि /runलागू होने पर एक सिम्लिंक जगह में होगा
  • /var/lock ऊपर जैसा ही है
  • /dev/shmकभी हार्डकोड न करें , हमेशा उपयोग करें shm_openआदि (पॉज़िक्स एपीआई)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.