आप एक फ़ाइल सिस्टम का आकार बदलने का प्रयास कर रहे हैं जो -O 64bit
विकल्प के डिफ़ॉल्ट होने से पहले बनाया गया था । अपने एक्सट्रीम फाइलसिस्टम को 64 बिट पतों पर अपग्रेड करना संभव है, जिससे यह काफी बड़ा हो सकता है (16 TiB के बजाय 1024 PiB) वॉल्यूम।
अपने लक्ष्य उपकरण को कहा जाता है /dev/mapper/target-device
, यह वही है जो आपको करने की आवश्यकता है:
आवश्यक शर्तें
- वॉल्यूम का यह आकार RAID द्वारा समर्थित होना चाहिए। नियमित रूप से डिस्क त्रुटियों होगा अन्यथा नुकसान नहीं पहुँचा।
- फिर भी, RAID एक बैकअप नहीं है । आपके पास अपना क़ीमती सामान भी कहीं और संग्रहित होना चाहिए ।
- पहले सभी आस-पास के संस्करणों (विभाजन तालिकाओं, एन्क्रिप्शन, lvm) का आकार बदलें और सत्यापित करें।
- हार्डवेयर RAID कॉन्फ़िगरेशन बदलने के बाद, linux नए अधिकतम आकार को तुरंत स्वीकार या नहीं कर सकता है।
$ cat /proc/partitions
यदि आवश्यक हो तो जाँच करें और रिबूट करें ।
हाल ही में स्थिर कर्नेल और e2fsprogs का उपयोग करें
- सुनिश्चित करें (जांचें
uname -r
) कि आप एक कर्नेल चला रहे हैं जो 64bit ext4 फाइल सिस्टम को ठीक से संभाल सकता है - आप 4.4.x
कर्नेल या बाद में (डिफ़ॉल्ट Ubuntu 16 और ऊपर) का उपयोग करना चाहते हैं ।
कम से कम संस्करण के e2fsprogs प्राप्त करें 1.43
Ubuntu 16.04
(2016-04-21) के साथ जारी किया गया था e2fsprogs 1.42.12
(2014-08-25)
e2fsprogs 1.43
(2016-05-17) एक्स्ट्रेस एड्रेस साइज को अपग्रेड करने में सक्षम पहली रिलीज है।
Ubuntu 18.04
(2018-04-26) जहाजों के साथ e2fsprogs 1.44.x
(अच्छा!)
यदि आप चालू हैं 16.04
और नए उबंटू रिलीज़ के लिए अपग्रेड नहीं कर सकते हैं, तो आपको स्रोत पैकेज समर्थन को सक्षम करना होगा और मैन्युअल रूप से एक नया संस्करण स्थापित करना होगा:
$ resize2fs
# if this prints version 1.43 or above, continue to step 1
$ sudo apt update
$ sudo apt install git
$ sudo apt build-dep e2fsprogs
$ cd $(mktemp -d)
$ git clone -b v1.44.2 https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git e2fsprogs && cd e2fsprogs
$ ./configure
$ make
$ cd resize
$ ./resize2fs
# this should print 1.43 or higher
# if this prints any lower version, panic
# use `./resize2fs` instead of `resize2fs` for the rest of the steps
आकार बदलें
चरण 1: फ़ाइल सिस्टम को ठीक से umount करें
$ sudo umount /dev/mapper/target-device
चरण 2: त्रुटियों के लिए फाइल सिस्टम की जाँच करें
$ sudo e2fsck -fn /dev/mapper/target-device
चरण 3: फ़ाइल सिस्टम में 64 बिट समर्थन सक्षम करें
परामर्श करें man tune2fs
और man resize2fs
- आप कुछ फाइल सिस्टम झंडे को बदलने के साथ हो सकते हैं।
$ sudo resize2fs -b /dev/mapper/target-device
एक विशिष्ट HDD RAID पर, यह उच्च IO और CPU लोड के 4 मिनट लेता है।
चरण 4: फ़ाइल सिस्टम का आकार बदलें
$ sudo resize2fs -p /dev/mapper/target-device
यदि आप कमांड लाइन पर एक आकार पास नहीं करते हैं, तो resize2fs "सभी उपलब्ध जगह को विकसित करें" मानता है - यह आमतौर पर वास्तव में वही है जो हम चाहते हैं। -p
ध्वज सक्षम प्रगति सलाखों - लेकिन उन केवल कुछ प्रारंभिक कदम के बाद प्रदर्शित करते हैं।
एक विशिष्ट HDD RAID पर, यह उच्च IO और CPU लोड के 4 मिनट लेता है।
फिर से सत्यापित करें
फाइलसिस्टम को फिर से जांचें
$ sudo e2fsck -fn /dev/mapper/target-device
नए संस्करणों के e2fsck टाइमस्टैम्प या उन पेड़ों को ठीक करने का सुझाव दे सकते हैं जो पिछले संस्करणों ने बुरी तरह से संभाले थे। यह किसी भी गंभीर मुद्दे का संकेत नहीं है और आपने इसे अभी या बाद में ठीक करने के लिए चुना है।
यदि त्रुटियां होती हैं, तो घबराएं नहीं और वॉल्यूम पर लिखने का प्रयास न करें ; फाइलसिस्टम के व्यापक ज्ञान के साथ किसी से परामर्श करें, क्योंकि आगे के संचालन से डेटा नष्ट हो जाएगा!
यदि कोई त्रुटि नहीं होती है, तो डिवाइस को रिमाउंट करें:
$ sudo mount /dev/mapper/target-device
सफलता!
उन्नत फ़ाइल सिस्टम के निरंतर संचालन के लिए आपको e2fsprogs के किसी भी गैर-उबंटू संस्करण की आवश्यकता नहीं होगी - कर्नेल अभी कुछ समय के लिए उन का समर्थन करता है। केवल अपग्रेड शुरू करना आवश्यक था।
संदर्भ के लिए, एक समान त्रुटि संदेश है mke2fs प्रिंट करेगा यदि इसे अनुचित विकल्पों के साथ एक विशाल उपकरण बनाने के लिए कहा जाए:
$ mke2fs -O ^64bit /dev/huge
mke2fs: Size of device (0x123456789 blocks) is too big to be expressed in 32 bits using a blocksize of 4096.