क्या LVM के साथ EXT4 वॉल्यूम को ऑन-लाइन करना संभव है?


47

आज मैंने अपनी मशीन पर OpenSUSE 12.3 (कर्नेल 3.7) के साथ यह कोशिश की:

# resize2fs /dev/mapper/system-srv 2G
resize2fs 1.42.6 (21-Sep-2012)
Filesystem at /dev/mapper/system-srv is mounted on /srv; on-line resizing required
resize2fs: On-line shrinking not supported

/dev/mapper/system-srv एक EXT4 वॉल्यूम है।

क्या यह वास्तव में असमर्थित है या मुझे कुछ याद आ रहा है?

जवाबों:


68

जैसा कि संदेश में कहा गया है, आप केवल ऑन-लाइन एक फाइल सिस्टम विकसित कर सकते हैं । यदि आप इसे सिकोड़ना चाहते हैं, तो आपको पहले इसे अनमाउंट करने की आवश्यकता होगी।

Ext4 फाइलसिस्टम अनुरक्षक के अनुसार , टेड त्सो:

क्षमा करें, ऑन-लाइन सिकुड़न समर्थित नहीं है।


12
यह अफ़सोस की बात है ...
एलिसिया

5
नीचे के साथ क्या है?
माइकल हैम्पटन

16
@ मिचेल हैम्पटन - मैसेंजर की शूटिंग करने वाले कुछ मोरन? : D
tink

2
वह दस वर्ष पहले था। क्या इसे अभी तक लागू किया गया है?
d पर

@ डुआन नं। यह कभी भी होने की संभावना नहीं है।
माइकल हैम्पटन

16

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

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

बेशक, यदि आप केवल अपने ext4 विभाजन को बढ़ाना चाहते हैं, तो आपको पारंपरिक कामकाजी resize2fsसमाधानों से चिपके रहना चाहिए ।

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

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

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

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


4
यह 'ऑनलाइन ग्रोथ' की तुलना में 'ऑनलाइन' नहीं है। सभी सेवाएं नीचे होनी चाहिए और आपका रूट फाइल सिस्टम अप्राप्य हो जाएगा। इस टिप्पणी में livecd या initramfs / rdshell दृष्टिकोण के साथ इसके विपरीत होने के लायक हो सकता है। मैं लोगों को इससे भ्रमित होने के लिए नफरत करता हूँ।
ब्रायन क्रिसमैन

2
@BrianChrisman यह वास्तव में एक गोटा है जो विलय को स्पष्ट करता है और मुझे आशा है कि मैंने अपनी पोस्ट में एक एडिट के साथ कवर किया है। प्रतिक्रिया के लिए बहुत धन्यवाद।
वाब

संदर्भित समाधान के बारे में मुझे जो पसंद है वह यह है कि यह 'लगभग ऑनलाइन' है। मैंने एक विशेष स्क्रिप्ट और टूल्स को ड्रैकुट कमांड में एन्कोडिंग करके इस विशेष कार्य को किया और परिणामी initramfs को kexec से लॉन्च किया। यदि यह प्रक्रिया के माध्यम से किसी तरह ssh सत्र को खुला रख सकता है, तो यह सबसे अच्छा होगा। मुझे लगता है कि यदि आप sshd और आवश्यक फ़ाइलों के साथ फेक रूट का निर्माण करते हैं, तो दूसरे पोर्ट पर एक और sshd शुरू करें (क्योंकि आप ssh'd हैं), तो आप दूसरे पोर्ट पर ssh कर सकते हैं और सिस्टम को लॉबोटोमाइज़ करने से पहले कनेक्टिविटी को सत्यापित कर सकते हैं।
ब्रायन क्रिसमैन

13

यदि मामला कंसोल के बिना रिमोट सर्वर है, तो आप रिबूट करते समय initramfs का उपयोग करके फाइल सिस्टम को सिकोड़ सकते हैं। आपको इनट्राम्राम्स में resize2fs जोड़ने और बढ़ते रूट से पहले इसे चलाने की आवश्यकता है।

डेबियन / उबंटू उदाहरण:

/ etc / initramfs- उपकरण / हुक / आकार (निष्पादन योग्य):

#!/bin/sh

set -e

PREREQS=""

prereqs() { echo "$PREREQS"; }

case $1 in
    prereqs)
        prereqs
        exit 0
    ;;
esac

. /usr/share/initramfs-tools/hook-functions

copy_exec /sbin/e2fsck
copy_exec /sbin/resize2fs

exit 0

/ etc / initramfs- उपकरण / स्क्रिप्ट / स्थानीय-प्रीमियर / आकार (निष्पादन योग्य)

#!/bin/sh

set -e

PREREQS=""

prereqs() { echo "$PREREQS"; }

case "$1" in
    prereqs)
        prereqs
        exit 0
    ;;
esac

/sbin/e2fsck -yf /dev/sda1
/sbin/resize2fs /dev/sda1 5G
/sbin/e2fsck -yf /dev/sda1

अब अपडेट-इनट्रामाफ़्स, रिबूट, चेक आकार चलाएं, इन लिपियों को हटा दें और फिर से अपडेट करें।

Drakut (Fedora, CentOS) के लिए एक ही तर्क (/usr/lib/dracut/modules.d) का उपयोग करें।

यह क्रिप्टिंग या मूविंग रूट्स के लिए बहुत उपयोगी है, जिसमें नए विभाजन के लिए कोई खाली स्थान उपलब्ध नहीं है।


2
यह एक आकर्षण की तरह काम करता है। ध्यान दें कि आपको -u विकल्प के साथ अपडेट-इनट्राम्राम्स चलाने की आवश्यकता है।
डायोमिडिस स्पिनेलिस

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