बैच मोड में भाग का उपयोग करते हुए, सभी असंबद्ध स्थान का उपयोग करने के लिए ऑटो अंतिम विभाजन का विस्तार करता है


20

छोटी कहानी, मुझे यह सब स्वतः बूट (एम्बेडेड सिस्टम) पर करने की आवश्यकता है।

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

जब मैं अपनी डिस्क पर मुक्त स्थान देखता हूं तो मुझे यहां क्या मिलता है।

> parted /dev/sda print free
Model: Lexar JumpDrive (scsi)
Disk /dev/sda: 32.0GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name     Flags
        17.4kB  1049kB  1031kB  Free Space
 1      1049kB  25.3MB  24.2MB  fat16        primary  legacy_boot
        25.3MB  26.2MB  922kB   Free Space
 2      26.2MB  475MB   449MB   ext4         primary
 3      475MB   1549MB  1074MB  ext4         primary
        1549MB  32.0GB  30.5GB  Free Space

मुझे बाइट्स की N (30.5GB) संख्या से विभाजन 3 का विस्तार करने की आवश्यकता है

बिना किसी संकेत के, मैं यह कदम अपने आप कैसे निष्पादित करूं? यह 3 डी विभाजन के बाद उपलब्ध स्थान के एक गतिशील आकार के साथ काम करने की आवश्यकता है।


एक कोशिश के बिना स्क्रिप्ट जाने के लिए तैयार प्राप्त करने की उम्मीद नहीं है! तो क्या आप हमें दिखा सकते हैं कि आपने अब तक क्या प्रयास किया? विभाजन के दौरान एक और चीज जिसे आप आकार दे रहे हैं, उसे ऑपरेशन के दौरान माउंट नहीं किया जाना चाहिए ....
लूसियानो एंड्रेस मार्टिनी

मैंने resizepartकमांड की कोशिश की है , और यह काम करता है, लेकिन इसके लिए एक सटीक आकार की आवश्यकता होती है। मुझे इसे गतिशील बनाने की आवश्यकता है।
पॉल नोपफ

resize2fsहो सकता है कि मैं क्या देख रहा हूँ। linux.die.net/man/8/resize2fs
पॉल

जवाबों:


22

के वर्तमान संस्करणों में parted, resizepartविभाजन के लिए काम करना चाहिए ( जैसे या चीजों को partedसमझता है , उत्तरार्द्ध को सेमीलाइन पर पार्सिंग विकल्पों को रोकने की आवश्यकता है)। सही मूल्य आप उपयोग कर सकते हैं निर्धारित करने के लिए , । फाइलसिस्टम के लिए बाद में आता है।100%-1s--unit sprint freeresize2fs


पुराने संस्करणों में partedएक resizeकमांड था जो विभाजन और फाइल सिस्टम दोनों को एक बार में बदल देगा, इसके लिए भी काम किया vfat

कोबो एडर मॉडिफिकेशन में मैंने आंतरिक मेमोरी के 3 डी विभाजन को अधिकतम करने के लिए इसका उपयोग किया है: (यह नेत्रहीन रूप से 4 डी विभाजन और एमएसडोस टेबल और चीजों के होने का अनुमान लगाता है)

start=$(cat /sys/block/mmcblk0/mmcblk0p3/start)
end=$(($start+$(cat /sys/block/mmcblk0/mmcblk0p3/size)))
newend=$(($(cat /sys/block/mmcblk0/size)-8))

if [ "$newend" -gt "$end" ]
then
    parted -s /dev/mmcblk0 unit s resize 3 $start $newend
fi

तो /sys/block/.../अगर आप कर्नेल इसका समर्थन करते हैं, तो आप मान भी प्राप्त कर सकते हैं । लेकिन partedहटाया resizeआदेश इसलिए अब आप दो कदम करना है, है resizepartविभाजन विकसित करने के लिए, और जो उपकरण आपके फाइल सिस्टम है कि विकसित करने के लिए, की तरह प्रदान करता है resize2fsके लिए ext*


यही वह है जिसकी तलाश में मैं हूं। आपकी सहायताके लिए धन्यवाद!
पॉल नोपफ

साइड सवाल, आखिर में 8 बाइट्स के साथ क्या है?
पॉल नोपफ

किसी एकल क्षेत्र के आकार बदलने से बचें ... आपको -40 या कुछ (डिस्क के अंत में GPT बैकअप हेडर) को बदलना होगा।
ठंढकुट्ज़

partedकमांड लाइन से स्वचालित विस्तार का समर्थन नहीं करता है ? क्योंकि, यह अंतःक्रियात्मक रूप से इसका समर्थन करता है । यदि अंतःक्रियात्मक रूप से चलाया जाता है, तो यह पूछेगा कि क्या आप डिस्क (प्रकार fix) के आकार से मेल खाने के लिए GPT विभाजन तालिका को ठीक करना चाहते हैं , और फिर आप चला सकते हैं resizepart 3 -1। मैं यह जानने की कोशिश कर रहा हूं कि कमांड लाइन से ऐसा करने के लिए इसे कैसे प्राप्त करें।
हार्वे

इतनी जल्दी नहीं: पार्टिशन 3.0 में रिसाइज कमांड को हटा दिया गया है। Sfdisk या gparted आज़माएँ।
ग्रेग

16

स्क्रिप्ट को ठीक से असमर्थ होने के कारण (इसने पुष्टिकरण के लिए कहा क्योंकि विभाजन आरोहित था और अन्य उत्तरों के विपरीत जो मुझे मिला -1sया समझ में नहीं आया था 100%), मुझे सिर्फ ग्रैपपार्ट टूल मिला है जो ठीक यही करता है।

उपयोग सरल है: growpart /dev/sda 3(और तब resize2fs /dev/sda3, या प्रयुक्त फाइल सिस्टम प्रकार के लिए एक और उपयुक्त कमांड)।

डेबियन और उबंटू में इसे क्लाउड-गेस्ट-बर्तन के रूप में पैक किया जाता है ।


1
यह सबसे सुविधाजनक तरीका है जो मैं अभी इस के लिए खोज सकता हूं। यह अद्भुत काम किया।
सेबीएफ

यह मेरे लिए समाधान था - फ़ाइल सिस्टम के रूप में ext4 को पसंद नहीं किया गया था, और फ़ाइल सिस्टम का आकार बदलने के प्रयास से बचने का कोई तरीका नहीं लग रहा था ...
Antti Haapala

उबंटू 18.04 के लिए काम नहीं कर रहा है
ड्रीमफ्लैशर

@DreamFlasher मैं यह नहीं बता सकता कि यह आपके लिए काम क्यों नहीं करता। जहां तक ​​मैं देख सकता हूं कि आप केवल क्लाउड-गेस्ट-यूटिल्स पैकेज को स्थापित कर सकते हैं और चूंकि यह केवल एक ही फ़ंक्शन है जो कि उत्पादकों द्वारा प्रदान किया जाता है, यह तब तक काम करना चाहिए जब तक कि कोई बग न हो, यह गलत तरीके से उपयोग किया जाता है या इसके नियंत्रण से बाहर कुछ गलत हो रहा है। ध्यान दें कि अंतिम तर्क (उदाहरण में 3) को आकार दिया जाने वाला विभाजन है, जिसे 1 से गिना जा रहा है, और विभाजन के ठीक बाद पर्याप्त जगह उपलब्ध होने की जरूरत है ताकि इसे इस तरह से बदला जा सके।
इवो ​​स्मट्स

7

ऐसा करने का सही तरीका इस तथ्य का उपयोग करना है कि बिदाई में प्रतिशत की धारणा है। इसलिए

parted /dev/sda resize 3 100%

1
पुराना, उबंटू 18.04 और बाद के साथ काम नहीं कर रहा है
ड्रीमफ्लैशर

थोड़ा आकार परिवर्तन आदेश 3 संस्करण के साथ चला गया है, आप अब resizepart कमांड का उपयोग करने के लिए है और फिर अलग से अंतर्निहित फ़ाइल सिस्टम या PV का उपयोग करें यदि वह है जो आप उपयोग कर रहे हैं। Ext4 के लिए कमांड resize2fs है, या XFS के लिए यह xfs_growfs है। दोनों जो सामान्य रूप से तब किए जाते हैं जब फ़ाइल सिस्टम माउंट होता है और तर्क दोनों मामलों में माउंट बिंदु होता है।
जोनाथन बज़र्ड

0

उबंटू 18.04 में, मैं निम्नलिखित स्क्रिप्ट के साथ असंगत स्थान को भरने के लिए आकार बदलने में सक्षम हूं:

sudo parted -s /dev/sdb "resizepart 2 -1" quit
sudo mount -av
sudo umount /dev/sdb2
sudo mount /dev/sdb2 /mnt
sudo resize2fs /dev/sdb2

आकार बदलने से पहले माउंट करना आवश्यक नहीं हो सकता है। मैंने इसे उपयोगकर्ता इनपुट के लिए resize2fs की एक क्वेरी को दबाने के लिए किया था।

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