सवाल क्या एलवीएम के साथ एक EXT4 वॉल्यूम को कम करना संभव है?


आज मैंने ओपनएसयूएसई 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 मात्रा है।

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


44
2017-08-01 18:59


मूल




जवाब:


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

Ext4 फाइल सिस्टम रखरखाव के अनुसार, टेड Ts'o:

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


57
2017-08-01 19:04



वह अफसोस की बात है... - Alicia
डाउनवोट के साथ क्या है? - Michael Hampton♦
@ माइकल हैम्पटन - मैसेंजर शूटिंग कुछ मूर्ख? : डी - tink


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

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

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

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

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

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

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


13
2018-02-01 02:22



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


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

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

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

#!/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-tools / स्क्रिप्ट / स्थानीय-प्रीपेउंट / resizefs (निष्पादन योग्य)

#!/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

अब अद्यतन-initramfs चलाएं, रीबूट करें, आकार जांचें, इन स्क्रिप्ट को हटाएं और फिर से-intiramfs को हटा दें।

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

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


9
2017-12-19 10:47



यह एक आकर्षण की तरह काम करता है। ध्यान दें कि आपको -u विकल्प के साथ अद्यतन-initramfs चलाने की आवश्यकता है। - Diomidis Spinellis
ठंडा। मेरे मामले में मुझे भी जरूरी था update-grub। - Wojciech Kaczmarek