शारीरिक मेमोरी से अधिक tmpfs को बढ़ाना कितना सुरक्षित है?


11

मेरे सर्वर में 2GB रैम और 120GB SSD है, साथ ही स्टोरेज के लिए कुछ RAID सरणियाँ हैं। ओएस डेबियन 8 (लिनक्स 3.16) है।

मेरे पास एक MySQL गहन अनुप्रयोग है जिसमें tmpdir= /run/mysqld, जो tmpfsडेबियन द्वारा कॉन्फ़िगर किया गया है /etc/default/tmpfs:

# Size limits.  Please see tmpfs(5) for details on how to configure
# tmpfs size limits.
TMPFS_SIZE=40%VM

यह हुआ करता था 20%VM, जो लगभग 384M है। मैं कई लोगों के खिलाफ भागा no space left on device, इसलिए मैंने इसे बढ़ा दिया है 40%VM, लेकिन 763M के साथ यह अभी भी बहुत छोटा है।

अब मुझे अब अधिक रैम जोड़ना चाहिए, लेकिन जिज्ञासा से बाहर, मैं यहां की सीमाओं को जानना चाहता हूं।

  • /dev/sdd1पर /लगभग 50GB मुफ्त मुहिम शुरू की गई है, और यह काफी तेज़ है (Samsung 850 EVO SSD)
  • /dev/sdd5 मेरा स्वैप विभाजन है, यह 3.7G है (fdisk प्रकार आईडी 82 है)
  • TMPFS_SIZEको सेट किया जाता है 40%VM, जिसका अर्थ /run763M है

अब मुझे पता है कि tmpfs स्वैप कर सकते हैं, जो मेरे साथ ठीक है। मैं चाहता हूं कि जब भी संभव हो MySQL रैम को लिखें, लेकिन अगर इसे अधिक मेमोरी की आवश्यकता है, तो मैं सिस्टम को एसएसडी पर स्वैप करने की अनुमति दे सकता हूं।

तो मेरे सेटअप के साथ, क्या मैं धक्का /runदे सकता हूं :

  • 300 मीटर बड़ा? हाँ। वह डिफ़ॉल्ट था।
  • 1.5GB बड़ा? हां, कोशिश की गई, MySQL ने इस पर 1.3GB तक का उपयोग किया और सिस्टम ने एक आकर्षण की तरह काम किया। लेकिन यह अभी भी आधे से कम भौतिक स्मृति + स्वैप विभाजन है।
  • 2.5GB बड़ा? यह भौतिक मेमोरी से अधिक है, लेकिन आधे से कम भौतिक मेमोरी + मेरे स्वैप विभाजन से कम है।
  • 4GB बड़ा? यह कसकर आधा शारीरिक + स्वैप में फिट होगा
  • अधिक? 10GB की तरह? क्या यह /अधिक स्वैप करने के लिए मुक्त स्थान का उपयोग कर सकता है ?

मैं अनुमान लगा रहा हूं कि सुरक्षा के लिए अंगूठे का नियम TMPFS_SIZEस्वैप + आधा भौतिक स्मृति से बड़ा नहीं है। क्या मैं स्वैप विभाजन को बढ़ाए बिना इससे आगे जा सकता हूं?

इसके अलावा, यह डाल करने के लिए संभव है 200%VMमें /etc/default/tmpfs? मैंने यह tmpfs(5)जानने के बिना पढ़ा है कि क्या मैं इस पर 100% लगा सकता हूं।

अंतिम, क्या मुझे /etc/fstabइसके बजाय करना चाहिए और स्पर्श नहीं करना चाहिए /etc/default/tmpfs?

(यह जानने के लिए कि मैंने केवल इसके साथ किया है mount -o remount, मैंने अभी तक सर्वर को रिबूट नहीं किया है)

संपादित करें: अंतिम प्रश्न के लिए, मुझे पता है कि इसे /etc/fstab(मैन पेज से नीचे का उद्धरण देखें) संशोधित किया जा सकता है , हालांकि मैं सबसे अच्छा अभ्यास जानना चाहता था, क्योंकि मैंने /etc/defaultअब तक किसी भी चीज को नहीं छुआ है ।

अधिक जटिल माउंट विकल्पों का उपयोग / etc / fstab में एक उपयुक्त प्रविष्टि के निर्माण के द्वारा किया जा सकता है।


दिलचस्प सवाल। मुझे लगता है कि यह बहुत अधिक मेमोरी ओवरकॉमिट सेटिंग से संबंधित हो सकता है।
phk

ऐसा लगता है कि अधिकतम tmpfs का आकार भौतिक + स्वैप होगा। मैंने इसे कर्नेल डॉक्स में देखा है ।
बेनोइट डफेज़

जवाबों:


8

मुझे लगा कि मैं इसका परीक्षण कर सकता हूं, इसलिए मैं भाग गया:

sudo mount -o remount,size=2800M /run

एक जादू की तरह काम किया:

Filesystem      Size  Used Avail Use% Mounted on
tmpfs           2.8G   45M  2.7G   2% /run

इसलिए मैंने इसे थोड़ा भर दिया:

fallocate -l 1G /run/test.img
fallocate -l 1G /run/test2.img
fallocate -l 500M /run/test3.img

परिणाम:

Filesystem      Size  Used Avail Use% Mounted on
tmpfs           2.8G  2.6G  208M  93% /run

सिस्टम अभी भी चल रहा है। स्वैप उपलब्धता कम हो गई, जो यह साबित करता है कि इसका उपयोग किया गया था:

स्वैप उपलब्धता ड्रॉप

  • 17:10: 2.5 GB फाइल बनाएँ /run
  • 17:20: 500M फाइल निकालें

कुल स्वैप द्वारा ली गई राशि से कम हो गया है /run

मैं एक VM पर 10GB का परीक्षण करूंगा, क्योंकि मुझे नहीं पता कि कर्नेल रिमाउंट को मना करेगा या सिर्फ एक अप्रत्याशित व्यवहार होगा।

मैं अभी भी एक वास्तविक उत्तर की तलाश में हूं, लेकिन व्यावहारिक तरीके से यह पता चला है कि यह काम करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.