सवाल मैं रनटाइम पर एक बाहरी रूट विभाजन का आकार कैसे बदल सकता हूं?


मैं रनटाइम पर सिस्टम के रूट विभाजन के आकार को कैसे बढ़ा सकता हूं?

मेरे पास एक विभाजन है जो रूट विभाजन (जिसे ext4 भी है) के बाद आवंटित नहीं किया गया है, मैं सर्वर को बंद किए बिना रूट विभाजन को आवंटित स्थान पर उस आवंटित स्थान को कैसे जोड़ सकता हूं?


194
2018-01-30 17:23


मूल


मुझे मिट्टी में एक छड़ी की तरह लगने से नफरत है, लेकिन इसमें काफी जोखिम है? ऐसा क्यों होना चाहिए? अपटाइम मुख्य बाधा है? - DevNull
आप बाईं ओर एक विभाजन का आकार बदल नहीं सकते हैं, क्योंकि यह वास्तव में एक कदम होगा। - Zaz
ऑनलाइन ext4 parititions के आकार में वृद्धि आसान है। मुश्किल हिस्सा कम हो जाएगा (आपका शीर्षक "आकार बदलने" के बारे में है)। रूट विभाजन पर किसी भी हेरफेर से रुचि रखने वाले लोगों के लिए (रन, सिकुड़ें, फाइल सिस्टम, डिवाइस बदलें) रनटाइम पर मेरे उत्तर से परामर्श लेना चाहिए: askubuntu.com/a/728141/21888 - vaab


जवाब:


जीयूआई (उबंटू 14.04 और बाद में): GParted v0.17 और बाद में इसके लिए एक अच्छा जीयूआई प्रदान करते हैं। (पुराने संस्करण आरोहित विभाजन का आकार बदलने से इनकार कर देंगे)।

कमांड लाइन (कोई उबंटू संस्करण): इसके लिए तीन कदम हैं।

चरण 1। विभाजन पहले आकार बदलना चाहिए। यदि आप एलवीएम का उपयोग कर रहे हैं, तो यह आसान है, और आप संभवतः आगे बढ़ने के बारे में जानते हैं। यदि आप क्लासिक विभाजन का उपयोग कर रहे हैं, तो यह थोड़ा और जटिल है, और हो सकता है रीबूट की आवश्यकता होती है (हालांकि आपको किसी अन्य सिस्टम या लाइव सीडी को बूट करने की आवश्यकता नहीं है)।

मैं यह कैसे करता हूं: उपयोग करें fdisk विभाजन को पहले हटाने के लिए (विचार यह है कि डिस्क पर डेटा संरक्षित किया जाएगा), फिर ध्यान से उसी स्थिति में बड़े आकार के साथ इसे फिर से बनाएं।

उदाहरण:

$ sudo fdisk /dev/sda

Command (m for help): p

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     9437183     4717568   83  Linux

Command (m for help): d
Selected partition 1

Command (m for help): p

   Device Boot      Start         End      Blocks   Id  System

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4, default 1): 1
First sector (2048-10485759, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-10485759, default 10485759):
Using default value 10485759

Command (m for help): p

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048    10485759     5241856   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

फिर, यह महत्वपूर्ण है कि नया विभाजन पुराने ब्लॉक के समान ब्लॉक पर शुरू होता है। आईडी को भी मिलना चाहिए (लिनक्स सिस्टम के लिए 83)। थोड़ी सी टाइपो पर अपना सभी डेटा खोने के लिए तैयार रहें।

सुरक्षित पक्ष पर रहने के लिए, आप बूट ध्वज को भी पुनर्स्थापित कर सकते हैं (जो विकिपीडिया के अनुसार दबाकर कुछ कंप्यूटरों पर अभी भी जरूरी है) a

यदि आपका स्वैप विभाजन रास्ते में है तो क्या करना है इसके लिए टिप्पणी अनुभाग देखें।

अब तक यह स्पष्ट होना चाहिए कि लोग लाइव सीडी का उपयोग करने की सलाह क्यों देते हैं। ;-)

चरण 2। जैसा fdisk मददगार आपको याद दिलाता है, आगे बढ़ने से पहले आपको विभाजन तालिका को पुनः लोड करना होगा। सबसे सुरक्षित तरीका बस रीबूट करना है; लेकिन आप भी उपयोग कर सकते हैं partprobe या kpartx  (अधिक जानकारी)

चरण 3। एक बार विभाजन का आकार बदल जाने के बाद और विभाजन तालिका पुनः लोड हो जाने पर, यह चलने का एक साधारण मामला है resize2fs फ़ाइल सिस्टम पर, और आप रूट विभाजन के रूप में आरोहित होने पर भी ऐसा कर सकते हैं।

उदाहरण:

$ sudo resize2fs /dev/sda1

170
2018-04-06 14:23



यह मेरे लिए पूरी तरह से काम किया। हालांकि मैंने अतिरिक्त रूप से यह सुनिश्चित किया कि बूट ध्वज मूल स्थिति है। - Augustus Kling
@ jbo5112: जैसा fdisk कहते हैं, partprobe या kpartx रीबूट के बजाय काम कर सकते हैं; यह भी देखें यह प्रश्न। भले ही आप रीबूट करते हैं, फिर भी डाउनटाइम की बात होने पर समाधान लाइव सीडी का उपयोग करने के लिए अभी भी बेहतर है, जहां वर्चुअल मशीन के लिए एक साधारण रीबूट 10 से कम हो सकता है। ऑपरेटर समय में यह भी तेज़ है, यही कारण है कि मैं आमतौर पर इस दृष्टिकोण का उपयोग करता हूं। :) - Søren Løvborg
@ रेमंड: अगर मेमोरी प्रेशर की अनुमति देता है (देखें free -h), स्वैप अक्षम करें (swapoff /dev/sda2), विभाजन तालिका को बदलें (स्वैप विभाजन को हटाने और पुनर्निर्माण सहित) और या तो 1) रीबूट या 2) विभाजन तालिका को पुनः लोड करें और swapon फिर। (अगर स्मृति अस्थायी रूप से स्वैप अक्षम करने के लिए बहुत तंग है, तो भी आप अभी भी बना और सक्षम कर सकते हैं नया स्वैप विभाजन (/dev/sda3), फिर स्वैपऑफ sda2; लेकिन फिर आपको अपडेट करना होगा /etc/fstab नए स्वैप डिवाइस नाम के साथ।) - Søren Løvborg
यदि आप वीएमवेयर का उपयोग कर रहे हैं और डिस्क के आकार को बढ़ा चुके हैं, तो आपको फाइल सिस्टम को पुन: स्कैन करने के लिए सुडो एलएसडब्ल्यू-सी डिस्क चलाने की आवश्यकता होगी ताकि वीएम बड़े ड्राइव को पहचान सके। फिर उपरोक्त निर्देशों का पालन करें। - Guy
सिकुड़ने के बारे में क्या? - Aaron Franke


एक ext4 फाइल सिस्टम के ऑनलाइन आकार का आकार बदलना संभव है, भले ही यह आपका रूट विभाजन हो। उपयोग resize2fs आदेश।

sudo resize2fs /dev/sda1

संपादित करें: ऑन-लाइन सिकुड़ने की अनुमति नहीं है:

root@brunojcm-htpc:/home# resize2fs /dev/sda5 2654693
resize2fs 1.42 (29-Nov-2011)
Filesystem at /dev/sda5 is mounted on /; on-line resizing required
resize2fs: On-line shrinking not supported

109
2018-03-02 10:50



से man resize2fs: The resize2fs program does not manipulate the size of partitions. If you wish to enlarge a filesystem, you must make sure you can expand the size of the underlying partition first. This can be done using fdisk(8) by deleting the partition and recreating it with a larger size or using lvextend(8),if you're using the logical volume manager lvm(8). यह सवाल आकार बदलने के बारे में है विभाजन, नहीं है फाइल सिस्टम। भेद सूक्ष्म लेकिन बहुत महत्वपूर्ण है। - Eliah Kagan
आप रूट पार्टियन को हटाने के लिए fdisk का उपयोग कर सकते हैं और फिर उसी प्रारंभिक ब्लॉक पर इसे फिर से बना सकते हैं। fdisk परिवर्तन लिखेंगे, लेकिन यह रीबूट के बाद तक प्रभावी नहीं होगा। रीबूट के बाद आप भाग को भरने के लिए डिस्क भेजने के लिए resize2fs प्रोग्राम का उपयोग कर सकते हैं। - James Becwar
मैंने अभी एक ext4 रूट विभाजन का आकार बदल दिया है। इसलिए मैं इसकी पुष्टि कर सकता हूं कि यह संभव है। लेकिन resize2fs के पैरामीटर के रूप में / dev / sda * को पास करने के बजाय, आपको लॉजिकल वॉल्यूम नाम पास करना होगा। - CDR
मुझे पहले पैराग्राफ मिलते हैं resize2fs manpage शुरुआती प्रश्न के लिए सबसे दिलचस्प: The resize2fs program will resize ext2, ext3, or ext4 file systems. It can be used to enlarge or shrink an unmounted file system located on device. If the filesystem is mounted, it can be used to expand the size of the mounted filesystem, assuming the kernel supports on-line resizing. (As of this writing, the Linux 2.6 kernel supports on-line resize for filesystems mounted using ext3 and ext4.). - mo'
कृपया साथ बकवास मत करो fdisk कब growpart यह आपके लिए बहुत आसानी से करेगा। - STRML


एक आसान समाधान - उपयोग करें growpart <device> <partition>:

growpart /dev/xvda 1  # Grows the partition; note the space
resize2fs /dev/xvda1  # Grows the filesystem

हमेशा की तरह, अपनी विभाजन तालिका का बैक अप लें (sfdisk -d /dev/xvda > partition_bak.dmp) शायद ज़रुरत पड़े।


22
2017-07-18 13:26



सिकुड़ने के बारे में क्या? - Aaron Franke
इस विधि का उपयोग करने की उम्मीद कर रहा था, लेकिन मिला sfdisk: /dev/nvme0n1p5: does not contain a recognized partition table (खिड़कियों के साथ दोहरी बूट का उपयोग कर) - monkut
ऑनलाइन करने के लिए हटना संभव नहीं है। मैं उपयोग करने की सलाह देते हैं gparted इसके लिए। - STRML
यह रूट विभाजन और मेरे एडब्ल्यूएस वीएम के फाइल सिस्टम का आकार बदलने के लिए एकदम सही था। चीयर्स। - MetaFight
growpart क्लाउड-यूटिल का हिस्सा है। यदि आपने इंस्टॉल नहीं किया है, तो आप इसके साथ इंस्टॉल कर सकते हैं apt-get install cloud-utils - klor


आप भी इसका उपयोग कर सकते हैं GParted - जब तक आप जिस विभाजन का आकार बदल रहे हैं वह वह नहीं है जिसे आपने बूट किया है - अन्यथा मैं सुझाव देता हूं लाइव सीडी विकल्प newbies के लिए कुछ आसान है।

GParted मूल रूप से सभी चरणों को करता है - बस एक जीयूआई के आधार पर।


8
2017-09-30 11:34



मैंने उबंटू 12.04 लाइव सीडी के साथ अपना सिस्टम बूट किया और मैंने GParted के साथ ext4 विभाजन का आकार बदल दिया। मेरे लिए अच्छा काम किया। वैसे भी, इस ऑपरेशन से पहले मैंने अपने सभी महत्वपूर्ण डेटा का बैक अप लिया। - StandDuPp
मुझे लगता है, gparted विभाजन unmounted की जरूरत है। लेकिन मैं गलत हो सकता है। - Nick
प्रश्न स्पष्ट रूप से उनके द्वारा चुने गए विभाजन के बारे में है, और एक लाइव सीडी बूट करने के लिए मशीन को पुनरारंभ करने की आवश्यकता है। -1 - wjandrea


हाँ, आप ऑनलाइन रूट विभाजन को छोटा / स्थानांतरित / बढ़ा सकते हैं बिना किसी रीबूट के (न ही livecd, nor usbkey): इस उत्तर से परामर्श लें। यह बहुत अच्छी तरह लिखित और पालन करने में आसान है, हालांकि काफी लंबा और थोड़ा जोखिम भरा है। इसलिए यदि आप केवल अपने ext4 विभाजन को बढ़ाना चाहते हैं, तो आप पारंपरिक कामकाजी से चिपके रह सकते हैं resize2fsसमाधान की।

सामान्य समाधान जो मैंने किया है, उदाहरण के लिए किसी भी प्रकार के समर्पित या वीपीएस समाधान पर काम करेगा।

TLDR; इस समाधान का तात्पर्य है pivot_root सेवा मेरे tmpfs तो तुम कर सकते हो umount सुरक्षित रूप से आपका रूट विभाजन लाइव और इसके साथ बेवकूफ है। एक बार किया, आप करेंगे pivot_root अपने नए रूट विभाजन पर वापस।

यह रूट फ़ाइल सिस्टम पर किसी भी हेरफेर की अनुमति देता है (इसे स्थानांतरित करें, फाइल सिस्टम बदलें, इसकी भौतिक डिवाइस बदल रहा है ...)।

प्रक्रिया में कोई रीबूट की आवश्यकता नहीं है, और यह सीमा को बाईपास करने की अनुमति देता है का resize2fs  सिकुड़ने में सक्षम नहीं है  ext4 विभाजन।

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

ध्यान दें: बेशक अगर आप अपना विभाजन बढ़ाना चाहते हैं, तो सरल resize2fs जैसा कि कई स्थानों और अन्य उत्तरों में बताया गया है उतना ही पर्याप्त होगा।


8
2018-02-01 02:08



मैं ज्यादातर लोगों के बारे में सोचता हूं, एक बार जब आप रूट विभाजन तक पहुंचने वाले सभी प्रोग्राम और सेवाओं को रोक देते हैं, तो आपने मशीन को रीबूट कर दिया होगा। सिकुड़ने / आगे बढ़ने के लिए, यह अभी भी तेज हो सकता है कि एक लाइव सीडी का उपयोग करके, लेकिन बढ़ने के लिए (अब तक का सबसे आम कार्य, और ओपी ने किस बारे में पूछा), ऐसे तरीके हैं जिनमें अधिकांश सिस्टम का अस्थायी शटडाउन शामिल नहीं है । - Søren Løvborg
@ सोरेन लोबोर्ग: आप उन कोर सेवाओं को पुनरारंभ कर सकते हैं जिन्हें पूर्ण प्रक्रिया करते समय निरंतर उत्पादन की आवश्यकता होती है। कई विन्यास हैं जहां आप लाइव सीडी (वीपीएस इंस्टेंस, समर्पित सर्वर ...) या परिस्थितियों को नहीं डाल सकते हैं जहां आप विशिष्ट कारणों से किसी भी रीबूट से बचना चाहते हैं। मूल प्रश्न के शीर्षक में "आकार बदलने" का उल्लेख है, जो लोगों को ऑनलाइन विभाजन को कम करने की तलाश में आकर्षित करता है। ** कोई अन्य समाधान ext4 ऑनलाइन को कम करने की अनुमति देता है। ** यह समाधान जोखिम भरा, जटिल है, लेकिन सभी का सबसे शक्तिशाली और यह दूसरों की कमियों को भरता है। - vaab


जड़ माउंट होने पर बस लाइव सिस्टम पर ext4 रूट विभाजन का आकार बदलना समाप्त हो गया।

[root@habib i686]# resize2fs /dev/vg_habib/lv_root
resize2fs 1.42 (29-Nov-2011)
Filesystem at /dev/vg_habib/lv_root is mounted on /; on-line resizing required
old_desc_blocks = 4, new_desc_blocks = 10
Performing an on-line resize of /dev/vg_habib/lv_root to 38427648 (4k) blocks.
The filesystem on /dev/vg_habib/lv_root is now 38427648 blocks long.

[root@habib i686]# 

5
2017-12-04 22:40





मैंने अभी सफलतापूर्वक यह किया है umount, pivot_root, या उबंटू 16.04, 4.4.0 कर्नेल पर विभाजित 3.2 का उपयोग करके मुख्य विभाजन का अस्थायी निष्कासन। सतर्क रहने के लिए मैंने वर्चुअल कंसोल से वर्चुअल कंसोल से सबकुछ किया, नेटवर्किंग अक्षम कर दिया, और स्नैपशॉट को पहले ही मामले में लिया, लेकिन स्नैपशॉट की आवश्यकता नहीं थी, इसलिए मैं एसएसएच के माध्यम से और रनलेवल को बदलने के बिना भी ऐसा कर सकता था।

विभाजन का आकार निर्धारित करें: parted /dev/sda1 print | egrep "Disk.*GB"

वैकल्पिक रूप से नेटवर्किंग के बिना बहु-उपयोगकर्ता मोड पर स्विच करें (कंसोल से किया जाना चाहिए, एसएसएच नहीं):

runlevel     # remember the original runlevel
init 2

वैकल्पिक रूप से सावधान रहने के लिए एक वीएम स्नैपशॉट लें।

विभाजन का आकार बदलें:

parted
p
resizepart NUMBER SIZE
# answer "Yes" when asked about resizing a live partition.
q

फाइल सिस्टम का आकार बदलें: resize2fs /dev/sda1

अगर कुछ गलत हो जाता है, तो आप यहां अपना स्नैपशॉट बहाल कर सकते हैं। अगर सब ठीक हो गए, तो सामान्य रनलेवल (ऊपर प्राप्त) पर लौटें - आम तौर पर 5: init 5। इस बिंदु पर एक पूर्ण रीबूट करना बेहतर हो सकता है यह सुनिश्चित करने के लिए कि सब ठीक से वापस आ जाए (मेरे पास दिनांक / एनटीपी समस्या बाद में थी)।


1
2017-07-14 00:09





जैसा कि पहले बताया गया है:

  • रूट सिस्टम से लाइव का विस्तार करना संभव है। (कोई कठिनाई नहीं है, क्योंकि बूट खंड को स्थानांतरित नहीं किया जाना है)

  • एक लाइव रूट विभाजन को कम करने के लिए बाहरी बूट डिवाइस (लाइव सिस्टम सीडी / यूएसबी-स्टिक से बूट) से किया जाना चाहिए, जैसे कि कोई गलती है, मिस्चैच .. जो कुछ भी .. आपका सिस्टम लटकता है, उसे रीबूट करने की आवश्यकता होती है और अंत में नहीं सही ढंग से बूट करने में सक्षम।

किसी भी प्रकार का "लेकिन मैंने किया और यह काम करता है" शुद्ध भाग्य है।


0
2018-01-10 21:58