EC2 पर माउंट / tmp / mnt कैसे करें?


10

मैं सोच रहा था कि ईसी 2 उदाहरण पर /tmpएपीमेरल स्टोरेज में एंडपॉइंट को माउंट करने का सबसे अच्छा तरीका क्या है /mntऔर ubuntuउपयोगकर्ता को डिफ़ॉल्ट लिखने की अनुमति दें।

कुछ इस तरह से संपादन /etc/rc.local का सुझाव देते हैं:

mkdir -p /mnt/tmp && mount --bind -o nobootwait /mnt/tmp /tmp

हालाँकि, यह मेरे लिए काम नहीं करता है (फाइल अलग है)।

मैंने डिफ़ॉल्ट fstab प्रविष्टि को संपादित करने की कोशिश की:

/dev/xvdb /mnt auto defaults,nobootwait,comment=cloudconfig 0 2

/ tmp के साथ / mnt को प्रतिस्थापित करना और इसे umask = 0777 देना, हालाँकि यह क्लाउडकॉन्फिग के कारण काम नहीं करता है।

मैं Ubuntu 12.04 का उपयोग कर रहा हूं। धन्यवाद।


मैं यह पता नहीं लगा सकता कि आप मुझसे क्या करने को कह रहे हैं। आप उपयोग कर अपेक्षित आउटपुट का एक उदाहरण प्रदान कर सकते हैं touchऔर ls -l?
जेफ फेरलैंड

उदाहरण के लिए: फाइलों को सूचीबद्ध करने के /mnt/tmpलिए उन्हीं फाइलों को वापस करना चाहिए /tmp, जिन्हें जोड़कर उपयोगकर्ता द्वारा touch /tmp/testfileजारी किया गया ubuntuउपयोग किए बिना काम करना चाहिए sudo
क्लाउडियो पोली

जवाबों:


13

आपके द्वारा सुझाए गए प्रारंभिक सुझाव के साथ कुछ समस्याएं हैं, हालांकि ऐसा लगता है कि यह एक अच्छी दिशा में आगे बढ़ रहा है:

  1. सुरक्षा उद्देश्यों के लिए, mkdirकमांड को मोड में चिपचिपे बिट सेट के साथ डायरेक्टरी बनाना चाहिए:

    mkdir -m 1777 /mnt/tmp
    
  2. यह -o nobootwaitआवश्यक नहीं है क्योंकि इसमें बचत नहीं की जा रही है /mnt/fstab

तो, मैं इसमें कोशिश करने की सलाह दूंगा /etc/rc.local:

test -d /mnt/tmp || mkdir -m 1777 /mnt/tmp
mount --bind /mnt/tmp /tmp

बाँध माउंट को लगाने का कोई भी प्रयास उस /etc/fstabसमस्या में भाग लेने जा रहा है जब आप उदाहरण को रोकते / शुरू करते हैं या जब आप एएमआई बनाते हैं और एक नया उदाहरण चलाते हैं / mnt अल्पकालिक भंडारण है और सभी सामग्री ( /mnt/tmpनिर्देशिका सहित ) गायब होने जा रही है ।


क्या आप इसे उपयोगकर्ता-डेटा स्क्रिप्ट में डालने की अनुशंसा कर सकते हैं?
क्लाउडियो पोली

1
मैं पहले एपिसोड डिवाइस के माउंट का प्रयास करने के लिए rc.local कोडिंग का तरीका अपनाऊंगा (क्या उसने पहले से ही इसे / mnt? पर माउंट किया है?) और यदि वह विफल रहता है, तो उसे प्रारूपित करें और फिर से माउंट करने का प्रयास करें। इस तरह से एक स्टॉप और रिस्टार्ट इसे संरक्षित करना चाहिए (समाप्त करना हमेशा की तरह नए सिरे से शुरू करने का तरीका होगा)। मुझे यह देखने की कोई निश्चित आवश्यकता नहीं है कि इसे / etc / fstab में rc.local माउंट के बाद से रखा गया है, लेकिन rc.local append होने से शायद यह चोट नहीं पहुंचेगी।
स्कैपरन

1
@ClaudioPoli: इसे उपयोगकर्ता-डेटा में डालने के साथ समस्या यह है कि उपयोगकर्ता-डेटा स्क्रिप्ट केवल पहले बूट पर ही चलती है । आप चाहते हैं कि यह हर बूट पर चले । आप उपयोगकर्ता-डेटा को /etc/rc.local में जोड़ सकते हैं, लेकिन सुनिश्चित करें कि यह उस फ़ाइल में किसी भी "निकास" कथन से पहले डाला गया है।
एरिक हैमंड

1
@ शकरपेन: / एमटीटी को आम तौर पर साफ-सुथरा स्वरूपित किया जाता है और हर रन पर लगाया जाता है या एक उदाहरण की शुरुआत होती है। एक स्टॉप / स्टार्ट आपको पिछले रनिंग से बचे हुए डेटा के साथ एक साफ, ताजा / mnt देता है। कोई भी संशोधन जिसे आप बनाना चाहते थे / etc / fstab को स्टॉप / स्टार्ट के माध्यम से संरक्षित किया जाएगा, इसलिए यह महत्वपूर्ण नहीं होगा कि हर बूट पर r rllocal इसे संशोधित करे।
एरिक हैमंड

13

उबंटू चलाने के बाद से एक अधिक मजबूत दृष्टिकोण, एरिक हैमंड के सुझाव को एक अपस्टार्ट स्क्रिप्ट के अंदर रखना होगा , और बढ़ते के तुरंत बाद बाँध दिया जाएगा /mnt:

# File /etc/init/mounted-mnt.conf

# mounted-mnt - Binds /tmp to /mnt/tmp

description     "Binds /tmp to /mnt/tmp"

start on mounted MOUNTPOINT=/mnt

task

script
    test -d /mnt/tmp || mkdir -m 1777 /mnt/tmp
    mount --bind /mnt/tmp /tmp
end script

कुछ सर्वर, जैसे अपाचे / पैसेंजर, महत्वपूर्ण अस्थायी फ़ाइलें बना सकते हैं /tmp। एक बार rc.local- बूट अनुक्रम में अंतिम - भाग गया और वे सर्वर को छिपाएंगे और भ्रमित करेंगे।


गूढ़ विचार ..
टॉम ओ'कॉनर

1

रोमुलो सेकोन द्वारा सुझाए गए अपस्टार्ट स्क्रिप्ट का उपयोग करने का विचार बहुत अच्छा है। हालांकि, आप एक अस्पष्ट स्क्रिप्ट के अंदर जादू को छिपाना नहीं चाह सकते हैं। Fstab के अंदर माउंट जोड़ना पूरी तरह से ठीक है, जैसे

LABEL=cloudimg-rootfs   /    ext4   defaults    0 0

# auto mount ephemeral storage (if any)
# init contents in /etc/init/mounted-local*.conf
/dev/xvdb  /mnt/local1  auto  defaults,nofail,nobootwait,comment=cloudconfig  0 2
/dev/xvdc  /mnt/local2  auto  defaults,nofail,nobootwait,comment=cloudconfig  0 2
/dev/xvdd  /mnt/local3  auto  defaults,nofail,nobootwait,comment=cloudconfig  0 2
/dev/xvde  /mnt/local4  auto  defaults,nofail,nobootwait,comment=cloudconfig  0 2

# bind /tmp to /mnt/local1, might still be on / if no ephemeral storage
/mnt/local1  /tmp  none  bind

और यह अपस्टार्ट स्क्रिप्ट है:

# File /etc/init/mounted-local1.conf

# mounted-local1 - init ephemeral storage in /mnt/local1

description     "Initializes ephemeral storage in /mnt/local1"

start on mounted MOUNTPOINT=/mnt/local1

# provide defult, see /etc/init/mounted-tmp.conf for details
env MOUNTPOINT=/mnt/local1

task

script
    # fix permissions if needed
    test -d $MOUNTPOINT && chmod 1777 $MOUNTPOINT

    # log to /var/log/upstart/mounted-local1.log
    #echo "initialized $MOUNTPOINT"

end script

इस तरह, आप किसी भी निर्देशिका संरचना का निर्माण कर सकते हैं और जो अल्पकालिक भंडारण पर नहीं है।

वह सब छोड़ दिया है mkdir -p /mnt/local{1..4}और फिर से शुरू (मैं बिना माउंट / tmp नहीं होगा जैसा कि आप वहां वर्तमान फ़ाइलों को छिपाएंगे)।


अगर कोई नहीं है तो क्या fstab के माध्यम से माउंट सफल होगा /mnt/local1? शायद बढ़ते हुए घटना सुरक्षित है।
रौमूल सेकोन

हां, मैंने मान लिया था कि / mnt / local1 उपलब्ध है। मुझे समझाया जाना चाहिए, कि कुछ भी / mnt पर मुहिम शुरू नहीं की गई है, जो आमतौर पर मामला है। इसलिए इस निर्देशिका को बनाना सेटअप का हिस्सा है। मैंने बढ़ते आयोजन का उपयोग करने की कोशिश नहीं की है, लेकिन शायद आप सही हैं। मेरे उत्तर का मुख्य बिंदु यह है कि mst को fstab फ़ाइल में रखना बेहतर हो सकता है और ऊपर chmod 1777या नीचे mkir -p स्क्रिप्ट की तरह सामान करना ।
sfussenegger
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.