ext4

From alpha
Jump to navigation Jump to search

ext4
Developer(s)Mingming Cao, Andreas Dilger, Alex Zhuravlev (Tomas), Dave Kleikamp, Theodore Ts'o, Eric Sandeen, Sam Naghshineh, others
Full nameFourth extended file system
Introduced
  • Unstable: 10 October 2006
  • Stable: 21 October 2008
with Linux 2.6.19 & 2.6.28
Partition identifier0x83: MBR / EBR.

EBD0A0A2-B9E5-4433-87C0-68B6B72699C7: GPT Windows BDP.[1]
0FC63DAF-8483-4772-8E79-3D69D8477DE4: GPT Linux filesystem data.[1]
933AC7E1-2EB4-4F13-B844-0E14E2AEF915: GPT /home partition.[2]

3B8F8425-20E0-4F3B-907F-1A25A76F98E8: GPT /srv (server data) partition.
Structures
Directory contentsLinked list, hashed B-tree
File allocationExtents / Bitmap
Bad blocksTable
Limits
Max. volume size1 EiB
Max. file size16 TiB (for 4 or 64 KiB block size)
Max. number of files4 billion (specified at filesystem creation time)
Max. filename length255 bytes (fewer for multibyte character encodings such as Unicode)
Allowed characters in filenamesAll bytes except NULL ('\0') and '/' and the special file names "." and ".." which are not forbidden but are always used for a respective special purpose.
Features
Dates recordedmodification (mtime), attribute modification (ctime), access (atime), delete (dtime), create (crtime)
Date range14 December 1901 - 10 May 2446[3]
Date resolutionNanosecond
ForksNo
Attributesacl, bh, bsddf, commit=nrsec, data=journal, data=ordered, data=writeback, delalloc, extents, journal_dev, mballoc, minixdf, noacl, nobh, nodelalloc, noextents, nomballoc, nombcache, nouser_xattr, oldalloc, orlov, user_xattr
File system permissionsUnix permissions, POSIX ACLs
Transparent compressionNo
Transparent encryptionYes
Data deduplicationNo
Other
Supported operating systems

ext4 (चौथा विस्तारित फ़ाइल सिस्टम) Linux के लिए एक जर्नलिंग फ़ाइल सिस्टम है, जिसे ext3 के उत्तराधिकारी के रूप में विकसित किया गया है।

ext4 प्रारंभ में ext3 के लिए बैकवर्ड संगतता | बैकवर्ड-संगत एक्सटेंशन की एक श्रृंखला थी, उनमें से कई मूल रूप से 2003 और 2006 के बीच लस्टर (फ़ाइल सिस्टम) के लिए चमक (फ़ाइल सिस्टम) द्वारा विकसित किए गए थे, जिसका उद्देश्य भंडारण सीमा का विस्तार करना और अन्य प्रदर्शन सुधार जोड़ना था।[4] हालाँकि, अन्य लिनक्स कर्नेल डेवलपर्स ने स्थिरता कारणों से ext3 में एक्सटेंशन स्वीकार करने का विरोध किया,[5] और ext3 के स्रोत कोड को Fork (सॉफ़्टवेयर डेवलपमेंट) करने, इसे ext4 के रूप में नाम बदलने और मौजूदा ext3 उपयोगकर्ताओं को प्रभावित किए बिना, वहां सभी विकास करने का प्रस्ताव दिया। इस प्रस्ताव को स्वीकार कर लिया गया और 28 जून 2006 को, ext3 के अनुरक्षक थियोडोर त्सो ने ext4 के लिए विकास की नई योजना की घोषणा की।[6] ext4 का प्रारंभिक विकास संस्करण संस्करण 2.6.19 में शामिल किया गया था[7] लिनक्स कर्नेल का. 11 अक्टूबर 2008 को, ext4 को स्थिर कोड के रूप में चिह्नित करने वाले पैच को Linux 2.6.28 स्रोत कोड रिपॉजिटरी में विलय कर दिया गया था,[8] विकास चरण के अंत को दर्शाते हुए और ext4 को अपनाने की सिफ़ारिश करना। कर्नेल 2.6.28, जिसमें ext4 फ़ाइल सिस्टम शामिल है, अंततः 25 दिसंबर 2008 को जारी किया गया।[9] 15 जनवरी 2010 को, Google ने घोषणा की कि वह अपने स्टोरेज इंफ्रास्ट्रक्चर को ext2 से ext4 में अपग्रेड करेगा।[10] 14 दिसंबर 2010 को, Google ने यह भी घोषणा की कि वह Android (ऑपरेटिंग सिस्टम)|Android 2.3 पर YAFFS के बजाय ext4 का उपयोग करेगा।[11]


दत्तक ग्रहण

ext4 डेबियन और उबंटू सहित कई लिनक्स वितरणों के लिए डिफ़ॉल्ट फ़ाइल सिस्टम है।[12]


सुविधाएँ

बड़ी फ़ाइल प्रणाली
ext4 फ़ाइल सिस्टम सैद्धांतिक रूप से 64 zebibyte|zebibyte (ZiB) तक के आकार वाले वॉल्यूम और मानक 4 [[किबिबाइट्स]] ब्लॉक (डेटा भंडारण) के साथ 16 tebibytes|tebibytes (TiB) तक के आकार वाली एकल फ़ाइलों और इससे अधिक आकार वाले वॉल्यूम का समर्थन कर सकता है। 64 किबिबाइट समूहों के साथ 1 yobibyte |योबिबाइट (YiB), हालांकि सीमा प्रारूप में एक सीमा 1 exbibyte|एक्सबिबाइट (EiB) को व्यावहारिक सीमा बनाती है।[13] अधिकतम फ़ाइल, निर्देशिका और फ़ाइल सिस्टम आकार सीमा कम से कम आनुपातिक रूप विस्तार (फ़ाइल सिस्टम) ब्लॉक आकार के साथ एआरएम वास्तुकला और पावरपीसी/पावर आईएसए सीपीयू पर उपलब्ध अधिकतम 64 KiB ब्लॉक आकार तक बढ़ती है।
विस्तार
एक्सटेंशन (फ़ाइल सिस्टम) ext2 और ext3 द्वारा उपयोग की जाने वाली पारंपरिक ब्लॉक (डेटा भंडारण) योजना को प्रतिस्थापित करता है। एक सीमा सन्निहित भौतिक ब्लॉकों की एक श्रृंखला है, जो बड़ी फ़ाइल के प्रदर्शन में सुधार करती है और विखंडन को कम करती है। ext4 में एक एकल सीमा 4 KiB ब्लॉक आकार के साथ 128 mebibytes सन्निहित स्थान को मैप कर सकती है।[4]इनोड में सीधे चार विस्तार संग्रहीत किए जा सकते हैं। जब किसी फ़ाइल में चार से अधिक विस्तार होते हैं, तो शेष विस्तार को एक ट्री (डेटा संरचना) में अनुक्रमित किया जाता है।[14]
पश्च संगतता
ext4, ext3 और ext2 के साथ बैकवर्ड-संगत है, जिससे ext3 और ext2 को ext4 के रूप में माउंट (कंप्यूटिंग) करना संभव हो जाता है। इससे प्रदर्शन में थोड़ा सुधार होगा, क्योंकि ext4 कार्यान्वयन की कुछ नई सुविधाओं का उपयोग ext3 और ext2 के साथ भी किया जा सकता है, जैसे कि नया ब्लॉक आवंटन एल्गोरिदम, ऑन-डिस्क प्रारूप को प्रभावित किए बिना।
ext3 ext4 के साथ आंशिक रूप से आगे-संगत है। व्यावहारिक रूप से, ext4 बॉक्स से बाहर ext3 फ़ाइल सिस्टम के रूप में माउंट नहीं होगा, जब तक कि इसे बनाते समय कुछ नई सुविधाएँ अक्षम न की जाएँ, जैसे कि ^extent, ^flex_bg, ^huge_file, ^uninit_bg, ^dir_nlink, और ^extra_isize.[15]
लगातार पूर्व-आवंटन
ext4 किसी फ़ाइल के लिए ऑन-डिस्क स्थान पूर्व-आवंटित कर सकता है। अधिकांश फ़ाइल सिस्टम पर ऐसा करने के लिए, फ़ाइल बनाते समय शून्य लिखा जाएगा। Ext4 में (और कुछ अन्य फ़ाइल सिस्टम जैसे XFS) fallocate(), लिनक्स कर्नेल में एक नए सिस्टम कॉल का उपयोग किया जा सकता है। आवंटित स्थान की गारंटी होगी और संभवतः सन्निहित होगा। इस स्थिति में मीडिया स्ट्रीमिंग और डेटाबेस के लिए अनुप्रयोग हैं।
विलंबित आवंटन
ext4 फ्लश पर आवंटित करें नामक एक प्रदर्शन तकनीक का उपयोग करता है, जिसे विलंबित आवंटन के रूप में भी जाना जाता है। यानी, जब तक डेटा डिस्क पर फ्लश नहीं हो जाता तब तक ext4 ब्लॉक आवंटन में देरी करता है; इसके विपरीत, कुछ फ़ाइल सिस्टम तुरंत ब्लॉक आवंटित करते हैं, तब भी जब डेटा राइट कैश में चला जाता है। विलंबित आवंटन प्रदर्शन में सुधार करता है और एक समय में बड़ी मात्रा में डेटा को प्रभावी ढंग से आवंटित करके फ़ाइल सिस्टम विखंडन को कम करता है।
उपनिर्देशिकाओं की असीमित संख्या
ext4 निर्देशिका की अंतर्निहित आकार सीमा को छोड़कर, किसी एकल निर्देशिका में उपनिर्देशिकाओं की संख्या को सीमित नहीं करता है। (ext3 में एक निर्देशिका में अधिकतम 32,000 उपनिर्देशिकाएँ हो सकती हैं।)[16] बड़ी निर्देशिकाओं और निरंतर प्रदर्शन की अनुमति देने के लिए, Linux 2.6.23 में ext4 और बाद में डिफ़ॉल्ट रूप से HTree Array डेटा संरचना (बी-वृक्ष का एक विशेष संस्करण) चालू हो जाता है, जो लगभग 10-12 मिलियन प्रविष्टियों तक की निर्देशिकाओं को संग्रहीत करने की अनुमति देता है। फ़ाइल नाम की लंबाई के आधार पर, 2-स्तरीय एचट्री इंडेक्स और 4 किबी ब्लॉक आकार के लिए 2 जीबी निर्देशिका आकार सीमा। Linux 4.12 और बाद में largedir सुविधा ने 3-स्तरीय HTree और 2 जीबी से अधिक निर्देशिका आकार को सक्षम किया, जिससे एक ही निर्देशिका में लगभग 6 बिलियन प्रविष्टियाँ संभव हो सकीं।
जर्नल अंततः,
ext4 चेकसम का उपयोग करता है[17] विश्वसनीयता में सुधार के लिए जर्नल में, क्योंकि जर्नल डिस्क की सबसे अधिक उपयोग की जाने वाली फ़ाइलों में से एक है। इस सुविधा का एक अतिरिक्त लाभ है: यह जर्नलिंग के दौरान डिस्क I/O प्रतीक्षा से सुरक्षित रूप से बच सकता है, जिससे प्रदर्शन में थोड़ा सुधार होता है। जर्नल चेकसमिंग विस्कॉन्सिन विश्वविद्यालय के एक शोध लेख से प्रेरित था, जिसका शीर्षक IRON फ़ाइल सिस्टम था[18] (विशेष रूप से, धारा 6, जिसे लेनदेन चेकसम कहा जाता है), IRON फ़ाइल सिस्टम द्वारा किए गए मिश्रित लेनदेन के कार्यान्वयन के भीतर संशोधनों के साथ (मूल रूप से रेडहैट शिखर सम्मेलन में सैम नागशिनेह द्वारा प्रस्तावित)।
मेटाडेटा चेकसमिंग
चूंकि लिनक्स कर्नेल 3.5 2012 में जारी किया गया था[19][20]
तेज़ फ़ाइल-सिस्टम जाँच
ext4 में असंबद्ध ब्लॉक समूहों और इनोड तालिका के अनुभागों को इस प्रकार चिह्नित किया गया है। यह e2fsck को उन्हें पूरी तरह से छोड़ने में सक्षम बनाता है और फ़ाइल सिस्टम की जाँच करने में लगने वाले समय को बहुत कम कर देता है। लिनक्स 2.6.24 इस सुविधा को लागू करता है।
इनोड गणना पर fsck समय निर्भरता (ext3 बनाम ext4)

; मल्टीब्लॉक आवंटनकर्ता

जब ext3 किसी फ़ाइल में जुड़ता है, तो यह प्रत्येक ब्लॉक के लिए एक बार ब्लॉक एलोकेटर को कॉल करता है। नतीजतन, यदि एकाधिक समवर्ती लेखक हैं, तो फ़ाइलें आसानी से डिस्क पर फ़ाइल सिस्टम विखंडन बन सकती हैं। हालाँकि, ext4 विलंबित आवंटन का उपयोग करता है, जो इसे डेटा को बफर करने और ब्लॉकों के समूहों को आवंटित करने की अनुमति देता है। नतीजतन, मल्टीब्लॉक एलोकेटर डिस्क पर संगत डेटा भंडारण फ़ाइलों को आवंटित करने के बारे में बेहतर विकल्प बना सकता है। जब फ़ाइलें O_DIRECT मोड में खोली जाती हैं तो मल्टीब्लॉक एलोकेटर का भी उपयोग किया जा सकता है। यह सुविधा डिस्क प्रारूप को प्रभावित नहीं करती.
बेहतर TIMESTAMP
जैसे-जैसे कंप्यूटर सामान्य रूप से तेज़ होते जाते हैं, और जैसे-जैसे मिशन-महत्वपूर्ण अनुप्रयोगों के लिए लिनक्स का उपयोग अधिक होता जाता है, दूसरे-आधारित टाइमस्टैम्प की ग्रैन्युलैरिटी अपर्याप्त हो जाती है। इसे हल करने के लिए, ext4 नैनोसेकंड में मापा गया टाइमस्टैम्प प्रदान करता है। इसके अलावा, वर्ष 2038 की समस्या को अतिरिक्त 408 वर्षों के लिए टालने के लिए विस्तारित टाइमस्टैम्प फ़ील्ड के 2 बिट्स को टाइमस्टैम्प के सेकंड फ़ील्ड के सबसे महत्वपूर्ण बिट्स में जोड़ा जाता है।[3]: ext4 निर्माण के समय के टाइमस्टैम्प के लिए समर्थन भी जोड़ता है। लेकिन, जैसा कि थियोडोर त्सो बताते हैं, जबकि इनोड में एक अतिरिक्त निर्माण-दिनांक फ़ील्ड जोड़ना आसान है (इस प्रकार तकनीकी रूप से ext4 में इन टाइमस्टैम्प के लिए समर्थन सक्षम करना), आवश्यक सिस्टम कॉल को संशोधित करना या जोड़ना अधिक कठिन है, जैसे स्टेट (यूनिक्स)|स्टेट() (जिसके लिए संभवतः एक नए संस्करण की आवश्यकता होगी) और विभिन्न लाइब्रेरी (कंप्यूटिंग) जो उन पर निर्भर हैं (जैसे glibc)। इन बदलावों के लिए कई परियोजनाओं के समन्वय की आवश्यकता होगी।[21] इसलिए, ext4 द्वारा संग्रहीत निर्माण तिथि वर्तमान में केवल Linux पर उपयोगकर्ता प्रोग्राम के लिए उपलब्ध है statx() एपीआई.[22]
परियोजना कोटा
प्रोजेक्ट कोटा के लिए समर्थन 8 जनवरी 2016 को लिनक्स कर्नेल 4.4 में जोड़ा गया था। यह सुविधा किसी विशेष प्रोजेक्ट आईडी के लिए डिस्क कोटा सीमा निर्दिष्ट करने की अनुमति देती है। फ़ाइल की प्रोजेक्ट आईडी प्रत्येक फ़ाइल पर संग्रहीत एक 32-बिट संख्या है और एक निर्दिष्ट प्रोजेक्ट आईडी के साथ मूल निर्देशिका के नीचे बनाई गई सभी फ़ाइलों और उपनिर्देशिकाओं द्वारा विरासत में मिली है। यह फ़ाइल पर फ़ाइल एक्सेस अनुमतियों से स्वतंत्र एक विशेष उपनिर्देशिका ट्री को कोटा सीमा निर्दिष्ट करने की अनुमति देता है, जैसे कि उपयोगकर्ता और प्रोजेक्ट कोटा जो यूआईडी और जीआईडी ​​पर निर्भर हैं। हालांकि यह एक निर्देशिका कोटा के समान है, मुख्य अंतर यह है कि एक ही प्रोजेक्ट आईडी को कई शीर्ष-स्तरीय निर्देशिकाओं को सौंपा जा सकता है और यह सख्ती से पदानुक्रमित नहीं है।[23]
पारदर्शी एन्क्रिप्शन
जून 2015 को लिनक्स कर्नेल 4.1 में पारदर्शी एन्क्रिप्शन के लिए समर्थन जोड़ा गया था।[24]
आलसी आरंभीकरण
आलसीइनिट सुविधा पृष्ठभूमि में इनोड तालिकाओं की सफाई की अनुमति देती है, एक नया ext4 फ़ाइल सिस्टम बनाते समय आरंभीकरण को तेज करती है।[25] यह 2010 से लिनक्स कर्नेल संस्करण 2.6.37 में उपलब्ध है।[26]
बाधाएँ लिखें
ext4 डिफ़ॉल्ट रूप से लेखन बाधाओं को सक्षम करता है। यह सुनिश्चित करता है कि फ़ाइल सिस्टम मेटाडेटा डिस्क पर सही ढंग से लिखा और ऑर्डर किया गया है, तब भी जब राइट कैश की शक्ति कम हो जाती है। यह विशेष रूप से उन अनुप्रयोगों के लिए प्रदर्शन लागत के साथ जाता है जो fsync का भारी उपयोग करते हैं या कई छोटी फ़ाइलें बनाते और हटाते हैं। बैटरी-समर्थित राइट कैश वाली डिस्क के लिए, बाधाओं को अक्षम करना (विकल्प 'बैरियर = 0') सुरक्षित रूप से प्रदर्शन में सुधार कर सकता है।[27]


सीमाएँ

2008 में, ext3 और ext4 फाइल सिस्टम के प्रमुख डेवलपर, थियोडोर त्सो ने कहा कि हालांकि ext4 में बेहतर सुविधाएं हैं, लेकिन यह कोई बड़ी प्रगति नहीं है, यह पुरानी तकनीक का उपयोग करता है, और एक स्टॉप-गैप है। Ts'o का मानना ​​है कि Btrfs बेहतर दिशा है क्योंकि यह स्केलेबिलिटी, विश्वसनीयता और प्रबंधन में आसानी में सुधार प्रदान करता है।[28] Btrfs के पास भी वही डिज़ाइन विचार हैं जो ReiserFS/Reiser4 के पास थे।[29] हालाँकि, ext4 ने फ़ाइल एन्क्रिप्शन और मेटाडेटा चेकसम जैसी नई सुविधाएँ हासिल करना जारी रखा है।

Ext4 फ़ाइल सिस्टम सुरक्षित विलोपन फ़ाइल विशेषता का सम्मान नहीं करता है, जो हटाए जाने पर फ़ाइलों के अधिलेखित होने का कारण माना जाता है। सुरक्षित विलोपन को लागू करने के लिए एक पैच 2011 में प्रस्तावित किया गया था, लेकिन फ़ाइल-सिस्टम जर्नल में संवेदनशील डेटा के समाप्त होने की समस्या का समाधान नहीं हुआ।[30]


विलंबित आवंटन और संभावित डेटा हानि

क्योंकि विलंबित आवंटन उस व्यवहार को बदल देता है जिस पर प्रोग्रामर ext3 के साथ भरोसा कर रहे हैं, यह सुविधा उन मामलों में डेटा हानि का कुछ अतिरिक्त जोखिम पैदा करती है जहां सिस्टम क्रैश हो जाता है या डिस्क पर सभी डेटा लिखे जाने से पहले पावर खो देता है। इसके कारण, कर्नेल संस्करण 2.6.30 और बाद में ext4 स्वचालित रूप से इन मामलों को ext3 की तरह संभालता है।

सामान्य परिदृश्य जिसमें यह हो सकता है वह एक प्रोग्राम है जो fsync के साथ डिस्क पर लिखने के लिए मजबूर किए बिना किसी फ़ाइल की सामग्री को प्रतिस्थापित करता है। यूनिक्स सिस्टम पर फ़ाइल की सामग्री को बदलने के दो सामान्य तरीके हैं:[31]* fd=open("file", O_TRUNC); write(fd, data); close(fd);

इस मामले में, मौजूदा फ़ाइल को खोलने के समय छोटा कर दिया जाता है (के कारण)। O_TRUNC ध्वज), फिर नया डेटा लिखा जाता है। चूँकि लिखने में कुछ समय लग सकता है, ext3 के साथ भी सामग्री खोने की संभावना होती है, लेकिन आमतौर पर बहुत कम। हालाँकि, क्योंकि ext4 लंबे समय तक फ़ाइल डेटा लिखने में देरी कर सकता है, यह अवसर बहुत बड़ा है।
ऐसी कई समस्याएं हैं जो उत्पन्न हो सकती हैं:
  1. यदि लेखन सफल नहीं होता है (जो लेखन कार्यक्रम में त्रुटि स्थितियों के कारण हो सकता है, या पूर्ण डिस्क जैसी बाहरी स्थितियों के कारण हो सकता है), तो फ़ाइल का मूल संस्करण और नया संस्करण दोनों खो जाएंगे, और फ़ाइल दूषित हो सकती है क्योंकि इसका केवल एक भाग ही लिखा गया है।
  2. यदि अन्य प्रक्रियाएं फ़ाइल को लिखे जाने के दौरान एक्सेस करती हैं, तो उन्हें एक दूषित संस्करण दिखाई देता है।
  3. यदि अन्य प्रक्रियाओं में फ़ाइल खुली है और इसकी सामग्री में बदलाव की उम्मीद नहीं है, तो वे प्रक्रियाएँ क्रैश हो सकती हैं। एक उल्लेखनीय उदाहरण एक साझा लाइब्रेरी फ़ाइल है जिसे चल रहे प्रोग्रामों में मैप किया जाता है।
इन मुद्दों के कारण, अक्सर उपरोक्त मुहावरे की तुलना में निम्नलिखित मुहावरे को प्राथमिकता दी जाती है:
  • fd=open("file.new"); write(fd, data); close(fd); rename("file.new", "file");
एक नई अस्थायी फ़ाइल (file.new) बनाई जाती है, जिसमें प्रारंभ में नई सामग्री होती है। फिर पुरानी फ़ाइल के स्थान पर नई फ़ाइल का नाम बदल दिया जाता है। द्वारा फ़ाइलें प्रतिस्थापित करना rename() कॉल को POSIX मानकों द्वारा परमाणु होने की गारंटी है - यानी या तो पुरानी फ़ाइल बनी रहती है, या इसे नए के साथ अधिलेखित कर दिया जाता है। क्योंकि ext3 डिफ़ॉल्ट ऑर्डर किया गया जर्नलिंग मोड गारंटी देता है कि फ़ाइल डेटा मेटाडेटा से पहले डिस्क पर लिखा गया है, यह तकनीक गारंटी देती है कि पुरानी या नई फ़ाइल सामग्री डिस्क पर बनी रहेगी। ext4 का विलंबित आवंटन इस अपेक्षा को तोड़ देता है, क्योंकि फ़ाइल लिखने में लंबे समय तक देरी हो सकती है, और नाम बदलने का कार्य आमतौर पर नई फ़ाइल सामग्री के डिस्क तक पहुंचने से पहले किया जाता है।

का उपयोग करते हुए fsync() अक्सर ext4 के जोखिम को कम करने के लिए इसके साथ लगे ext3 फ़ाइल सिस्टम पर प्रदर्शन दंड लगाया जा सकता है data=ordered ध्वज (अधिकांश लिनक्स वितरणों पर डिफ़ॉल्ट)। यह देखते हुए कि दोनों फ़ाइल सिस्टम कुछ समय के लिए उपयोग में रहेंगे, यह अंतिम-उपयोगकर्ता एप्लिकेशन डेवलपर्स के लिए मामलों को जटिल बना देता है। प्रतिक्रिया में, Linux कर्नेल 2.6.30 और नए में ext4 इन सामान्य मामलों की घटना का पता लगाता है और फ़ाइलों को तुरंत आवंटित करने के लिए बाध्य करता है। प्रदर्शन में थोड़ी सी लागत के लिए, यह ext3 ऑर्डर किए गए मोड के समान शब्दार्थ प्रदान करता है और यह संभावना बढ़ाता है कि फ़ाइल का कोई भी संस्करण क्रैश से बच जाएगा। यह नया व्यवहार डिफ़ॉल्ट रूप से सक्षम है, लेकिन noauto_da_alloc माउंट विकल्प के साथ अक्षम किया जा सकता है।[31] नए पैच मेनलाइन कर्नेल 2.6.30 का हिस्सा बन गए हैं, लेकिन विभिन्न वितरणों ने उन्हें 2.6.28 या 2.6.29 पर बैकपोर्ट करने का विकल्प चुना।[32] ये पैच संभावित डेटा हानि को पूरी तरह से नहीं रोकते हैं या नई फ़ाइलों में बिल्कुल भी मदद नहीं करते हैं। सुरक्षित रहने का एकमात्र तरीका ऐसा सॉफ़्टवेयर लिखना और उसका उपयोग करना है जो ऐसा करता है fsync() जब इसकी आवश्यकता हो. आवश्यक डिस्क राइट्स को सीमित करके प्रदर्शन समस्याओं को कम किया जा सकता है fsync() कम बार घटित होना।[33]


कार्यान्वयन

लिनक्स कर्नेल की सरलीकृत संरचना: ext4 को लिनक्स कर्नेल वर्चुअल फाइल सिस्टम और जेनेरिक ब्लॉक लेयर के बीच लागू किया गया है।

लिनक्स कर्नेल वर्चुअल फाइल सिस्टम लिनक्स कर्नेल के अंदर एक सबसिस्टम या परत है। यह एकाधिक फ़ाइल सिस्टम को एक व्यवस्थित एकल संरचना में एकीकृत करने के बहुत गंभीर प्रयास का परिणाम है। मुख्य विचार, जो 1986 में सन माइक्रोसिस्टम्स के कर्मचारियों द्वारा किए गए अग्रणी कार्य से जुड़ा है,[34] फ़ाइल सिस्टम के उस हिस्से को अलग करना है जो सभी फ़ाइल सिस्टमों के लिए सामान्य है और उस कोड को एक अलग परत में रखना है जो वास्तव में डेटा को प्रबंधित करने के लिए अंतर्निहित ठोस फ़ाइल सिस्टम को कॉल करता है।

फ़ाइलों (या छद्म फ़ाइलों) से संबंधित सभी सिस्टम कॉल प्रारंभिक प्रसंस्करण के लिए लिनक्स कर्नेल वर्चुअल फ़ाइल सिस्टम को निर्देशित की जाती हैं। उपयोगकर्ता प्रक्रियाओं से आने वाली ये कॉल, मानक POSIX कॉल हैं, जैसे open, read, write, lseek, वगैरह।

विंडोज और मैकिंटोश के साथ संगतता

वर्तमान में, ext4 को गैर-लिनक्स ऑपरेटिंग सिस्टम पर पूर्ण समर्थन प्राप्त है।

Windows 10 संस्करण इतिहास के बाद से Microsoft Windows ext4 तक पहुंच सकता है।[35][36][37] यह लिनक्स के लिए विंडोज सबसिस्टम (डब्ल्यूएसएल) के लिए संभव है, जिसे 2 अगस्त 2016 को विंडोज 10 एनिवर्सरी अपडेट (संस्करण 1607) के साथ पेश किया गया था। डब्ल्यूएसएल संस्करण 1607 से केवल विंडोज 10 के 64-बिट संस्करणों में उपलब्ध है। यह में भी उपलब्ध है विंडोज सर्वर 2019. WSL आर्किटेक्चर में बड़े बदलाव 12 जून 2019 को WSL 2 की रिलीज़ के साथ आए।[38] WSL 2 के लिए x64 सिस्टम के लिए बिल्ड 18362 या उच्चतर के साथ विंडोज 10 संस्करण 1903 या उच्चतर, और ARM64 सिस्टम के लिए बिल्ड 19041 या उच्चतर के साथ संस्करण 2004 या उच्चतर की आवश्यकता होती है।[39] पैरागॉन सॉफ्टवेयर ग्रुप विंडोज़ के लिए अपना व्यावसायिक उत्पाद लिनक्स फाइल सिस्टम पेश करता है[40] जो Windows 7 SP1/8/8.1/10 और Windows Server 2008 R2 SP1/2012/2016 पर ext2/3/4 के लिए पढ़ने/लिखने की क्षमताओं की अनुमति देता है।

मैकओएस में पैरागॉन सॉफ्टवेयर द्वारा मैक के लिए extFS के माध्यम से पूर्ण ext2/3/4 पढ़ने-लिखने की क्षमता है,[41] जो एक व्यावसायिक उत्पाद है. ext4fuse जैसे मुफ़्त सॉफ़्टवेयर में सीमित कार्यक्षमता के साथ केवल-पढ़ने के लिए समर्थन है।

यह भी देखें

संदर्भ

  1. 1.0 1.1 Previously, Linux used the same GUID for the data partitions as Windows (Basic data partition: EBD0A0A2-B9E5-4433-87C0-68B6B72699C7). Linux never had a separate unique partition type GUID defined for its data partitions. This created problems when dual-booting Linux and Windows in UEFI-GPT setup. The new GUID (Linux filesystem data: 0FC63DAF-8483-4772-8E79-3D69D8477DE4) was defined jointly by GPT fdisk and GNU Parted developers. It is identified as type code 0x8300 in GPT fdisk. (See definitions in gdisk's parttypes.cc)
  2. "DiscoverablePartitionsSpec". freedesktop.org. Retrieved 7 April 2018.
  3. 3.0 3.1 "ext4: Fix handling of extended tv_sec". Linux-stable kernel tree. Retrieved 14 February 2017.
  4. 4.0 4.1 Mathur, Avantika; Cao, MingMing; Bhattacharya, Suparna; Dilger, Andreas; Zhuravlev (Tomas), Alex; Vivier, Laurent (2007). "The new ext4 filesystem: current status and future plans" (PDF). Proceedings of the Linux Symposium. Ottawa, ON, CA: Red Hat. Archived from the original (PDF) on 6 July 2010. Retrieved 15 January 2008.
  5. Torvalds, Linus (9 June 2006). "extents and 48bit ext3". Linux kernel mailing list.
  6. Ts'o, Theodore (28 June 2006). "Proposal and plan for ext2/3 future development work". Linux kernel mailing list.
  7. Leemhuis, Thorsten (23 December 2008). "Higher and further: The innovations of Linux 2.6.28 (page 2)". Heise Online. Archived from the original on 3 January 2009. Retrieved 9 January 2010.
  8. "ext4: Rename ext4dev to ext4". Linus' kernel tree. Archived from the original on 29 May 2012. Retrieved 20 October 2008.
  9. Leemhuis, Thorsten (23 December 2008). "Higher and further: The innovations of Linux 2.6.28". Heise Online.
  10. Paul, Ryan (15 January 2010). "Google upgrading to Ext4, hires former Linux Foundation CTO". Ars Technica.
  11. "Android 2.3 Gingerbread to use Ext4 file system". The H Open. 14 December 2010.
  12. "डेबियन में फ़ाइल सिस्टम". 14 September 2019.
  13. "ext4 - High Level Design". kernel.org. Retrieved 8 January 2023.
  14. Hal Pomeranz (28 March 2011). "Understanding EXT4 (Part 3): Extent Trees". SANS Digital Forensics and Incident Response Blog. Archived from the original on 18 August 2019.
  15. "Mount of ext4 (created without extents) as ext3 fails on RH6.2". www.linuxquestions.org. Retrieved 7 April 2018.
  16. "Ext4 - Linux Kernel Newbies". kernelnewbies.org.
  17. "New ext4 features - Ext4". ext4.wiki.kernel.org.
  18. Prabhakaran, Vijayan; Bairavasundaram, Lakshmi N.; Agrawal, Nitin; Gunawi, Haryadi S.; Arpaci-Dusseau, Andrea C.; Arpaci-Dusseau, Remzi H. "IRON File Systems" (PDF). CS Dept, University of Wisconsin. {{cite journal}}: Cite journal requires |journal= (help)
  19. "Ext4 Metadata Checksums - Ext4". ext4.wiki.kernel.org.
  20. "Linux_3.5 - Linux Kernel Newbies". kernelnewbies.org.
  21. Ts'o, Theodore (5 October 2006). "Re: creation time stamps for ext4 ?".
  22. Edge, Jake (31 March 2017). "Extending statx()".
  23. Li, Xi (12 January 2016). "Ext4 encryption".
  24. Ts'o, Theodore (8 April 2015). "Ext4 encryption".
  25. "Ext4 Filesystem - Thomas-Krenn-Wiki". www.thomas-krenn.com.
  26. "kernel/git/torvalds/linux.git - Linux kernel source tree". git.kernel.org.
  27. "Ext4 - ArchWiki". wiki.archlinux.org.
  28. Paul, Ryan (14 April 2009). "Panelists ponder the kernel at Linux Collaboration Summit". Ars Technica. Retrieved 22 August 2009.
  29. Theodore Ts'o (1 August 2008). "Re: reiser4 for 2.6.27-rc1". linux-kernel (Mailing list). Retrieved 31 December 2010.
  30. Corbet, Jonathan (11 October 2011). "Securely deleting files from ext4 filesystems".
  31. 31.0 31.1 "ext4 documentation in Linux kernel source". 28 March 2009.
  32. Ubuntu bug #317781 Long discussion between Ubuntu developers and Theodore Ts'o on potential data loss
  33. Thoughts by Ted blog entry, 12 March 2009 A blog posting of Theodore Ts'o on the subject
  34. Kleiman
  35. Brandon LeBlanc (10 September 2020). "Announcing Windows 10 Insider Preview Build 20211". Windows Blogs. Retrieved 25 May 2021.
  36. Pierre Boulay (10 September 2020). "Access Linux filesystems in Windows and WSL 2". Windows Command Line. Retrieved 25 May 2021.
  37. "Get started mounting a Linux disk in WSL 2". Microsoft Docs. Retrieved 25 May 2021.
  38. Craig Loewen (12 June 2019). "WSL 2 is now available in Windows Insiders". Windows Command Line. Retrieved 25 May 2021.
  39. "विंडोज़ 10 के लिए लिनक्स इंस्टालेशन गाइड के लिए विंडोज़ सबसिस्टम". Windows Docs. Retrieved 25 May 2021.
  40. "विंडोज़ के लिए लिनक्स फाइल सिस्टम". Paragon Software. Retrieved 25 May 2021.
  41. "मैक के लिए extFS". Paragon Software. Retrieved 25 May 2021.


बाहरी संबंध