fallocate विफल: ऑपरेशन समर्थित नहीं है


10

जब चल रहा है,

fallocate -l 10G /path/to/file

मैं निम्नलिखित त्रुटि लौटा रहा हूं:

fallocate: file: fallocate failed: Operation not supported

Dd (if = / dev / zero या if / / dev / urandom) का उपयोग करके फ़ाइल बनाना, लेकिन अगर मैं बड़ी फ़ाइलों, दसियों GB आकार में बनाने की कोशिश कर रहा हूँ, तो इसे पूरा करने में कई घंटे लगते हैं।

चल रहा है उबंटू 14.04। एक ext4 विभाजन का उपयोग करना, एक फ़ाइल-प्रकार निर्दिष्ट करना परिणाम को बदलने के लिए प्रकट नहीं होता है।

मेरे CentOS6 मशीनों पर काम करना ठीक है, बस Ubuntu नहीं।


आप किस फ़ाइल सिस्टम का उपयोग कर रहे हैं?
g_p

हमें आपके द्वारा बनाई जा रही फ़ाइल का प्रकार भी अपडेट करें।
vembutech

Ext4 का उपयोग करते हुए, फ़ाइल प्रकार पदार्थ के लिए प्रकट नहीं होता है। चाहे मैं एक रिक्त फ़ाइल बना रहा हूँ, एक .txt, एक .img, मुझे वही त्रुटि मिलती है।
जॉन जे जॉनसन

जवाबों:


11

यदि विरल फाइलें आपके लिए ठीक हैं (जैसे कि आप किसी फ़ाइल सिस्टम के साथ इसे पॉप्युलेट करने के लिए एक छवि बनाना चाहते हैं), तो वे कुछ ही समय में बनाई जाती हैं।

100GB ले 3 मिलीसेकंड:

# time dd if=/dev/zero of=tmptst.dat bs=1G seek=100 count=0
0+0 records in
0+0 records out
0 bytes (0 B) copied, 0,00037726 s, 0,0 kB/s

real    0m0.003s
user    0m0.000s
sys 0m0.002s

परिणामी फ़ाइल:

# ls -lh tmptst.dat
-rw-r--r-- 1 root root 100G 2015-01-22 16:39 tmptst.dat

इस समय इसका वास्तविक आकार: 0 बाइट्स

# ls -lsh tmptst.dat
0 -rw-r--r-- 1 root root 100G 2015-01-22 16:39 tmptst.dat

यह एक डीएम-क्रिप्ट / एलयूकेएस कंटेनर बनाने के संबंध में था, इस धारणा के तहत काम कर रहा था कि / डेव / यूरीगैंडम का उपयोग करके एक कंटेनर बनाना / देव / शून्य के साथ बनाने और धीरे-धीरे डेटा के साथ भरने से अधिक सुरक्षित होगा। जब से मुझे पता चला है कि फैलोकेट का उपयोग करने से मेरी समस्या हल नहीं होती है, क्योंकि धीमी गति केवल इस बात की सीमा थी कि pRNG / dev / urandom कार्य कितनी तेजी से होता है, लेकिन मुझे अभी तक इस बात का कोई पता नहीं है कि फैलोकैट स्वयं काम करने से मना क्यों करता है। प्रतिक्रिया के लिए चीयर्स, हालांकि, जैसा कि मैंने कल्पना की है कि इस समय के बाद यह सबसे अच्छी प्रतिक्रिया है जो मुझे मिल जाएगी।
जॉन जे जॉनसन

मुझे आश्चर्य है कि अगर एक ही thning करने के लिए fallocate नहीं कर सकती है? यह मेरे लिए समझ में आता है।
unfa

3

अगर आपको सामग्री की परवाह नहीं है, लेकिन आपको कुछ डेटा की आवश्यकता है,

पहले करो,

dd if=/dev/urandom of=tmp.txt bs=1M count=1

यह पैदा करेगा,

-rw-r--r-- 1 root root 1.0M Oct 17 00:30 tmp1.txt.

फिर, यदि आप 10M फ़ाइल बनाना चाहते हैं, तो बार-बार परिशिष्ट के लिए ऊपर दी गई फ़ाइल का उपयोग करें,

for i in {1..10}; do dd if=tmp.txt of=tmp1.txt bs=1M oflag=append conv=notrunc; done;

2

मैं भी इस समस्या में भाग गया।

निर्देशिका पथ में एक प्रतीकात्मक लिंक समस्या प्रतीत होती है। / tmp पर समान कमांड का प्रयास करें और इसे काम करना चाहिए।

मैं फालोकेट कमांड में '-x' जोड़कर समस्या को हल करने में सक्षम था। यह 'पॉज़िक्स मोड' को मजबूर करता है, और इसे अधिक समय लगना चाहिए।

भले ही फ़ाइल सिस्टम ext4 था, प्रतीकात्मक लिंक 'इस फाइल सिस्टम पर समर्थित नहीं' त्रुटि का कारण था। वास्तव में अगर मैं सीधे निर्देशिका के नाम (बिना किसी प्रतीकात्मक लिंक के) के लिए गया, तो कॉलोकेट () कॉल ने काम किया।

A1: आपके द्वारा बनाई जा रही फ़ाइल के पूर्ण पथ नाम में कहीं भी प्रतीकात्मक लिंक नहीं हैं।

A2: '-x' का उपयोग करें, भले ही इसमें अधिक समय लगे।

ख \ 375

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