मैं / tmp निर्देशिका के लिए RAM संग्रहण का उपयोग कैसे कर सकता हूं और इसके लिए अधिकतम RAM उपयोग कैसे सेट कर सकता हूं?


92

सवाल पर बेनामी द्वारा टिप्पणी देखने के बाद / tmp निर्देशिका को कैसे साफ किया जाता है? , मैंने पाया कि यह मेरे सिस्टम पर लागू करने के लिए एक महान विचार होगा, क्योंकि मेरे पास 16 जीबी रैम है और मैंने कभी भी इसका उपयोग नहीं किया।

मेरी अस्थायी फ़ाइलों को डिस्क पर कभी नहीं लिखा जाता है। वे एक रैम डिस्क पर लिखे जाते हैं। मैंने tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0/ etc / fstab में डाला ।

मेरा सवाल यह है कि:

क्या मैं RAM उपयोग के लिए अधिकतम मूल्य निर्धारित कर सकता हूं /tmp? और उस स्थिति में, अधिकतम राशि के पार हो जाने पर क्या होगा, क्या यह हार्ड-डिस्क ड्राइव में लिखेगा?

मैंने एक समाधान पढ़ा है जिसमें कहा गया है:

mkdir -p /tmp/ram
sudo mount -t tmpfs -o size=512M tmpfs /tmp/ram/

लेकिन मेरी समझ में, यह एक स्थायी समाधान नहीं होगा। यदि मुझे इसे स्थायी करने की आवश्यकता है, तो इसे /etc/fstabकॉन्फ़िगरेशन फ़ाइल में जोड़ना होगा ।

यदि यह सही समाधान है, तो मैं उस माउंट कमांड को एक पंक्ति में कैसे बदल सकता हूं /etc/fstab?


यह भी एक अच्छा विचार है अगर आपके पास और SSD है क्योंकि आप उपयोगी लेखन के साथ इसका 'उपभोग' नहीं करेंगे ...
Postadelmaga

हा हा बिल्कुल यही सवाल मुझे यहां लाया गया: डी
टेडी मार्कोव

जवाबों:


80

तुम पूरी तरह ठीक हो। अनुसार fstab प्रविष्टि इस तरह दिखाई देगी:

tmpfs /tmp tmpfs defaults,noatime,nosuid,nodev,noexec,mode=1777,size=512M 0 0

कृपया ध्यान दें:

जैसा कि tmpfsभरा हुआ है, यह "पर्याप्त स्थान नहीं" त्रुटि देकर किसी भी भौतिक हार्ड ड्राइव के रूप में व्यवहार करेगा। रिबूट करते समय (और इस प्रकार कैश को खाली करना) इसे ठीक कर देगा, आप तब मुसीबत में पड़ सकते हैं जब एक सिंगल ऑपरेशन शुरू करने के लिए अंतरिक्ष की तुलना में अधिक जगह लेता है tmpfs। इस स्थिति में आपका कंप्यूटर राम से डिस्क पर स्वैप करना शुरू कर देगा, जो आपके सिस्टम को एक पड़ाव तक क्रॉल कर देगा, बशर्ते आपको शुरू करने के लिए एक स्वैप विभाजन मिला हो, बेशक।

इसे देखते हुए, 512MB का आकार आजकल बहुत कम हो सकता है, क्योंकि आधुनिक मशीनों में बहुत अधिक राम अस्तित्व में है और यह बहुत सस्ता हो गया है। चूंकि आपको पहले ही 16GB RAM मिल चुका है, इसलिए tmpfsलगभग सभी परिदृश्यों के लिए आपके RAM के डिफ़ॉल्ट मान का उपयोग पर्याप्त से अधिक होना चाहिए। डिफ़ॉल्ट मान का उपयोग करने के लिए, बस size=512Mअपनी /etc/fstabफ़ाइल में प्रविष्टि छोड़ दें ।

एक और नोट:

आप बहुत आसानी से रैमडिस्क में अन्य सिस्टम फ़ोल्डर्स जैसे कि आसानी से माउंट कर सकते हैं

/var/cache

/var/games

/var/log/apt( defaults,noatimeबिना उपयोग mode=या केवल nosuid)

लेकिन सावधान: ऊपर बताए अनुसार वही नियम लागू होते हैं, जो अंतरिक्ष से बाहर निकलकर बड़ी परेशानी का कारण बन सकते हैं। उदाहरण के लिए / var / log / apt के लिए अंतरिक्ष से बाहर चलने की कल्पना आपको किसी भी प्रोग्राम को स्थापित करने में असमर्थ कर देगी! इसके अलावा, /var/logरैमडिस्क में फोल्डर लोड करने से रिबूट पर आपकी सभी लॉग फाइल डिलीट हो जाएगी, इसलिए यदि कुछ भी अनपेक्षित होता है तो आप अपने सिस्टम को डिबग नहीं कर पाएंगे। तो अपने जोखिम पर इन सेटिंग्स का उपयोग करें!

संपादकीय टिप्पणी: मैं हटाया /runमें tmpfsइस फ़ोल्डर के बाद से माउंट विकल्प और इसके उप-पहले से ही में रखा जाता है tmpfsडिफ़ॉल्ट रूप से।


11
अगर मैं गलत नहीं हूँ, / var / tmp / रिबूट के बाद फाइल रखने के लिए है। इस और / tmp / के बीच मुख्य अंतर है, इसलिए आपको राम की ओर / var / tmp नहीं जाना चाहिए।

3
अगर Ubuntu 4GB tmpfs से बाहर निकलता है, तो क्या यह मेरे 20GB SWAP विभाजन का उपयोग करेगा?
16

3
हां, मुझे इसे जोड़ना होगा। जैसे ही tmpfs अपनी सीमाएँ छोड़ता है, यह विभाजन को स्वैप कर देगा (वहाँ एक है)।
फज़्ज़िक

5
क्या आपकी आधी रैम को आवंटित करने का मतलब यह है कि आपका आधा RAM RAMDISK के लिए आरक्षित है, या क्या यह केवल एक RAM है जो RAMDISK का उपभोग कर सकता है, और जो कुछ भी उपयोग में नहीं है वह है नि: शुल्क RAM जो कि प्रोग्राम को RAM के लिए नियत हो जाता है ??
मैट

6
@ मट्ट यह केवल एक टोपी है।
फजीक्यू

35

उपयोग करने वाले सिस्टम पर systemd, आपके पास tmpfsमाउंट करने के लक्ष्य को पूरा करने के लिए fstab के बजाय सिस्टमड यूनिट फ़ाइल का उपयोग करने का विकल्प है tmp। मेरे Ubuntu 16.04 सिस्टम पर, मैं भागा:

sudo cp /usr/share/systemd/tmp.mount /etc/systemd/system/tmp.mount
sudo systemctl enable tmp.mount
sudo systemctl start tmp.mount

फ़ाइल इस /usr/share/systemd/tmp.mountतरह दिखती है:

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
[Unit]
Description=Temporary Directory
Documentation=man:hier(7)
Documentation=http://www.freedesktop.org/wiki/Software/systemd/APIFileSystems
ConditionPathIsSymbolicLink=!/tmp
DefaultDependencies=no
Conflicts=umount.target
Before=local-fs.target umount.target
After=swap.target

[Mount]
What=tmpfs
Where=/tmp
Type=tmpfs
Options=mode=1777,strictatime

[Install]
WantedBy=local-fs.target

FuzzyQ के fstab दृष्टिकोण का उपयोग करते हुए, systemd आपके fstab प्रविष्टियों को गतिशील रूप से माउंट इकाइयों में अनुवाद करता है। मुझे नहीं लगता कि या तो दृष्टिकोण बेहतर है।

के रूप में पूछा रैम के लिए अधिकतम सीमा निर्धारित करने के लिए, एक जोड़ने के लिए की आवश्यकता होगी size=512Mकरने के लिए Optionsलाइन, एक अल्पविराम से अलग कर दिया।


2
systemctl enable tmp.mountFailed to start tmp.mount: Unit tmp.mount not found.
Cp के

4
@ क्लिक करें, यह उपयोग करने के लिए और भी बेहतर है systemctl edit tmp.mountजो डिस्ट्रो-न्यूट्रल होगा। यह आपके परिवर्तनों को ओवरराइड.कॉन्फ़ में डालता है ताकि आप डिफ़ॉल्ट tmp.mount में परिवर्तन न करें और आप डिफ़ॉल्ट कॉन्फ़िगरेशन पर वापस जाने के लिए ओवरराइड.कॉन्फ़ को आसानी से हटा सकें।
बुलट एम।

सिस्टमो एडिट का उपयोग करने के बारे में बुलत ने जो कहा था, डिट्टो और पहले चरण के ln -sबजाय cpउसका उपयोग भी करते हैं ।
माइकल ग्राटन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.