नए Ext4 इनलाइन डेटा सुविधा का उपयोग कैसे करें? (डेटा को सीधे इनोड में संग्रहीत करना)


9

अगर मैं एक्स्ट 4 डॉक्यूमेंट को सही ढंग से पढ़ता हूं, तो लिनक्स 3.8 से शुरू करके डेटा को बहुत छोटी फाइल के फूलदान में सीधे इनोड में स्टोर करना संभव होना चाहिए।

मैं ऐसी फाइल की उम्मीद कर रहा था जिसका आकार 0 ब्लॉक है, लेकिन ऐसा नहीं है।

#creating a small file
printf "abcde" > small_file

#checking size of file in bytes
stat --printf='%s\n' small_file
5

#number of blocks used by files
stat --printf='%b\n' small_file
8

मुझे उम्मीद है कि यह अंतिम संख्या यहाँ होगी 0. क्या मुझे कुछ याद आ रहा है?


1
यह शायद एक फाइलसिस्टम विकल्प है, जिसे फाइलसिस्टम के निर्माण के दौरान सक्षम करने की आवश्यकता है, समस्याओं को रोकने के लिए यदि आप बाद में किसी पुराने कर्नेल के साथ फाइलसिस्टम माउंट करने के लिए होते हैं।
wurtel

जवाबों:


7

इनलाइन डेटा को सक्षम करने के लिए ext4, आपको e2fsprogs1.43 या बाद के संस्करण की आवश्यकता होगी । इनलाइन डेटा के लिए समर्थन मार्च 2014 में gitरिपॉजिटरी में जोड़ा गया था , लेकिन केवल मई 2016 में जारी किया गया था।

आपके पास एक बार, आप mke2fs -O inline_dataइनलाइन डेटा समर्थन के साथ एक नया फाइल सिस्टम बनाने के लिए एक उपयुक्त डिवाइस पर चल सकते हैं ; यह आपके सभी डेटा को मिटा देगा । यह मौजूदा फ़ाइल सिस्टम पर इनलाइन डेटा को सक्रिय करने के लिए अभी तक संभव नहीं है (कम से कम, tune2fsइसका समर्थन नहीं करता है)।

अब एक छोटी फाइल बनाएं, और debugfsफाइल सिस्टम पर चलाएं । cdउपयुक्त निर्देशिका के लिए, और भागो stat smallfile; आपको कुछ मिलेगा

Inode: 32770   Type: regular    Mode:  0644   Flags: 0x10000000
Generation: 2302340561    Version: 0x00000000:00000001
User:  1000   Group:  1000   Size: 6
File ACL: 0    Directory ACL: 0
Links: 1   Blockcount: 0
Fragment:  Address: 0    Number: 0    Size: 0
 ctime: 0x553731e9:330badf8 -- Wed Apr 22 07:30:17 2015
 atime: 0x553731e9:330badf8 -- Wed Apr 22 07:30:17 2015
 mtime: 0x553731e9:330badf8 -- Wed Apr 22 07:30:17 2015
crtime: 0x553731e9:330badf8 -- Wed Apr 22 07:30:17 2015
Size of extra inode fields: 28
Extended attributes:
  system.data (0)
Size of inline data: 60

जैसा कि आप देख सकते हैं कि डेटा इनलाइन संग्रहीत किया गया था। इसका उपयोग करके भी देखा जा सकता है df; फ़ाइल बनाने से पहले:

% df -i /mnt/new 
Filesystem                           Inodes IUsed IFree IUse% Mounted on
/dev/mapper/vg--large--mirror-inline  65536    12 65524    1% /mnt/new
% df /mnt/new 
Filesystem                           1K-blocks  Used Available Use% Mounted on
/dev/mapper/vg--large--mirror-inline   1032088  1280    978380   1% /mnt/new

फ़ाइल बनाने के बाद:

% echo Hello >| smallfile
% ls -l
total 1
-rw-r--r-- 1 steve steve 6 Apr 22 07:35 smallfile
% df -i /mnt/new
Filesystem                           Inodes IUsed IFree IUse% Mounted on
/dev/mapper/vg--large--mirror-inline  65536    13 65523    1% /mnt/new
% df /mnt/new
Filesystem                           1K-blocks  Used Available Use% Mounted on
/dev/mapper/vg--large--mirror-inline   1032088  1280    978380   1% /mnt/new

फ़ाइल वहाँ है, यह एक इनोड का उपयोग करता है लेकिन उपलब्ध संग्रहण स्थान नहीं बदला है।


4

यदि आपका e2fsprogsसंस्करण बहुत पुराना है, या फाइलसिस्टम पहले से ही बना है, तो आप फीचर फ्लैग का उपयोग करके सेट कर सकते हैं debugfs(ध्वज 2012 से समर्थित है, जबकि mke2fsअन्य टूल ने 2014+ पर समर्थन जोड़ा है और कई वितरण अभी भी 2016 में उन्हें शिप नहीं करते हैं , उबंटू।

ऐसा करने के लिए, रीड-राइट मोड में विभाजन खोलें:

debugfs -w /dev/sdxx

और फिर झंडा जोड़ें:

feature inline_data

(या feature -inline_dataइसे टॉगल करें, लेकिन यह शायद एक बहुत बुरा विचार है अगर पहले से ही इनलाइन फाइलें हैं!)

ध्यान दें, हालांकि, यदि आपका सिस्टम e2fsprogsपुराना है, तो आप अपने आप को एक कोने में चला रहे हैं, क्योंकि उपयोगिताओं ( debugfsस्वयं सहित ) ध्वज को स्थापित करने के बाद इस तरह के फाइल सिस्टम को छूने से इनकार कर देंगे।

यह भी ध्यान दें कि वर्तमान GRUB(2.02) इसका समर्थन नहीं करता है, इसलिए इसे बूट विभाजन पर सेट करने से सिस्टम अप्राप्य हो जाएगा। समर्थन जोड़ने के लिए एक अनमैरिड पैच है।

इस लेखन के समय तक, फ़ाइलों और निर्देशिकाओं को inode_size-128इनलाइन किया जा सकता है, इसलिए डिफ़ॉल्ट 256 बाइट इनकोड के लिए 128 बाइट्स। यदि आप अधिक इनलाइनिंग चाहते हैं तो आप बड़े इनोड का उपयोग कर सकते हैं।

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