मैं 16TB सीमा से परे ext4 विभाजन का आकार कैसे बदल सकता हूं?


26

जब 64bit ध्वज के बिना बनाया गया था और पुराने ext4 विभाजन का आकार बदलने का प्रयास, resize2fs 1.42 अगर नया आकार 16TiB से अधिक है या विफल हो जाएगा।

$ resize2fs -p /dev/mapper/target-device
resize2fs: New size too large to be expressed in 32 bits

मैं फ़ाइलों को किसी बाहरी माध्यम में कॉपी नहीं करना चाहता। मैं डेटा हानि का जोखिम भी नहीं उठाना चाहता। मैं सुरक्षित रूप से वॉल्यूम का आकार कैसे बदल सकता हूं?

जवाबों:


46

आप एक फ़ाइल सिस्टम का आकार बदलने का प्रयास कर रहे हैं जो -O 64bitविकल्प के डिफ़ॉल्ट होने से पहले बनाया गया था । अपने एक्सट्रीम फाइलसिस्टम को 64 बिट पतों पर अपग्रेड करना संभव है, जिससे यह काफी बड़ा हो सकता है (16 TiB के बजाय 1024 PiB) वॉल्यूम।

अपने लक्ष्य उपकरण को कहा जाता है /dev/mapper/target-device, यह वही है जो आपको करने की आवश्यकता है:

आवश्यक शर्तें

  1. वॉल्यूम का यह आकार RAID द्वारा समर्थित होना चाहिए। नियमित रूप से डिस्क त्रुटियों होगा अन्यथा नुकसान नहीं पहुँचा।
  2. फिर भी, RAID एक बैकअप नहीं है । आपके पास अपना क़ीमती सामान भी कहीं और संग्रहित होना चाहिए
  3. पहले सभी आस-पास के संस्करणों (विभाजन तालिकाओं, एन्क्रिप्शन, lvm) का आकार बदलें और सत्यापित करें।
  4. हार्डवेयर RAID कॉन्फ़िगरेशन बदलने के बाद, linux नए अधिकतम आकार को तुरंत स्वीकार या नहीं कर सकता है। $ cat /proc/partitionsयदि आवश्यक हो तो जाँच करें और रिबूट करें ।

हाल ही में स्थिर कर्नेल और e2fsprogs का उपयोग करें

  1. सुनिश्चित करें (जांचें uname -r) कि आप एक कर्नेल चला रहे हैं जो 64bit ext4 फाइल सिस्टम को ठीक से संभाल सकता है - आप 4.4.xकर्नेल या बाद में (डिफ़ॉल्ट Ubuntu 16 और ऊपर) का उपयोग करना चाहते हैं ।
  2. कम से कम संस्करण के 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.

1
यह सही है। मैं जोड़ना चाहता हूँ कि Redhat (इस प्रकार RHEL, Centos, आदि) XFS को अपने इंस्टॉलर में X4 से अधिक पसंद करते थे जब एक फ़ाइल सिस्टम को 16TB पर विभाजित करते हैं, और अब डिफ़ॉल्ट फ़ाइल सिस्टम के रूप में XFS को एकमुश्त पसंद करते हैं।
डियाब्लो-डी 3

हां, रेडहैट वर्ल्ड में अभी भी सबसे पुरानी गुठली महत्वपूर्ण है, इसमें 64bit ext4 के लिए स्थिर समर्थन शामिल नहीं है। Afaik Ubuntu कई लाइनक्स गुरुओं के साथ जाता है, ext4 को btrfs द्वारा प्रतिस्थापित किया जा रहा है - हालांकि ext4 अब सुविधाओं में btrfs के करीब है, मेरा मानना ​​है कि btrfs डिज़ाइन में अधिक सुरुचिपूर्ण है और शायद कीड़े भी कम हैं।
चिंता

2
btrfs उत्पादन के लिए तैयार नहीं है, और कभी भी उत्पादन के लिए तैयार नहीं हो सकता है, क्योंकि ओरेकल ने इसका विकास बैक बर्नर पर रखा है। मेरी व्यक्तिगत राय है कि अगर आपको फ़ाइल सिस्टम जटिलता के उस स्तर की आवश्यकता है, तो अपने वास्तविक डेटा भंडारण की ज़रूरतों के लिए ZFS का उपयोग करने के साथ संयुक्त एक छोटे 8GB XFS रूट का उपयोग करें।
डियाब्लो-डी 3

0

यह हाल ही में मेरे साथ हुआ, एक उबुन्टु १ ,.०४ के साथ, जो १६.०४ उबुन्टु के साथ शुरू में स्थापित होने के बाद अद्यतन किया गया था ... भंडारण सरणी (/ देव / sdb) को शुरू में दो १४ टीबी विभाजन में विभाजित किया गया था, और वह विस्तार करना चाहता है 28 टीबी के लिए पहला विभाजन कि समस्या हुई।

मुझे resize2fs का नया संस्करण डाउनलोड करने की आवश्यकता नहीं थी क्योंकि यह बहुत हाल ही में था।

# resize2fs 
resize2fs 1.44.1 (24-Mar-2018)

केवल समस्या 64-बिट विभाजन 1 को बदलने की थी, जिसे 32 बिट्स में स्वरूपित किया गया था ... इसके बजाय रीडर को ट्यून 2 एफ के प्रलेखन से परामर्श करने के लिए आमंत्रित करने के बजाय (जैसा कि एनेक्स बताता है), मैं एक वास्तविक उदाहरण प्रस्तुत करता हूं!

# tune2fs -O 64bit /dev/sdb1
tune2fs 1.44.1 (24-Mar-2018)
Please run "resize2fs -b /dev/sdb1" to enable 64-bit mode.

# resize2fs -b /dev/sdb1
resize2fs 1.44.1 (24-Mar-2018)
Convert the file system to 64 bits.
The file system on /dev/sdb1 now has a size of 3662109119 blocks (4k).

अंत में, हम डिस्क विभाजन को बड़ा करते हैं!

# resize2fs /dev/sdb1
resize2fs 1.44.1 (24-Mar-2018)
Resizing the file system on /dev/sdb1 to 7324303099 (4k) blocks.
The file system on / dev / sdb1 now has a size of 7324303099 blocks (4k).
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.