डिस्क स्थान को तुरंत भरने / उपयोग करने का तरीका?


45

Linux VM पर मैं NAGIOS को अधिक गहराई से मॉनिटर करना चाहूंगा, केवल VM को बंद करने या वर्चुअलIC को डिस्कनेक्ट करने से; मैं कम समय के लिए कई% खाली जगह पर कब्जे के माध्यम से "डिस्क स्पेस अलार्म को लागू या परीक्षण" करना चाहूंगा।

मुझे पता है कि मैं सिर्फ एक का उपयोग कर सकता है

dd if=/dev/zero of=/tmp/hd-fillup.zeros bs=1G count=50

या ऐसा कुछ ... लेकिन यह समय लेता है और सिस्टम को लोड करता है और rm के साथ परीक्षण फ़ाइलों को हटाते समय फिर से समय की आवश्यकता होती है।

क्या विभाजन को भरने का एक त्वरित (लगभग तत्काल) तरीका है जो सिस्टम को लोड नहीं करता है और बहुत समय लगता है? im ऐसी किसी चीज़ के बारे में सोच रहा है जो अंतरिक्ष आवंटित करती है, लेकिन उसे "भर" नहीं देती है।


क्षमा करें, यह उल्लेख करना भूल गया कि इसकी >> ext3 फाइलसिस्टम।
एक्सल वर्नर

आपको फैलोकैट का समर्थन करने के लिए इसे ext4 में अपग्रेड करने की आवश्यकता है।
रुई एफ रिबेरो

1
जिप बम हमेशा काम करता है
गैलोज़

1
@ जस्का इसे जवाब दो। शीर्षक पढ़ते ही मुझे यह पहला विचार आया ...
क्रॉले

आप उपयोग क्यों नहीं करते /dev/full? (यह मानते हुए कि यह मौजूद है)। echo 'test' > /dev/fullडेबियन पर प्रयास करें ।
इस्माइल मिगुएल

जवाबों:


63

लिनक्स सिस्टम में फ़ाइल बनाने का सबसे तेज़ तरीका है fallocate:

fallocate -l 50G file 

आदमी से:

किसी फाइल के लिए आवंटित डिस्क स्थान में हेरफेर करने के लिए, या तो उसे हटाने या प्रचार करने के लिए एरोकेट का उपयोग किया जाता है।
फाइलसिस्टम के लिए जो फालोकेट सिस्टम कॉल का समर्थन करते हैं, प्रीकोलोकेशन को ब्लॉक को आवंटित करके और उन्हें एकरहित के रूप में चिह्नित किया जाता है, जिसके लिए डेटा ब्लॉक में कोई IO की आवश्यकता नहीं होती है। यह एक फ़ाइल को शून्य से भरकर बनाने की तुलना में बहुत तेज़ है।
XFS (लिनक्स 2.6.38 से) के लिए समर्थित, ext4 (लिनक्स 3.0 के बाद से), Btrfs (लिनक्स 3.7 के बाद से) और tmpfs (लिनक्स 3.5 के बाद से)।


1
आप इसे क्यों चला रहे हैं sudo?
गेरिट

1
@gerrit ने उस बिंदु को उत्तर में जोड़ा।
रुई एफ रिबेरो

3
" fallocateरूट विशेषाधिकारों की जरूरत है" मेरे सिस्टम पर नहीं (लिनक्स मिंट 17.3, उबंटू के डाउनस्ट्रीम, इस प्रकार डेबियन)। (ext4 फाइल सिस्टम)
TJ Crowder

1
+1 हालांकि ओपी ने स्पष्ट रूप से उल्लेख किया है कि उसकी फाइलसिस्टम एक्स 3 है।
सिनिटिकॉन-डीजे

1
@ रुईएफबीबिरो, धन्यवाद! Sles11sp4 के लिए ive एक फाइल बनाने में सक्षम है, इसे ext4 के साथ प्रारूपित करें, लेकिन जहां इसे आरडब्ल्यू मोड में माउंट करने में असमर्थ है। बाद में मुझे / var / log / संदेशों में एक कर्नेल संदेश मिला, जिसने कहा कि ext4 केवल पढ़ने के लिए ही समर्थित है। : /
एक्सल वर्नर

13

अन्य विकल्पों में शामिल हैं:

  1. अलार्म थ्रेसहोल्ड को वर्तमान उपयोग के पास या नीचे किसी चीज़ में बदलने के लिए, या
  2. सीमित इनकोड, आकार, या अन्य विशेषताओं के साथ एक बहुत छोटा परीक्षण विभाजन बनाने के लिए।

चीजों को परखने में सक्षम होने के नाते जैसे कि रूट आरक्षित प्रतिशत में भाग लेना, यदि कोई हो, तो भी उपयोगी हो सकता है।


रूट आरक्षित प्रतिशत सामान्य रूप से 10% है जब तक आप इसे ट्वीक नहीं करते हैं - यह बड़े विभाजन / आधुनिक डिस्क में सिस्टम की बहुत बड़ी बर्बादी को समाप्त करता है। अलार्म को परिभाषित करते समय, आप पहले से ही इसे बेहतर तरीके से खाते हैं।
रुई एफ रिबेरो

पहली बात के लिए +1। सौ बार सच। क्यों मैं वास्तव में एक मशीन डिस्क पर कुछ बनाना चाहिए? क्या होगा अगर कुछ (जैसे coredump, बैच जॉब बड़ी अस्थायी फ़ाइलें पैदा कर रहा है, ...) मेरे परीक्षण के समय होता है और पूरी डिस्क गलती से खा जाती है?
१ .:

2
@ फ़िश - क्यों? यह सुनिश्चित करने के लिए कि आपका अलर्टिंग थ्रेशोल्ड सही है और आप डिस्क स्पेस फ्री प्रतिशत (जो मैंने पहले देखा है) के बजाय गलती से इनोड फ्री प्रतिशत सेट कर रहे हैं। यदि कुछ विफल हो जाता है क्योंकि आपने अलर्ट को थ्रेशोल्ड में डिस्क भर दिया है, तो आपका अलर्टिंग थ्रेशोल्ड बहुत कम है - अलर्ट करने की पूरी बात यह है कि चीजों को तोड़ने से पहले यह आपको सचेत करने वाला है ।
जॉनी

बिल्ली, अच्छी बात है। लेकिन मेरे लिए कोई समाधान नहीं। मेरे पास वीएम कॉन्फ़िगरेशन पर नियंत्रण नहीं है (न ही विभाजन या वर्चुअल डिस्क को बदल सकते हैं) और न ही एनएजीआईओएस सर्वर पर नियंत्रक हैं।
एक्सल वर्नर

2
@AxelWerner क्या आप किसी फ़ाइल को "नकली" अंश के रूप में लूपबैक-माउंट कर सकते हैं? फिर भी आपको किसी चीज को गंभीरता से प्रभावित किए बिना परीक्षण करने की अनुमति देगा। एक समर्थित फाइलसिस्टम में से किसी एक के साथ इसे फॉर्मेट करें और आप फालोकेट के साथ भी खेल सकते हैं।
टन

9
  1. fallocate -l 50G big_file

  2. truncate -s 50G big_file

  3. dd of=bigfile bs=1 seek=50G count=0

उन तीन तरीकों के रूप में सभी जल्दी से एक विभाजन को भर सकते हैं।

यदि आप dd का उपयोग करना पसंद करते हैं , तो आमतौर पर आप इसे तलाश कर सकते हैं । बस सेट seek=file_size_what_you_needऔर सेट count=0। यह बताएगा कि सिस्टम एक फाइल है , और इसका आकार वह है जो आपने सेट किया है, लेकिन सिस्टम वास्तव में इसे नहीं बनाएगा। और इस तरह से, आप एक फ़ाइल बना सकते हैं जो विभाजन के आकार से बड़ी है।


उदाहरण, 3 जी से कम के साथ एक ext4 विभाजन पर उपलब्ध है। एक 5T फ़ाइल बनाने के लिए dd का उपयोग करें जो मेटाडेटा के रूप में मौजूद है - वस्तुतः कोई ब्लॉक स्थान की आवश्यकता नहीं है।

df -h . ; dd of=biggerfile bs=1 seek=5000G count=0 ; ls -log biggerfile ; df -h .

आउटपुट:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda9        42G   37G  2.8G  94% /home
0+0 records in
0+0 records out
0 bytes copied, 4.9296e-05 s, 0.0 kB/s
-rw-rw-r-- 1 5368709120000 Jun 29 13:13 biggerfile
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda9        42G   37G  2.8G  94% /home

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

मैं सिर्फ उन लोगों के लिए एक समाप्त प्रश्न में अधिक सोच जोड़ता हूं जो उसी प्रश्न को दूसरे तरीके से खोजते हैं। अगर आप नहीं हैं तो इसे अनदेखा करें।
Se ven

यह count=0विधि काफी दिलचस्प है, मैंने एक उदाहरण जोड़ा है।
अगस्त

7
ध्यान दें कि ddऊपर दिया गया उदाहरण अच्छी तरह से एक विरल फ़ाइल आवंटित कर सकता है। उस स्थिति में फ़ाइल का आकार 50G है, यह वास्तव में केवल एक ब्लॉक (या नहीं भी) का उपयोग कर रहा है और इसलिए डिस्क पूर्ण नहीं हो रही है। YMMV।
एमएपी

2
मैंने अपने ext3 फाइल सिस्टम पर आपके सुझाव का परीक्षण किया। यह उम्मीद के मुताबिक काम नहीं किया। truncate और dd ने बड़े फ़ाइल आकार के साथ एक फ़ाइल बनाई, लेकिन "df -h" ने इसे नहीं पहचाना। अभी भी वही मुक्त HD स्थान दिखाता है।
एक्सल वर्नर

0

आप तनाव-एनजी उपकरण का लाभ भी ले सकते हैं जो लिनक्स आधारित प्रणालियों की एक विस्तृत संख्या पर समर्थित है:

stress-ng --fallocate 4 --fallocate-bytes 70% --timeout 1m --metrics --verify --times
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.