अद्यतन: मैंने सत्यापित किया है कि नीचे दिया गया विवरण उबंटू 16.04 के लिए भी काम करता है। अन्य उपयोगकर्ताओं ने 17.10 और 18.04.1 को काम करने की सूचना दी है।
नोट: यह HOWTO आपको LVM नहीं देगा। यदि आप LVM भी चाहते हैं, तो इसके बजाय UEFI BIOS के साथ मशीन पर RAID 1 और LVM के साथ Ubuntu 18.04 डेस्कटॉप स्थापित करें ।
दिनों की कोशिश के बाद, अब मेरे पास एक काम करने की प्रणाली है! संक्षेप में, समाधान में निम्नलिखित चरण शामिल थे:
- उबंटू लाइव सीडी / यूएसबी का उपयोग कर बूट करें।
- आवश्यकतानुसार एसएसडी का विभाजन।
- अनुपलब्ध पैकेज (mdadm और grub-efi) स्थापित करें।
- RAID विभाजन बनाएँ।
- यूबीइक्विटी इंस्टॉलर चलाएं (लेकिन नए सिस्टम में बूट न करें)।
- एक RAID रूट से बूट को सक्षम करने के लिए स्थापित सिस्टम (initramfs) को पैच करें।
- GRUB के साथ पहले SSD के EFI विभाजन को पॉप्युलेट करें और इसे EFI बूट श्रृंखला में स्थापित करें।
- EFI विभाजन को अन्य SSD पर क्लोन करें और इसे बूट श्रृंखला में स्थापित करें।
- किया हुआ! आपके सिस्टम में अब RAID 1 अतिरेक होगा। ध्यान दें कि UEFI विभाजन के अछूते रहने के बाद कुछ खास करने की जरूरत नहीं है, जैसे कि कर्नेल अपडेट।
समाधान के चरण 6 का एक प्रमुख घटक बूट अनुक्रम में एक विलंब था जो अन्यथा मुझे GRUB को GRUB (कीबोर्ड के बिना!) में डंप कर देता था यदि एसएसडी में से कोई भी गायब था।
विस्तृत HOWTO
1. बूट
USB स्टिक से EFI का उपयोग कर बूट करें। सटीक रूप से आपके सिस्टम के अनुसार कैसे भिन्न होगा। स्थापित किए बिना ubuntu का चयन करें ।
एक टर्मिनल एमुलेटर शुरू करें, जैसे xterm
नीचे कमांड चलाने के लिए।
1.1 दूसरे कंप्यूटर से लॉगिन करें
इसे आज़माते हुए, मुझे अक्सर दूसरे से लॉगिन करना आसान लगता था, पहले से ही पूरी तरह से कॉन्फ़िगर किया गया कंप्यूटर। यह सरलीकृत कट-एंड-कमांड का पेस्ट, आदि। यदि आप ऐसा ही करना चाहते हैं, तो आप निम्न कार्य करके ssh के माध्यम से लॉगिन कर सकते हैं:
कॉन्फ़िगर किए जाने वाले कंप्यूटर पर, ओपनश सर्वर स्थापित करें:
sudo apt-get install openssh-server
पासवर्ड बदलें। उपयोगकर्ता के लिए डिफ़ॉल्ट पासवर्ड ubuntu
रिक्त है। आप शायद एक मध्यम-शक्ति पासवर्ड चुन सकते हैं। जैसे ही आप अपने नए कंप्यूटर को रिबूट करेंगे, यह भूल जाएगा।
passwd
अब आप दूसरे कंप्यूटर से ubuntu लाइव सत्र में लॉग इन कर सकते हैं। नीचे दिए गए निर्देश लिनक्स के लिए हैं:
ssh -l ubuntu <your-new-computer>
यदि आपको एक संदिग्ध व्यक्ति के मध्य-हमले के बारे में चेतावनी मिलती है, तो आपको नए कंप्यूटर की पहचान करने के लिए उपयोग की जाने वाली ssh कुंजियों को साफ़ करना होगा। ऐसा इसलिए है क्योंकि openssh-server
जब भी यह स्थापित होता है तो नई सर्वर कुंजी उत्पन्न करता है। उपयोग करने का आदेश आम तौर पर मुद्रित होता है और इसे देखना चाहिए
ssh-keygen -f <path-to-.ssh/known_hosts> -R <your-new-computer>
उस आदेश को निष्पादित करने के बाद, आपको ubuntu लाइव सत्र में प्रवेश करने में सक्षम होना चाहिए।
2. विभाजन डिस्क
किसी भी पुराने विभाजन और बूट ब्लॉक को साफ़ करें। चेतावनी! यह आपके डिस्क पर डेटा को नष्ट कर देगा!
sudo sgdisk -z /dev/sda
sudo sgdisk -z /dev/sdb
अपने ड्राइव के सबसे छोटे हिस्से पर नए विभाजन बनाएं: ESP के लिए 100M, RAID SWAP के लिए 32G, RAID रूट के लिए आराम करें। यदि आपकी एसडीए ड्राइव सबसे छोटी है, तो धारा 2.1 का पालन करें, अन्यथा धारा 2.2।
2.1 विभाजन तालिकाएँ बनाएँ (/ देव / sda छोटा है)
निम्न चरण करें:
sudo sgdisk -n 1:0:+100M -t 1:ef00 -c 1:"EFI System" /dev/sda
sudo sgdisk -n 2:0:+32G -t 2:fd00 -c 2:"Linux RAID" /dev/sda
sudo sgdisk -n 3:0:0 -t 3:fd00 -c 3:"Linux RAID" /dev/sda
अन्य डिस्क में विभाजन तालिका की प्रतिलिपि बनाएँ और अद्वितीय यूयूआईडी को फिर से बनाएं (वास्तव में यूएआईडी को एसडीए के लिए पुनर्जीवित करें)।
sudo sgdisk /dev/sda -R /dev/sdb -G
2.2 विभाजन तालिकाएँ बनाएँ (/ dev / sdb छोटा है)
निम्न चरण करें:
sudo sgdisk -n 1:0:+100M -t 1:ef00 -c 1:"EFI System" /dev/sdb
sudo sgdisk -n 2:0:+32G -t 2:fd00 -c 2:"Linux RAID" /dev/sdb
sudo sgdisk -n 3:0:0 -t 3:fd00 -c 3:"Linux RAID" /dev/sdb
अन्य डिस्क पर विभाजन तालिका की प्रतिलिपि बनाएँ और अद्वितीय UUIDs को पुन: बनाएँ (वास्तव में sdb के लिए UUIDs पुनर्जीवित करेंगे)।
sudo sgdisk /dev/sdb -R /dev/sda -G
2.3 / देव / एसडीए पर FAT32 फ़ाइल सिस्टम बनाएँ
EFI पार्टीशन के लिए FAT32 फ़ाइल सिस्टम बनाएँ।
sudo mkfs.fat -F 32 /dev/sda1
mkdir /tmp/sda1
sudo mount /dev/sda1 /tmp/sda1
sudo mkdir /tmp/sda1/EFI
sudo umount /dev/sda1
3. लापता पैकेज स्थापित करें
उबंटू लाइव सीडी दो प्रमुख पैकेजों के बिना आती है; ग्रब-एफी और एमडीएमएम। उन्हें स्थापित करें। (मुझे यहां 100% यकीन नहीं है कि ग्रब-एफी की जरूरत है, लेकिन आने वाले इंस्टॉलेशन के साथ समरूपता बनाए रखने के लिए इसे भी साथ में लाएं।)
sudo apt-get update
sudo apt-get -y install grub-efi-amd64 # (or grub-efi-amd64-signed)
sudo apt-get -y install mdadm
यदि आपके पास सुरक्षित बूट सक्षम है grub-efi-amd64-signed
, grub-efi-amd64
तो आपको इसके बजाय आवश्यकता हो सकती है । (एलेक द्वारा टिप्पणी देखें।)
4. RAID विभाजन बनाएँ
नीचा मोड में RAID डिवाइस बनाएं। उपकरणों को बाद में पूरा किया जाएगा। एक पूर्ण RAID1 बनाने ने कभी-कभी मुझे ubiquity
नीचे की स्थापना के दौरान समस्याएं दीं , निश्चित नहीं कि क्यों। (माउंट / अनमाउंट? प्रारूप?)
sudo mdadm --create /dev/md0 --bitmap=internal --level=1 --raid-disks=2 /dev/sda2 missing
sudo mdadm --create /dev/md1 --bitmap=internal --level=1 --raid-disks=2 /dev/sda3 missing
RAID स्थिति सत्यापित करें।
cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda3[0]
216269952 blocks super 1.2 [2/1] [U_]
bitmap: 0/2 pages [0KB], 65536KB chunk
md0 : active raid1 sda2[0]
33537920 blocks super 1.2 [2/1] [U_]
bitmap: 0/1 pages [0KB], 65536KB chunk
unused devices: <none>
Md डिवाइसों का विभाजन।
sudo sgdisk -z /dev/md0
sudo sgdisk -z /dev/md1
sudo sgdisk -N 1 -t 1:8200 -c 1:"Linux swap" /dev/md0
sudo sgdisk -N 1 -t 1:8300 -c 1:"Linux filesystem" /dev/md1
5. इंस्टॉलर चलाएं
बूट लोडर को छोड़कर सर्वव्यापी इंस्टॉलर को चलाएं, जो वैसे भी विफल हो जाएगा । ( नोट : यदि आपने ssh के माध्यम से लॉग इन किया है, तो आप संभवतः इसके बजाय नए कंप्यूटर पर इसे निष्पादित करना चाहेंगे।)
sudo ubiquity -b
इंस्टॉलेशन टाइप के रूप में कुछ और चुनें औरmd1p1
टाइप टू ext4
मॉडिफाई करें: हाँ, और माउंट पॉइंट /
। md0p1
विभाजन स्वचालित रूप से अदला-बदली के रूप में चयन किया जाएगा।
एक कप कॉफी प्राप्त करें जबकि इंस्टॉलेशन खत्म हो।
महत्वपूर्ण: इंस्टॉलेशन समाप्त होने के बाद, जारी रखें परीक्षण का चयन करें क्योंकि सिस्टम अभी तक बूट तैयार नहीं है।
RAID डिवाइस को पूरा करें
RAID में प्रतीक्षा sdb विभाजन संलग्न करें।
sudo mdadm --add /dev/md0 /dev/sdb2
sudo mdadm --add /dev/md1 /dev/sdb3
सत्यापित करें कि सभी RAID उपकरण ठीक हैं (और वैकल्पिक रूप से सिंकिंग)।
cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdb3[1] sda3[0]
216269952 blocks super 1.2 [2/1] [U_]
[>....................] recovery = 0.2% (465536/216269952) finish=17.9min speed=200000K/sec
bitmap: 2/2 pages [8KB], 65536KB chunk
md0 : active raid1 sdb2[1] sda2[0]
33537920 blocks super 1.2 [2/2] [UU]
bitmap: 0/1 pages [0KB], 65536KB chunk
unused devices: <none>
रिबूट सहित सिंक के दौरान नीचे की प्रक्रिया जारी रह सकती है।
6. स्थापित सिस्टम को कॉन्फ़िगर करें
स्थापित सिस्टम में चिरोट को सक्षम करने के लिए सेट अप करें।
sudo -s
mount /dev/md1p1 /mnt
mount -o bind /dev /mnt/dev
mount -o bind /dev/pts /mnt/dev/pts
mount -o bind /sys /mnt/sys
mount -o bind /proc /mnt/proc
cat /etc/resolv.conf >> /mnt/etc/resolv.conf
chroot /mnt
कॉन्फ़िगर और स्थापित संकुल।
apt-get install -y grub-efi-amd64 # (or grub-efi-amd64-signed; same as in step 3)
apt-get install -y mdadm
यदि आप md डिवाइस अभी भी सिंक कर रहे हैं, तो आप कभी-कभार चेतावनी जैसे देख सकते हैं:
/usr/sbin/grub-probe: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
यह सामान्य है और इसे नजरअंदाज किया जा सकता है ( इस प्रश्न के नीचे उत्तर देखें
)।
nano /etc/grub.d/10_linux
# change quick_boot and quiet_boot to 0
अक्षम करने quick_boot
से बच जाएगा डिस्कफिल्टर लिखते हैं समर्थित बग नहीं हैं । अक्षम quiet_boot
करना केवल व्यक्तिगत प्राथमिकता है।
किसी भी लेबल संदर्भ को हटाने के लिए /etc/mdadm/mdadm.conf संशोधित करें, अर्थात परिवर्तित करें
ARRAY /dev/md/0 metadata=1.2 name=ubuntu:0 UUID=f0e36215:7232c9e1:2800002e:e80a5599
ARRAY /dev/md/1 metadata=1.2 name=ubuntu:1 UUID=4b42f85c:46b93d8e:f7ed9920:42ea4623
सेवा मेरे
ARRAY /dev/md/0 UUID=f0e36215:7232c9e1:2800002e:e80a5599
ARRAY /dev/md/1 UUID=4b42f85c:46b93d8e:f7ed9920:42ea4623
यह चरण अनावश्यक हो सकता है, लेकिन मैंने देखा है कि कुछ पृष्ठ सुझाव देते हैं कि नामकरण की योजनाएं अस्थिर हो सकती हैं (नाम = ubuntu: 0/1) और यह बूट के दौरान कोडिंग से बिल्कुल ठीक RAID डिवाइस को रोक सकता है।
/etc/default/grub
पढ़ने के लिए लाइनों को संशोधित करें
#GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
फिर, यह कदम अनावश्यक हो सकता है, लेकिन मैं अपनी आँखों को खोलना पसंद करता हूँ ...
6.1। स्लीप स्क्रिप्ट जोड़ें
(यह समुदाय द्वारा सुझाव दिया गया है कि यह कदम अनावश्यक हो सकता है और इसका उपयोग करके प्रतिस्थापित किया जा सकता GRUB_CMDLINE_LINUX="rootdelay=30"
है /etc/default/grub
। इस HOWTO के तल पर बताए गए कारणों के लिए, मैं सुझाव देता हूं कि स्लीप स्क्रिप्ट के साथ चिपकना चाहिए , हालांकि यह रूटडेल का उपयोग करने की तुलना में बदसूरत है। हम अपने नियमित कार्यक्रम के साथ जारी ... )
एक स्क्रिप्ट बनाएं जो RAID डिवाइसों के व्यवस्थित होने की प्रतीक्षा करेगा। इस देरी के बिना, RAID असेंबली समय पर समाप्त नहीं होने के कारण रूट की माउंटिंग विफल हो सकती है । मुझे यह कठिन तरीका पता चला - जब तक मैंने डिस्क की विफलता का अनुकरण करने के लिए SSDs में से एक को डिस्कनेक्ट नहीं किया, तब तक समस्या दिखाई नहीं दी! उपलब्ध हार्डवेयर के आधार पर समय को समायोजित करने की आवश्यकता हो सकती है, जैसे धीमी बाहरी USB डिस्क आदि।
निम्न कोड दर्ज करें /usr/share/initramfs-tools/scripts/local-premount/sleepAwhile
:
#!/bin/sh
echo
echo "sleeping for 30 seconds while udevd and mdadm settle down"
sleep 5
echo "sleeping for 25 seconds while udevd and mdadm settle down"
sleep 5
echo "sleeping for 20 seconds while udevd and mdadm settle down"
sleep 5
echo "sleeping for 15 seconds while udevd and mdadm settle down"
sleep 5
echo "sleeping for 10 seconds while udevd and mdadm settle down"
sleep 5
echo "sleeping for 5 seconds while udevd and mdadm settle down"
sleep 5
echo "done sleeping"
स्क्रिप्ट को निष्पादन योग्य बनाएं और इसे स्थापित करें।
chmod a+x /usr/share/initramfs-tools/scripts/local-premount/sleepAwhile
update-grub
update-initramfs -u
7. पहले SSD से बूट सक्षम करें
अब प्रणाली लगभग तैयार है, केवल यूईएफआई बूट मापदंडों को स्थापित करने की आवश्यकता है।
mount /dev/sda1 /boot/efi
grub-install --boot-directory=/boot --bootloader-id=Ubuntu --target=x86_64-efi --efi-directory=/boot/efi --recheck
update-grub
umount /dev/sda1
यह बूट लोडर को /boot/efi/EFI/Ubuntu
(उर्फ EFI/Ubuntu
पर /dev/sda1
) स्थापित करेगा और इसे कंप्यूटर पर पहले UEFI बूट श्रृंखला में स्थापित करेगा।
8. दूसरे SSD से बूट सक्षम करें
हम लगभग पूरा कर चुके हैं। इस बिंदु पर, हमें sda
ड्राइव पर रीबूट करने में सक्षम होना चाहिए । इसके अलावा, या mdadm
तो ड्राइव की विफलता को संभालने में सक्षम होना चाहिए । हालाँकि, EFI RAID नहीं है, इसलिए हमें इसे क्लोन करने की आवश्यकता है ।sda
sdb
dd if=/dev/sda1 of=/dev/sdb1
दूसरे ड्राइव पर बूट लोडर को स्थापित करने के अलावा, यह sdb1
विभाजन पर FAT32 फ़ाइल सिस्टम का UUID बना देगा (जैसा कि रिपोर्ट किया गया है blkid
) से मेल खाता है sda1
और /etc/fstab
। (नोट हालांकि उस के लिए UUIDs /dev/sda1
और /dev/sdb1
विभाजन अभी भी अलग होगा - तुलना ls -la /dev/disk/by-partuuid | grep sd[ab]1
के साथ blkid /dev/sd[ab]1
के बाद खुद के लिए जाँच करने के लिए स्थापित करें।)
अंत में, हमें sdb1
विभाजन को बूट क्रम में सम्मिलित करना चाहिए । (नोट: यह कदम अनावश्यक हो सकता है, आपके BIOS पर निर्भर करता है। मुझे रिपोर्ट मिली है कि कुछ BIOS 'स्वचालित रूप से वैध सीपीपी की सूची तैयार करते हैं।)
efibootmgr -c -g -d /dev/sdb -p 1 -L "Ubuntu #2" -l '\EFI\ubuntu\grubx64.efi'
मैंने इसका परीक्षण नहीं किया, लेकिन ESP चालू sda
और के बीच अद्वितीय लेबल (-L) होना आवश्यक है sdb
।
यह वर्तमान बूट ऑर्डर का एक प्रिंटआउट उत्पन्न करेगा, जैसे
Timeout: 0 seconds
BootOrder: 0009,0008,0000,0001,0002,000B,0003,0004,0005,0006,0007
Boot0000 Windows Boot Manager
Boot0001 DTO UEFI USB Floppy/CD
Boot0002 DTO UEFI USB Hard Drive
Boot0003* DTO UEFI ATAPI CD-ROM Drive
Boot0004 CD/DVD Drive
Boot0005 DTO Legacy USB Floppy/CD
Boot0006* Hard Drive
Boot0007* IBA GE Slot 00C8 v1550
Boot0008* Ubuntu
Boot000B KingstonDT 101 II PMAP
Boot0009* Ubuntu #2
ध्यान दें कि बूट क्रम में Ubuntu # 2 (sdb) और Ubuntu (sda) पहले हैं।
रीबूट
अब हम रिबूट करने के लिए तैयार हैं।
exit # from chroot
exit # from sudo -s
sudo reboot
सिस्टम को अब उबंटू में रिबूट करना चाहिए (आपको पहले उबंटू लाइव इंस्टॉलेशन मीडिया को हटाना पड़ सकता है।)
बूट के बाद, आप चला सकते हैं
sudo update-grub
विंडोज बूट लोडर को ग्रब बूट चेन से जोड़ने के लिए।
वर्चुअल मशीन गोच
यदि आप पहले एक वर्चुअल मशीन में इसे आज़माना चाहते हैं, तो कुछ चेतावनी हैं: जाहिर है, यूईएफआई जानकारी रखने वाले एनवीआरएएम को रिबूट के बीच याद किया जाता है, लेकिन शटडाउन-रीस्टार्ट साइकिल के बीच नहीं। उस स्थिति में, आप UEFI शैल कंसोल पर समाप्त हो सकते हैं। निम्न कमांड अपने मशीन में आप बूट करना चाहिए से /dev/sda1
(उपयोग FS1:
के लिए /dev/sdb1
):
FS0:
\EFI\ubuntu\grubx64.efi
वर्चुअलबॉक्स में UEFI बूट के शीर्ष उत्तर में पहला समाधान - Ubuntu 12.04 भी मददगार हो सकता है।
डिस्क विफलता का अनुकरण
या तो RAID घटक डिवाइस की विफलता का उपयोग करके नकली किया जा सकता है mdadm
। हालाँकि, यह सत्यापित करने के लिए कि बूट सामान एक डिस्क की विफलता से बचेगा, मुझे कंप्यूटर बंद करना होगा और डिस्क से बिजली काटनी होगी। यदि आप ऐसा करते हैं, तो पहले सुनिश्चित करें कि md डिवाइस सिंक'एड हैं ।
cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid1 sdb3[2] sda3[0]
216269952 blocks super 1.2 [2/2] [UU]
bitmap: 2/2 pages [8KB], 65536KB chunk
md0 : active raid1 sda2[0] sdb2[2]
33537920 blocks super 1.2 [2/2] [UU]
bitmap: 0/1 pages [0KB], 65536KB chunk
unused devices: <none>
नीचे दिए गए निर्देशों में, sdX विफल डिवाइस है (X = a या b) और sdY ठीक उपकरण है।
एक ड्राइव डिस्कनेक्ट करें
कम्प्यूटर बंद कीजिए। एक ड्राइव डिस्कनेक्ट करें। पुनः आरंभ करें। उबंटू को अब नीचा मोड में RAID ड्राइव के साथ बूट होना चाहिए। (सेलिब्रेट! यह वही है जिसे आप प्राप्त करने की कोशिश कर रहे थे!)
cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid1 sda3[0]
216269952 blocks super 1.2 [2/1] [U_]
bitmap: 2/2 pages [8KB], 65536KB chunk
md0 : active raid1 sda2[0]
33537920 blocks super 1.2 [2/1] [U_]
bitmap: 0/1 pages [0KB], 65536KB chunk
unused devices: <none>
विफल डिस्क से पुनर्प्राप्त करें
यदि आप एक दोषपूर्ण डिस्क को बदलने के लिए आवश्यक हैं, तो यह प्रक्रिया है। यदि आप एक प्रतिस्थापन का अनुकरण करना चाहते हैं, तो आप उबंटू लाइव सत्र में बूट कर सकते हैं और उपयोग कर सकते हैं
dd if=/dev/zero of=/dev/sdX
वास्तविक सिस्टम में फिर से रिबूट करने से पहले डिस्क को साफ करने के लिए। यदि आपने उपरोक्त अनुभाग में सिर्फ बूट / RAID अतिरेक का परीक्षण किया है, तो आप इस चरण को छोड़ सकते हैं। हालाँकि, आपको अपने सिस्टम के लिए पूर्ण बूट / RAID अतिरेक को पुनर्प्राप्त करने के लिए कम से कम चरण 2 और 4 का प्रदर्शन करना होगा।
डिस्क प्रतिस्थापन के बाद RAID + बूट सिस्टम को पुनर्स्थापित करना निम्नलिखित चरणों की आवश्यकता है:
- नई ड्राइव विभाजन।
- Md उपकरणों में विभाजन जोड़ें।
- बूट विभाजन को क्लोन करें।
- क्लोन के लिए एक EFI रिकॉर्ड जोड़ें।
1. नई ड्राइव विभाजन
स्वस्थ ड्राइव से विभाजन तालिका की प्रतिलिपि बनाएँ:
sudo sgdisk /dev/sdY -R /dev/sdX
नई ड्राइव पर UUIDs को फिर से यादृच्छिक करें।
sudo sgdisk /dev/sdX -G
2. md उपकरणों में जोड़ें
sudo mdadm --add /dev/md0 /dev/sdX2
sudo mdadm --add /dev/md1 /dev/sdX3
3. बूट पार्टीशन को क्लोन करें
स्वस्थ ड्राइव से ईएसपी को क्लोन करें। (सावधान, शायद वसूली शुरू करने के लिए दोनों ईएसपी की डंप-टू-फ़ाइल करें यदि आप वास्तव में इसे पेंच करते हैं)।
sudo dd if=/dev/sdY1 of=/dev/sdX1
4. नए पुनर्जीवित डिस्क को बूट क्रम में डालें
क्लोन के लिए एक EFI रिकॉर्ड जोड़ें। आवश्यकतानुसार -L लेबल को संशोधित करें।
sudo efibootmgr -c -g -d /dev/sdX -p 1 -L "Ubuntu #2" -l '\EFI\ubuntu\grubx64.efi'
अब, सिस्टम को रिबूट करने के लिए इसे वापस सामान्य होना चाहिए (RAID डिवाइस अभी भी सिंक हो सकते हैं)!
स्लीप स्क्रिप्ट क्यों?
समुदाय द्वारा यह सुझाव दिया गया है कि स्लीप स्क्रिप्ट को जोड़ना अनावश्यक हो सकता है और इसके बाद उपयोग GRUB_CMDLINE_LINUX="rootdelay=30"
में लाया जा सकता /etc/default/grub
है sudo update-grub
। यह सुझाव निश्चित रूप से क्लीनर है और डिस्क विफलता / प्रतिस्थापित परिदृश्य में काम करता है। हालांकि, वहाँ एक चेतावनी है ...
मैंने अपने दूसरे SSD को डिस्कनेक्ट कर दिया और पाया कि rootdelay=30
नींद की स्क्रिप्ट के बजाय आदि के साथ :
1) सिस्टम "विफल" ड्राइव के बिना अपमानित मोड में बूट करता है।
2) गैर-अपमानित बूट (दोनों ड्राइव मौजूद) में, बूट समय कम हो जाता है। देरी केवल दूसरी ड्राइव के गुम होने की संभावना है।
1) और 2) जब तक मैंने अपना दूसरा ड्राइव दोबारा नहीं जोड़ा तब तक बहुत अच्छा लग रहा था। बूट करने पर, RAID सरणी इकट्ठा करने में विफल रही और मुझे initramfs
तुरंत पता चला कि मुझे क्या करना है। यह संभव है कि उबंटू लाइव यूएसबी स्टिक से बूटिंग करके) स्थिति को उबारना संभव हो, ख) स्थापित करना mdadm
और ग) मैन्युअल रूप से सरणी को फिर से इकट्ठा करना ... लेकिन मैंने कहीं गड़बड़ कर दी। इसके बजाय, जब मैंने इस परीक्षण को स्लीप स्क्रिप्ट के साथ फिर से चलाया , (हाँ, मैंने nth समय के लिए ऊपर से HOWTO शुरू किया ...), सिस्टम ने बूट किया। सरणियाँ अपमानित मोड में थीं और मैं /dev/sdb[23]
बिना किसी अतिरिक्त यूएसबी स्टिक के विभाजन को मैन्युअल रूप से जोड़ सकता था । मुझे नहीं पता कि नींद की स्क्रिप्ट काम क्यों rootdelay
नहीं करती है। शायद mdadm
दो से भ्रमित हो जाता है, थोड़ा आउट-ऑफ-सिंक घटक डिवाइस, लेकिन मैंने सोचाmdadm
कि संभाल करने के लिए डिजाइन किया गया था। वैसे भी, जब से स्लीप स्क्रिप्ट काम करती है, मैं उससे चिपका रहता हूं।
यह तर्क दिया जा सकता है कि पूरी तरह से स्वस्थ RAID घटक डिवाइस को हटाने, RAID को अपमानित मोड में फिर से बूट करना और फिर घटक डिवाइस को फिर से जोड़ना एक अवास्तविक परिदृश्य है: यथार्थवादी परिदृश्य यह है कि एक उपकरण विफल हो जाता है और एक नए द्वारा प्रतिस्थापित किया जाता है , mdadm
भ्रमित होने के लिए कम अवसर छोड़ना । मैं उस तर्क से सहमत हूं। हालाँकि, मुझे नहीं पता कि परीक्षण कैसे करना है कि सिस्टम वास्तव में कुछ हार्डवेयर को अक्षम करने के अलावा एक हार्डवेयर विफलता को कैसे सहन करता है! और परीक्षण के बाद, मैं एक निरर्थक, कार्य प्रणाली में वापस आना चाहता हूं। (ठीक है, मैं कर सकता है एक और मशीन के लिए मेरी दूसरी एसएसडी देते हैं और स्वाइप यह इससे पहले कि मैं इसे पुनः जोड़ देता है, लेकिन यह संभव नहीं है।)
संक्षेप में: मेरे ज्ञान के अनुसार, rootdelay
समाधान साफ-सुथरा है, गैर-अपमानित जूते के लिए स्लीप स्क्रिप्ट की तुलना में तेज है, और वास्तविक ड्राइव विफलता / परिदृश्य को बदलने के लिए काम करना चाहिए। हालाँकि, मुझे इसका परीक्षण करने का कोई व्यावहारिक तरीका नहीं पता है। इसलिए, कुछ समय के लिए, मैं बदसूरत नींद की स्क्रिप्ट से चिपके रहूंगा।