एक विशिष्ट स्थिति, परियोजना शुरू होती है, वे इसके लिए सबसे सरल सर्वर लेते हैं, जो छह महीने से काम कर रहा है, परियोजना बढ़ती है और एक बड़े और बुरे सर्वर के लिए पूछती है।
आमतौर पर वे हार्डवेयर के एक नए टुकड़े पर एक नया ओएस स्थापित करते हैं, सॉफ़्टवेयर बढ़ाते हैं, कॉन्फ़िगर करते हैं, सामग्री, डेटाबेस आदि को बदलते हैं, DNS को बदलते हैं और दो दिनों में पुराने सर्वर को बंद कर देते हैं। यह एक सरल प्रक्रिया प्रतीत होगी, किसी भी प्रणाली प्रशासक ने इसे सैकड़ों बार किया। लेकिन, प्रक्रिया में, जैसा कि अभ्यास से पता चलता है, कुछ भूल गया है और पहले से ही युद्ध सर्वर पर आपको संपादन और सेटिंग्स बनाने की जरूरत है, पुरानी बैसाखियों को खींचें और उन्हें एक नए स्थान पर अनुकूलित करें।
यह विकल्प कभी-कभी अपरिहार्य होता है, उदाहरण के लिए, जब सर्वर विभिन्न डेटा केंद्रों में होता है। लेकिन अगर सर्वर (नए और पुराने) आसन्न रैक में हैं, तो आप बस ओएस को एक नए हार्डवेयर के टुकड़े में स्थानांतरित कर सकते हैं और पुराने को तुरंत भुगतान कर सकते हैं। मैं यह करने के लिए एक छोटा चेकलिस्ट लेख लिखूंगा। तो चलिए!
डिफ़ॉल्ट:
- एक कॉलोकेटर / डेडेटर के साथ एक डेटा सेंटर में सर्वर
- आप kolokator / sedikator से सहमत हैं जो पुराने सर्वर से नए पते पर आईपी पते को स्थानांतरित करता है। यदि ऐसा नहीं किया जाता है, तो सर्वर अलग VLAN में होने की स्थिति में थानेदार हो सकते हैं।
- आपको कम से कम एक नए सर्वर पर आईपी-केवीएम दिया जाता है, आदर्श रूप से पुराने पर इसकी आवश्यकता हो सकती है यदि आप अचानक इसे उपलब्ध रखना चाहते हैं।
- मैं CentOS 5.x के उदाहरण पर जादू टोना दिखाऊंगा
- आपके सर्वर प्रदाता में CentOS 5.x और आपके प्लेटफॉर्म की एक आपातकालीन (तथाकथित बचाव) छवि वाला एक pxe सर्वर है।
- आप स्रोत सर्वर का रूट पासवर्ड जानते हैं।
- आपने पुराने सर्वर से नेटवर्क सेटिंग्स और डिस्क लेआउट से कागज की एक खाली शीट पर कॉपी किया।
तो, सभी शर्तों को पूरा किया जाता है, आरंभ करें!
हम नेटवर्क पर नए सर्वर को लोड करते हैं, इसके लिए, उदाहरण के लिए, सुपरमाइक्रो को पहले नेटवर्क एडेप्टर के लिए BIOS में pxe बूट को शामिल करने की आवश्यकता है, सर्वर को रिबूट करें और F12 दबाएं। यदि एसटीपी को एक्सेस पोर्ट पर नेटवर्क स्विच पर सक्षम किया जाता है, जब कोई संदेश dhcp द्वारा आईपी प्राप्त करने की कोशिश के बारे में प्रकट होता है, तो पॉज़ बटन दबाएं और 30 सेकंड प्रतीक्षा करें। फिर स्पेसबार को दबाएं और सेंटोस 5.x 64 बचाव में बूट करें।
fdisk -l देखें कि क्या डिस्क को हुक किया गया है, यदि नहीं, तो हम insmod का उपयोग करके RAID नियंत्रक ड्राइवर को घुमाते हैं। यदि डिस्क दिखाई देती हैं, तो हम उन्हें उसी तरह से चिह्नित करते हैं जैसे पुराने सर्वर पर, यदि कोई नियंत्रक नहीं है और हमारे पास डिस्क हैं, तो हम उन्हें mdadm सॉफ्टवेयर RAID का उपयोग करके इकट्ठा करते हैं। हां, और स्वैप के बारे में मत भूलना।
एक फ़ाइल सिस्टम बनाएँ:
mkswap / dev / md5
mkfs.ext3 / dev / md0
mkfs.ext3 / dev / md1
mkfs.ext3 / dev / md2
mkfs.ext3 / dev / md3
mkfs.ext3 / dev / md4
/ Mnt / sysimage में रूट विभाजन माउंट करें
आरोह / देव / md0 / mnt / sysimage
उदाहरण के लिए / mnt / sysimage / में एक निर्देशिका संरचना बनाएँ:
mkdir -p / mnt / sysimage / {var, usr, home, tmp}
हम पुराने सर्वर के अनुसार कड़े विभाजन को माउंट करते हैं:
आरोह / देव / md1 / mnt / sysimage / usr
आरोह / देव / md2 / mnt / sysimage / var
आरोह / देव / md3 / mnt / sysimage / home
आरोह / देव / md4 / mnt / sysimage / tmp
हम पुराने सर्वर से डेटा सिंक्रनाइज़ेशन शुरू करते हैं, यहां हमें पुराने सर्वर तक रूट एक्सेस की आवश्यकता होती है। मान लीजिए हमारे पास पुराने सर्वर पर आईपी 1.1.1.1 है
rsync -avH --numeric-ids --progress 1.1.1.1:/ / mnt / sysimage / --exclude = / dev --exclude = / proc --exclude = / sys
जैसे ही डेटा सिंक्रनाइज़ किया जाता है, हम पुराने सर्वर पर जाते हैं और सभी सेवाओं को रोकते हैं, उदाहरण के लिए mysql / httpd / nginx / proftpd और इतने पर, कि आपके पास है।
हम फिर से नए सर्वर पर लौटते हैं और डेटा को फिर से सिंक्रनाइज़ करते हैं, लेकिन - डिलिट पैरामीटर के साथ
rsync -avH --numeric-ids --progress 1.1.1.1:/ / mnt / sysimage / --exclude = / dev --exclude = / proc --exclude = / sys/sheet
अब हम "नए सर्वर" में जाते हैं और सर्वर में बूट के लिए आवश्यक परिवर्तन करना शुरू करते हैं:
mkdir / mnt / sysimage / {proc, sys, dev}
आरोह - bind / dev / mnt / sysimage / dev
माउंट -t proc कोई नहीं / mnt / sysimage / proc
माउंट -t sysfs कोई नहीं / mnt / sysimage / sys
चुरोट / मेंट / ससीमेज
यदि पुराने सर्वर पर आपके पास sda / sdb / sdc था और नए md0 / md1 / md2 या इसके विपरीत, तो आपको / etc / fstab और /boot .grub/grub.conf में उचित परिवर्तन करने की आवश्यकता है
Fstab से प्रविष्टियां:
/ देव / sda1 / ext3 चूक १ १
/ dev / sda2 / home ext3 चूक 1 2
/ dev / sda3 / tmp ext3 चूक 1 2
/ dev / sda4 / var ext3 चूक १ २
/ dev / sda5 / usr ext3 चूक 1 2
tmpfs / dev / shm tmpfs चूक 0 0
devpts / देव / pts भक्ति gid = ५, मोड = ६२० ० ०
sysfs / sys sysfs चूक 0 0
खरीद / खरीद के लिए चूक 0 0
/ देव / sda6 स्वैप स्वैप चूक ०
हम लाते हैं:
/ dev / md0 / ext3 चूक १ १
/ dev / md4 / home ext3 चूक 1 2
/ dev / md3 / tmp ext3 चूक 1 2
/ dev / md2 / var ext3 चूक 1 2
/ dev / md1 / usr ext3 चूक 1 2
tmpfs / dev / shm tmpfs चूक 0 0
devpts / देव / pts भक्ति gid = ५, मोड = ६२० ० ०
sysfs / sys sysfs चूक 0 0
खरीद / खरीद के लिए चूक 0 0
/ देव / md5 स्वैप स्वैप चूक ०
और grub.conf संपादन पर जाएं
शीर्षक CentOS (2.6.18-238.9.1.el5)
रूट (hd0.0)
कर्नेल / बबुट /vmlinuz-2.6.18-238.9.1.el5 आरओ रूट = / देव / sda1
initrd /boot/initrd-2.6.18-238.9.1.el5.img
हम फॉर्म लाते हैं:
शीर्षक CentOS (2.6.18-238.9.1.el5)
रूट (hd0.0)
कर्नेल / बबुट /vmlinuz-2.6.18-238.9.1.el5 आरओ रूट = / देव / मडुवे घबराहट - 30
initrd /boot/initrd-2.6.18-238.9.1.el5.img
कृपया कर्नेल इनिशियलाइज़ेशन लाइन में घबराहट = 30 पर ध्यान दें, यदि आपने कहीं गलती की है और सर्वर कर्नेल पैनिक में गिर गया है तो यह आवश्यक है। इस घबराहट = 30 के बिना, सर्वर हार्डवेयर रीसेट की प्रतीक्षा करेगा, इसके साथ यह 30 सेकंड के बाद रीबूट होगा।
अब हमें ग्रब लगाने की जरूरत है:
# ग्रब
ग्रब> रूट (hd0,0)
रूट (hd0.0)
फाइलसिस्टम प्रकार ext2fs है, विभाजन प्रकार 0x83
ग्रब> सेटअप (hd0)
सेटअप (HD0)
अगर "/ बूट / ग्रब / स्टेज 1" मौजूद है, तो चेक करना ... हां
अगर "/ बूट / ग्रब / स्टेज 2" मौजूद है, तो चेक करना ... हां
अगर "/ बूट / ग्रब / e2fs_stage1_5" मौजूद है, तो चेक करना ... हां
"एम्बेड / बूट / ग्रब / e2fs_stage1_5 (HD0)" ... 15 सेक्टर एम्बेडेड हैं।
सफल रहा
"इंस्टॉल / बूट / ग्रब / स्टेज 1 (HD0) (HD0) 1 + 15 पी (एचडी0,0) / बूट / ग्रब / स्टेज 2 /boot/grub/grub.conf" ... चल रहा है
हो गया।
ग्रब> छोड़ दिया
छोड़ना
#
सींग स्थापित नहीं है, फिर सब कुछ ठीक है। बस मामले में, हम जाँच करते हैं:
# dd if = / dev / sda count = 10 | स्ट्रिंग्स | grep स्टेज
लोड हो रहा है स्टेज १
/ बूट / grub / stage2 /boot/grub/grub.conf
अब हमें एक नई initrd बनाने की आवश्यकता है, क्योंकि पुराने में उदाहरण mdadm के लिए नहीं हो सकता है।
gzip /boot/initrd-2.6.18-238.9.1.el5.img
mkinitrd /boot/initrd-2.6.18-238.9.1.el5.img 2.6.18-238.9.1.el5
फ़र्स्टबूट कमांड चालू करें:
chkconfig पर फर्स्टबूट करें
और हम Ctrl + D दबाकर सर्वर को कई बार रिबूट करते हैं
जब सर्वर रिबूट हो रहा है, तो पुराने पर जाएं और इस पर निर्भर करता है कि हमें आगे इसकी आवश्यकता है या नहीं, नेटवर्क को डिस्कनेक्ट करें या आईपी पते को बदलें। यदि यह अनावश्यक है, तो / etc / sysconfig / network-script / ifcfg-ethX config (जहाँ X नेटवर्क एडेप्टर की संख्या है) में सभी नेटवर्क एडेप्टर के लिए ONBOOT = Yes को ONBOOT पर सेट करें - नहीं और "stop" नेटवर्क /etc/init.d/network रोकें । अगर हमें एक पुराने सर्वर की आवश्यकता है, तो उसी कॉन्फिगर में हम नई नेटवर्क सेटिंग्स सेट करते हैं और नेटवर्क /etc/init.d/network पुनरारंभ "रिस्टार्ट" करते हैं।
इसलिए हमारे द्वारा किए गए पुराने सर्वर के साथ, नए पर जाएं। आईपी-केवीएम में, हम पहले से ही नीले रंग की ncurses विंडो देखते हैं, जो फर्स्टबूट ने हमें दी थी, नेटवर्क सेटअप पर जाएं और पुराने नेटवर्क सेटिंग्स में ड्राइव करें। फिर हम प्रयोग की शुद्धता के लिए सर्वर को रिबूट करते हैं।
शायद उपरोक्त सभी जटिल लगेंगे और आपका हाथ "क्यों इस बवासीर?" की भावना में एक टिप्पणी लिखने के लिए पहुंच जाएगा, जल्दी मत करो, व्यवहार में सभी ऑपरेशन बहुत जल्दी किए जाते हैं और डाउनटाइम न्यूनतम होता है।
यदि आपको पाठ में कोई गलती मिलती है, तो कृपया मुझे पीएम में लिखें, मैं आपका बहुत आभारी रहूंगा।
यदि आपको कुछ बिंदुओं को स्पष्ट करने की आवश्यकता है, तो पूछने में संकोच न करें! मैंने उपरोक्त प्रक्रिया को कम से कम आधा सौ बार किया।
यदि आप माइग्रेशन मुद्दों में रुचि रखते हैं, तो मैं एक OpenVZ कंटेनर को एक सर्वर से माइग्रेट करने के बारे में बात कर सकता हूं जिसमें कोई रूट एक्सेस नहीं है या एक OpenVZ कंटेनर में एक भौतिक मशीन को माइग्रेट करने के बारे में है।