चलती / बूट और एमबीआर एक नई ड्राइव के लिए


11

मेरे पास दो हार्ड ड्राइव के साथ एक CentOS 6 सर्वर है। मेरी पुरानी 3TB ड्राइव मुझे कुछ मुद्दे दे रही है इसलिए मैं चीजों को एक नई ड्राइव पर ले जा रहा हूं। क्योंकि मेरे /और /homeविभाजन को LVM द्वारा प्रबंधित किया जाता है, इसलिए उन लोगों को नई ड्राइव पर स्थानांतरित करना आसान था। अब मैं अपने /bootविभाजन और MBR को आगे बढ़ाना चाहता हूं जिससे यह सब शुरू होता है।

मैंने अपनी नई ड्राइव पर एक ही आकार के विभाजन पर एक लाइव सीडी और rsyncedअपने /bootविभाजन को लोड किया । मैंने अपने MBR को निम्न आदेशों के साथ कॉपी करने का प्रयास किया:

dd if=/dev/sda of=mbrbackup bs=512 count=1
dd if=mbrbackup of=/dev/sdb bs=446 count=1

ऐसा करने के बाद मैंने रिबूट किया, अपने BIOS को बूट चक्र के दौरान पुरानी हार्ड ड्राइव को न देखने और केवल नई ड्राइव को देखने के लिए कहा था, लेकिन सभी के साथ मैं एक निमिष कर्सर था।

क्या मुझे यहाँ एक कदम याद आया? या कुछ और है जो मुझे चीजों को बूट करने के लिए करने की आवश्यकता है ताकि मैं अपनी पुरानी ड्राइव को पूरी तरह से हटा सकूं?

संपादित करें: मुझे लगता है कि rsync एक ड्राइव से दूसरे में / बूट विभाजन को कॉपी करने का तरीका नहीं है। इस गाइड के आधार पर , मैंने इसके बजाय डंप कमांड का उपयोग करने की कोशिश की। इस कमांड में मैंने अपने पुराने, अनमाउंट बूट विभाजन को अपने नए, खाली, माउंटेड बूट विभाजन में कॉपी किया।

dump -0f - /dev/sdaX | (cd /mnt/boot; restore -rf -) 

मुझे बूट पर ग्रब त्रुटि 15 मिल रही है जो कि ब्लिंकिंग कर्सर से बेहतर है, लेकिन मुझे नहीं पता कि यह किसी समाधान के करीब है।


नई ड्राइव पर ग्रब-इंस्टॉल क्यों नहीं?
फ्रॉस्टचुट्ज़

हर बार जब मैं ग्रब-स्थापित करते हुए थक जाता हूं तो मैंने बूटिंग को समाप्त कर दिया है और केवल ग्रब प्रॉम्प्ट प्राप्त कर रहा है।
13

जवाबों:


3

यदि दो हार्ड डिस्क एक ही आकार के हैं (या नया बड़ा है), तो आपने पुरानी डिस्क को नई डिस्क पर कॉपी क्यों नहीं किया? अर्थात

dd if=/dev/sda of=/dev/sdb

अब, यदि नया हार्ड-डिस्क बड़ा है, तो पार्टीशन आकार को पार्टेड या जिप्ट के साथ बदलें। यह सब एक लाइव सीडी / यूएसबी-स्टिक से बूट किया गया।


वे अलग-अलग आकार के हैं। 3tb सर्वर के लिए बस ओवरकिल था इसलिए मैं थोड़ा अधिक गति प्राप्त करने की उम्मीद कर 1tb रैप्टर में नीचे चला गया। बावजूद, क्लोनिंग की समस्या नहीं लगती है। कम से कम LVM भाग आसानी से चला गया और यह प्रतीत होता है कि बूट विभाजन पूरी तरह से मेरे पिछले डंप के साथ कॉपी किया गया है। अब मुझे लगता है कि समस्या किसी तरह मेरे ग्रब या एमबीआर से संबंधित है। मुझे लगता है कि समस्या यह है कि मुझे ग्रब 2 के बारे में पर्याप्त जानकारी नहीं है और इसे ठीक करने के लिए यह एलवीएम के साथ कैसे बातचीत करता है।
13

dd का उपयोग करना जो बिट कॉपी के लिए थोड़ा कर रहा है, विशेष रूप से डेटा माइग्रेशन करने का एक प्राचीन तरीका है जब डिस्क आकार अब टेराबाइट रेंज में हैं और अधिक बार वास्तविक डेटा की मात्रा कम नहीं होती है तो डिस्क पर 10 जीबी; बहुत सारे पुस्तकालयों के साथ SUSE का एक साफ ताजा इंस्टॉलेशन मुझे डिस्क पर लगभग 5GB चलाता है जिसे मैं एक फाइल में टार करता हूं और उस टार फाइल को इधर-उधर करने के लिए 8 जीबी मेमोरी स्टिक का उपयोग करता हूं, बूट पैंशन चाहे वह ईएफआई हो या एमबीआर केवल कुछ ही चलता है एमबी।
रॉन

यदि आप BIOS के बजाय EFI या UEFI का उपयोग कर सकते हैं, और GPT के बजाय GPT के माध्यम से EFI बूट पार्टीशन का उपयोग कर सकते हैं और dos बूट विभाजन यह चीजों को मूल रूप से आसान बनाता है, तो बस EFI पठन को fat32 के रूप में प्रारूपित करें और संबंधित फाइलों के उन कुछ एमबी पर कॉपी करें; अन्यथा एमबीआर के लिए आपको यह समझना होगा कि यह कैसे काम करता है, नई डिस्क के संबंध में इसके भीतर के पते को ठीक करें, फिर नए एमबीआर को पहले सेक्टर में नई डिस्क पर स्थापित करें ताकि BIOS इसे ठीक से एक्सेस कर सके; EFI इतना बेहतर अगर आपके हार्डवेयर EFI सक्षम है
रॉन

और ELILO GRUB / GRUB2 की तुलना में बेहतर है, ग्रब में बहुत अधिक सामान जो मैं कभी भी उपयोग नहीं करता और बस चीजों को जटिल करता हूं; एक elilo.conf फ़ाइल और आप कर रहे हैं! अगर यह बूट नहीं होता है तो एक फाइल को देखने और सही करने के लिए
ron

4

यह पता चला है कि / boot विभाजन को कॉपी करने के लिए rsync या डंप का उपयोग समस्या पैदा कर रहा था। ऊपर दिए गए इरिक के जवाब के आधार पर, मैंने एक लाइव सीडी को बचाव मोड में बूट किया और निम्नलिखित dd कमांड को चलाया।

dd if=/dev/sda of=mbrbackup bs=512 count=1
dd if=mbrbackup of=/dev/sdb bs=446 count=1
dd if=/dev/sda1 of=/dev/sdb1

मैंने पहले दो dd के फिर से दौड़ने के लिए यह सुनिश्चित करने के लिए कि सब कुछ सही ढंग से कॉपी किया गया था और मेरे द्वारा किए जा रहे सभी परीक्षण से दूषित नहीं हुआ था। फिर मैंने अपने पुराने ड्राइव से बूट विभाजन को कॉपी करने के लिए अपने नए वाले तीसरे dd को चलाया। उसके बाद मैंने शट डाउन किया, अपने पुराने ड्राइव को बाहर निकाला और अपने CentOS में बिना किसी समस्या के बूट किया।

माउंट किए गए ड्राइव पर डंप का उपयोग करने के कारण कुछ समस्या हुई होगी, जिसके कारण कॉपी सही तरीके से काम नहीं कर पाई। भले ही, डीडी ने चाल चली। हर किसी को आपकी सहायताके लिए शुक्रिया।


यह अज्ञानता का एक अच्छा उदाहरण है क्योंकि यह काम कर रहा है। अपने आप से पूछें कि एमबीआर में समस्या को ठीक करने के लिए बचाव सीडी ने आपके लिए क्या किया? एक ही समय में सिस्टम में दो डिस्क होने से, कौन सा sda है और कौन सा sdb है, और जब आप पुरानी डिस्क को हटाते हैं और सिर्फ नई डिस्क होती है, तो क्या यह परिवर्तन होता है और फिर sda या sdb बन जाता है?
रॉन

आप जो कर रहे हैं, उसके आधार पर यह कोई मायने नहीं रख सकता है, लेकिन आमतौर पर कुछ अद्वितीय विधि जैसे कि डिवाइस-आईडी या यूयूआईडी द्वारा डिस्क को बूट करना या पहचानना बेहतर होता है।
रॉन

dd और MBR का उपयोग इलेक्ट्रॉनिक ईंधन इंजेक्शन (EFI) के साथ इलेक्ट्रॉनिक इग्निशन के बजाय एक इंजन पर बिंदुओं और कंडेनसर का उपयोग करने की तरह है ... इरादा इरादा ... और EFI का उपयोग नहीं कर रहा है क्योंकि यह पूरी तरह से समझा नहीं गया है।
रॉन

3

Dd के बजाय, मैंने एक नया वॉल्यूम बनाया। अधिक कदम, लेकिन उन्हें कॉपी करने के बजाय समस्याओं को ठीक कर सकते हैं। मेरे पास बहुत छोटा / बूट था जो दूषित हो गया। मैं भी gro2 के साथ सेंटो 7 का उपयोग कर रहा था। तो मेरे निर्देशों के लिए कुछ समायोजन की आवश्यकता होगी या grub2 को अपग्रेड करना होगा जैसा कि psusi ने सुझाव दिया है। मैंने परिवर्तनों को नोट करने की कोशिश की।

नोट: जब मैं "/ dev / sdx" का उपयोग करता हूं, तो मैं यह मान रहा हूं कि आपकी जानकारी के लिए "sdx" को उस डिस्क / वॉल्यूम के नाम को बदलना होगा जिसे आप / बूट करना चाहते हैं।

  • 83 प्रकार (सामान्य लिनक्स भाग) के साथ विभाजन के लिए fdisk (cfdisk नहीं) का उपयोग करें, और बूट करने योग्य के रूप में चिह्नित करें।
    • Fdisk का कारण: cfdisk बहुत जल्द विभाजन शुरू करता है, जिसमें बूट लोडर के लिए कोई जगह नहीं है। याद रखें, बूट लोडर को विभाजन से पहले फिट करने की आवश्यकता है।
  • विभाजन पर फाइल सिस्टम बनाएं। एक्सट [234], एक्सएफ़एस। अन्य?।
  • माउंट / बूट पर
  • कॉपी करें। पुराने / बूट से .img फ़ाइलों को / बूट में ... कम से कम जिन्हें आप रखना चाहते हैं।
  • मैंने vmlinuz- * फ़ाइलों को पुराने / बूट ओवर / बूट से कॉपी किया ... निश्चित नहीं है कि यदि आवश्यक हो।
  • Grub2-install / dev / sdx चलाएं
    • नोट 1: यदि आप ग्रब (grub2 के बजाय) का उपयोग कर रहे हैं, तो मेरा मानना ​​है कि सही कमांड ग्रब-इनस्टॉल / देव और sxx है
    • नोट 2: यह उस विभाजन से पहले स्थापित होता है जिसे हमने अभी स्वरूपित किया है, इसलिए इसे / dev / sdx1 पर इंगित नहीं करना है!
  • Grub2-mkconfig -o /boot/grub2/grub.cfg चलाएं
  • अपडेट / etc / fstab for / boot के लिए मत भूलना

संदर्भ: http://www.ocztechnologyforum.com/fo...226#post373226 http://www.patriotmemory.com/forums/...ead.php?t=3696 http://thunk.org/tytso /blog/2009/02/02/..se-block-size/ https://ubuntuforums.org/showthread.php?t=1528529 https://wiki.centos.org/HowTos/Grub2


2

समस्या यह है कि आपको ddएमबीआर की नकल करने के लिए उपयोग नहीं करना चाहिए । आपको बस एक सही ढंग से अपडेट किया गया एमबीआर प्राप्त करने के लिए नई ड्राइव पर ग्रब को पुनर्स्थापित करने की आवश्यकता है । MBR में ग्रब चरण 2 फ़ाइल का स्थान होता है, जो आपने डंप को पुनर्स्थापित करते समय बदल दिया था।

इसके अलावा, आपको ग्रब 2 में अपग्रेड करना चाहिए क्योंकि ग्रब विरासत को वर्षों तक बनाए नहीं रखा गया है, और ग्रब 2 को एक गैर lvm / बूट विभाजन की आवश्यकता नहीं है।


मैं grub2 का उपयोग कर रहा हूं, यह वही है जो CentOS 6 इंस्टॉलर ने मेरी डिस्क पर डाला है। इसके अलावा, गैर lvm / बूट विभाजन भी CentOS द्वारा प्रदान किया गया डिफ़ॉल्ट सेटअप था। मैंने ड्राइव पर कई बार grub2 को पुन: स्थापित करने का प्रयास किया, लेकिन काम करने के लिए यह कुछ ऐसा था जिसने मुझे अलग कर दिया।
Cloudkiller
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.