एक्सट्रीम फाइलसिस्टम पूरे डिवाइस को क्यों नहीं भरते हैं?


8

मैंने अभी तक किसी भी ext {2,3,4} के किसी भी फाइल सिस्टम को देखा है जो मैं 500G HDD पर बनाने की कोशिश कर रहा हूँ, सभी उपलब्ध स्थान (466G) का उपयोग नहीं करता। मैंने reiser3, xfs, jfs, btrfs और यहां तक ​​कि vfat की भी कोशिश की है। ये सभी 466G आकार के fs बनाते हैं (जैसा कि df -h द्वारा दिखाया गया है )। हालाँकि, ext * 459G की fs बनाता है। आरक्षित ब्लॉकों को अक्षम करने से उपयोगकर्ता के लिए स्थान उपलब्ध हो जाता है, लेकिन fs का आकार अभी भी 459G है।

वही 1Tb HDD: 932G reiserfs, 917G ext4 के लिए है।

तो, यह 1.5% अंतर क्या है? ऐसा क्यों होता है और क्या एक्सट्रीम फिल पूरी मात्रा बनाने का तरीका है?

UPD: एक ही मशीन पर, एक ही HDD आदि पर किए गए सभी परीक्षण। इससे कोई फर्क नहीं पड़ता कि 46G कैसे 500G मार्केटिंग से अलग है। समस्या यह है कि यह अलग एफएस के लिए अलग है। '

Df के बारे में - यह कुल FS आकार, प्रयुक्त आकार और मुक्त स्थान दिखाता है। इस मामले में मेरे पास है:

reiserfs के लिए:

/ dev / sda1 466G 33M 466G 1% / mnt

ext4 के लिए:

/ dev / sda1 459G 198M 435G 1% / mnt

यदि मैं रूट ब्लॉक आरक्षण बंद करता हूं, तो 435G 459G में बदल जाता है - एफएस का पूर्ण आकार (शून्य से 198 मी)। लेकिन अपने आप को ext4 के लिए अभी भी 459G और रीज़र के लिए 466G है!

UPD2: dd के माध्यम से वास्तविक डेटा के साथ वॉल्यूम भरना:

ReiserFS:

fs: ~ # dd if = / dev / zero of = / mnt / 1
dd: запись в «/ mnt / 1»: На устройстве кончилось место
975702649 + 0 записей считано
975702648 + 0 записей написано
 скопировано 499559755776 байт (500 GB), 8705,61 c, 57,4 MB / c

ext2 ब्लॉक आरक्षण के साथ बंद (mke2fs -m 0):

fs: ~ # dd if = / dev / zero of = / mnt / 1
dd: запись в «/ mnt / 1»: На устройстве кончилось место
960356153 + 0 записей считано
960356152 + 0 записей написано
 скопировано 491702349824 байта (492 GB), 8870,01 c, 55,4 MB / c

रूसी के लिए क्षमा करें, लेकिन मैंने इसे डिफ़ॉल्ट लोकेल में चलाया है और इसे दोहराते हुए बहुत लंबा है। इससे कोई फर्क नहीं पड़ता, dd आउटपुट स्पष्ट है।

इसलिए, यह पता चला है कि mke2fs वास्तव में अन्य mkfs की तुलना में छोटे फाइलसिस्टम बनाता है।


2
हर एफएस के साथ ओवरहेड की एक निश्चित राशि है ... मुझे नहीं पता कि आपको डिस्क पर सभी उपलब्ध भौतिक स्थान तक पहुंचने की अनुमति है।
17

मैं आपको अपना प्रदर्शन नाम बदलने की सलाह देता हूं और आपके ब्लॉग को आपकी प्रोफ़ाइल के वेबसाइट क्षेत्र में लगता है, ताकि यह कम से कम विज्ञापन में हो सके।
नमस्ते 31१

1
हैलो 71, सलाह के लिए धन्यवाद। वेबसाइट वास्तव में मायने नहीं रखती है, यह केवल ओपनिड के लिए है।
ineu

भविष्य के नोट के लिए, यदि आप जल्दी से अंग्रेजी में आउटपुट के लिए एक प्रोग्राम चाहते हैं, तो उपयोग करें LANG=C fooयाLC_ALL=C foo
एलन पीयर्स

एलन, सही है, धन्यवाद। यह LANG = या LANG = POSIX भी हो सकता है। लेकिन जैसा कि मैंने कहा, इस प्रक्रिया में बहुत समय लगता है इसलिए इसे अलग-अलग लोकेल के साथ बस दो लाइनों के लिए फिर से चलाना अनुचित है :) दोनों ही मामलों में, यह ext2 के लिए FS आकार के साथ समस्या साबित करता है :(
Ineu

जवाबों:


19

यह सच है दो कारण हैं।

सबसे पहले, किसी कारण से या किसी अन्य ओएस लेखक अभी भी आधार 2 प्रणाली के संदर्भ में मुक्त स्थान की रिपोर्ट करते हैं, और हार्ड ड्राइव निर्माता आधार 10 प्रणाली के संदर्भ में मुक्त स्थान की रिपोर्ट करते हैं। उदाहरण के लिए, एक ओएस लेखक 1024 बाइट्स (2 ^ 10 बाइट्स) एक किलोबाइट को कॉल करेगा, और एक हार्ड ड्राइव निर्माण 1000 बाइट्स एक किलोबाइट कहेगा। किलोबाइट के लिए यह अंतर बहुत मामूली है, लेकिन एक बार जब आप टेराबाइट्स के लिए उठते हैं, तो यह बहुत महत्वपूर्ण है। एक OS लेखक 1099511627776 बाइट्स (2 ^ 40 बाइट्स) को टेराबाइट कहेगा, और हार्ड-ड्राइव निर्माता 1000000000000 बाइट्स को एक टेराबाइट कहेगा।

आकार के बारे में बात करने के ये दो अलग-अलग तरीके अक्सर बहुत भ्रम पैदा करते हैं।

द्विआधारी आकारों के लिए एक स्थानिक रूप से समर्थित आईएसओ उपसर्ग है । उपयोगकर्ता इंटरफ़ेस जो नए प्रीफ़िक्स के साथ डिज़ाइन किए गए हैं, बेस 2 प्रीफ़िक्स सिस्टम के साथ आकार दिखाते समय TiB, GiB (या अधिक सामान्यतः XiB) दिखाएगा।

दूसरे, df -h रिपोर्ट करता है कि आपके उपयोग के लिए कितनी जगह उपलब्ध है। सभी filesystems को आप के लिए चीजों का ट्रैक रखने के लिए हाउसकीपिंग जानकारी लिखना है। यह जानकारी आपके ड्राइव पर कुछ जगह लेती है। आम तौर पर बहुत ज्यादा नहीं, लेकिन कुछ। यह भी आप देख रहे हैं नुकसान के कुछ के लिए खातों।

आपके द्वारा अपनी पोस्ट को संपादित करने के बाद यह स्पष्ट करने के लिए कि मेरा कोई भी उत्तर वास्तव में आपके प्रश्न का उत्तर नहीं देता है, मैं आपके प्रश्न का उत्तर देने के लिए प्रयास करूँगा ...

विभिन्न फाइलसिस्टम हाउसकीपिंग की जानकारी के लिए अलग-अलग मात्रा में जगह का उपयोग करते हैं और रिपोर्ट करते हैं कि अंतरिक्ष का उपयोग अलग-अलग तरीकों से होता है।

उदाहरण के लिए, ext2 सिलेंडर समूहों में डिस्क को विभाजित करता है। फिर यह प्रत्येक सिलेंडर समूह में इनोड्स और फ्री स्पेस मैप्स के लिए जगह आवंटित करता है। ext3 एक ही काम करता है क्योंकि यह मूल रूप से ext2 + जर्नलिंग है। और ext4 भी सटीक एक ही काम करता है क्योंकि यह ext3 का काफी सीधा (और लगभग पीछे संगत) संशोधन है। और चूंकि यह मेटा-डेटा ओवरहेड फ़ाइल सिस्टम निर्माण या आकार परिवर्तन पर तय किया गया है, इसलिए इसे 'उपयोग' किए गए स्थान के रूप में रिपोर्ट नहीं किया गया है। मुझे संदेह है कि यह इसलिए भी है क्योंकि सिलेंडर समूह मेटा-डेटा डिस्क पर निश्चित स्थानों पर है, और इसलिए इसका उपयोग किया जा रहा है और इसलिए इसे खाली स्थान के नक्शे में चिह्नित नहीं किया गया है।

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

लेकिन इसका मतलब यह है कि आप फ़ाइलों को जोड़ने के रूप में reiserfs अधिक स्थान लेंगे क्योंकि यह मेटा-डेटा (जैसे इनोड्स) और साथ ही फ़ाइल के लिए वास्तविक डेटा स्थान आवंटित करेगा।

मुझे नहीं पता कि कैसे jfs और btrfs मेटा-डेटा स्पेस उपयोग को ट्रैक करते हैं। लेकिन मुझे संदेह है कि वे इसे और अधिक ट्रैक करते हैं जैसे reiserfs करता है। विशेष रूप से vfat में कोई इनोड अवधारणा नहीं है। इसका मुक्त स्थान मानचित्र (जिसका आकार फाइलसिस्टम बनाने के लिए तय किया गया है (बदनाम एफएटी तालिका)) डेटा को बहुत अधिक मात्रा में संग्रहीत करता है, और निर्देशिका प्रविष्टि (जो गतिशील रूप से आवंटित होती है) बाकी को संग्रहीत करती है।


2
इसके लिए ISO मानक है: en.wikipedia.org/wiki/Binary_prefix
Bobby

@ बॉबी - हाँ, और यह डिस्प्ले में दिखाई देने लगी है। मैं अपने उत्तर में जोड़ दूंगा। धन्यवाद!
सर्वव्यापी

8

साथ ही साथ जिन मुद्दों का उल्लेख सर्वव्यापी है, उनमें ext2 / 3/4 के साथ एक निश्चित मात्रा में स्थान रूट के लिए आरक्षित है - यह आरक्षित स्थान df के आउटपुट में नहीं दिखता है।

उदाहरण के लिए, डिफ़ॉल्ट विकल्पों के साथ एक छोटी फाइलसिस्टम (~ 100mb) बनाने के लिए, ext2 का उपयोग करते हुए, फिर स्थान को अनदेखा करने के लिए 3 या 4 का उपयोग करें जो अन्यथा जर्नल द्वारा लिया जाएगा:

swann:/tmp# dd if=/dev/zero of=./loop.fs bs=10240 count=10240
swann:/tmp# mkfs.ext2 loop.fs
swann:/tmp# mkdir loop
swann:/tmp# mount -text2 -oloop loop.fs loop
swann:/tmp# df loop
Filesystem           1K-blocks      Used Available Use% Mounted on
/tmp/loop.fs             99150      1550     92480   2% /tmp/loop

आरक्षित ब्लॉक विकल्प (ट्वीक tune2fsके -mविकल्प सेट प्रतिशत के रूप में आरक्षित ब्लॉक, और -rविकल्प सेट ब्लॉक के एक सीधे संख्या के रूप में आरक्षित ब्लॉक):

swann:/tmp# umount loop
swann:/tmp# tune2fs -m 25 loop.fs
swann:/tmp# mount -text2 -oloop loop.fs loop
swann:/tmp# df loop
Filesystem           1K-blocks      Used Available Use% Mounted on
/tmp/loop.fs             99150      1550     72000   3% /tmp/loop

swann:/tmp# umount loop
swann:/tmp# tune2fs -m 0 loop.fs
swann:/tmp# mount -text2 -oloop loop.fs loop
swann:/tmp# df loop
Filesystem           1K-blocks      Used Available Use% Mounted on
/tmp/loop.fs             99150      1550     97600   2% /tmp/loop

जैसा कि आप ऊपर के उदाहरण में देख सकते हैं, यहां तक ​​कि जब लॉग इन रूट df"उपलब्ध" गणना में आरक्षित स्थान नहीं दिखाता है। आरक्षित स्थान "यूज्ड" काउंट में यह नहीं दिखाता है कि क्या रूट या कम विशेषाधिकार प्राप्त उपयोगकर्ता के रूप में लॉग इन किया गया है। यह कभी-कभी भ्रम पैदा कर सकता है जब एक फाइलसिस्टम पूर्ण के करीब होता है यदि आप इन दो तथ्यों की अपेक्षा नहीं कर रहे हैं।

यह भी ध्यान दें कि tune2fs, अपने नाम के बावजूद, ext3 और ext4 फाइल सिस्टम के साथ-साथ ext2 वालों के लिए भी प्रासंगिक है।


जवाब के लिए धन्यवाद। नहीं, यह आरक्षित ब्लॉकों के बारे में नहीं है। अद्यतन प्रश्न।
ineu

0

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

यहाँ ext2 के लिए एक विवरण है और आप शायद reiserfs के लिए कुछ समान पा सकते हैं, लेकिन मैंने कभी इसका उपयोग नहीं किया है इसलिए मेरे पास कोई भी नहीं है।


2
Reiserfs और btrfs असामान्य हैं जिसमें लगभग सभी बहीखाता जानकारी को गतिशील रूप से आवंटित किया गया है। केवल सुपरब्लॉक प्रतियां और मुक्त स्थान बिटमैप्स को फाइलसिस्टम सेटअप पर आवंटित किया जाता है। बेशक, इसका मतलब है कि डेटा के लिए उपलब्ध अंतरिक्ष की वास्तविक मात्रा इन फाइल सिस्टम के लिए कम निर्धारक है।
सर्वव्यापी

@Omifarious +1 - तो, ​​अगर मैं reiserfs और btrfs पर अच्छी तरह से समझता हूं, तो रिपोर्ट की गई उपलब्ध जगह शुरुआत में बड़ी है, लेकिन केवल डेटा के बजाय डेटा और बहीखाता जानकारी दोनों के साथ उपयोग किया जाएगा, है ना?
laurent

@ लॉरेंट-आरपीनेट - हां, यह सही है। Btrfs के मामले में यह और भी दिलचस्प है। btrfs एक व्यक्तिगत फ़ाइल के आधार पर RAID को लागू कर सकते हैं, इसलिए इसकी उपलब्ध रिक्त स्थान की रिपोर्टिंग को पिन करना और भी कठिन है क्योंकि यह नहीं मान सकता है कि डेटा के लिए उपयोग किए जाने वाले प्रत्येक ब्लॉक के लिए उपयोग किए जाने वाले अतिरिक्त स्थान की एक निश्चित राशि होने जा रही है। इसके अतिरिक्त, यह बहुत सस्ती गाय आधारित प्रतियों की अनुमति देता है, इसलिए किसी मौजूदा फ़ाइल के बीच में एक ब्लॉक लिखना अंतरिक्ष आवंटित कर सकता है।
सर्वग्राही

और XFS, JFS और VFAT के बारे में क्या? ऐसा विश्वास करना कठिन है कि FAT32 ext4 की तुलना में अधिक गतिशील है।
ineu

FAT32 में संगठन के लिए आरक्षित ब्लॉक भी हैं। यहाँ गतिशील का अर्थ क्या है? यदि डायनामिक आवंटन, FAT32 में कोई डायनेमिक आवंटन नहीं है, जैसे ext और डेटा के लिए उपलब्ध डिस्क पर सभी ब्लॉक नहीं दिखाता है। इसकी कुछ सीमाएँ हैं ext4 फाइलसिस्टम की कोई अनुमति प्रणाली नहीं है, जबकि ext4 में POSIX अनुमतियां और ACL हैं और अधिकतम फ़ाइल आकार FAT32 पर 4GB और ext3 पर 2TB है (ext4 के बारे में निश्चित नहीं है लेकिन कम से कम समान होना चाहिए)।
लॉरेंट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.