生活随笔
收集整理的這篇文章主要介紹了
Linux系统灾难恢复技术和方法-[3]
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?系統 /boot 分區損壞
一般來說系統 /boot 分區損壞,我們會先嘗試修復文件系統。如果文件系統損壞不能修復,那么我們可以參照前述的方法來依次新建 /boot 分區,重新安裝內核和鏡像,然后安裝 GURB 再手工編輯引導菜單,以最終來恢復系統可正常引導。通常我們需要按照如下的步驟來恢復。
創建分區
碰到比較嚴重的情況就是 /boot 分區已經完全損壞,啟動時會提示找不到引導設備。
圖 8. 引導分區損壞
掛載安裝盤后進入援救模式,查看分區情況,發現分區 /dev/sda1 不存在。
bash-4.1#? ?Disk?/dev/sda:?43.0?GB,?42991616000?bytes? ?255?heads,?63?sectors/track,?5226?cylinders? ?Units?=?cylinders?of?16065?*?512?=?8225280?bytes? ?Sector?size?(logical/physical):?512?bytes?/?512?bytes? ?I/O?size?(minimum/optimal):?512?bytes?/?512?bytes? ?Disk?identifier:?0x00000000? ????Device?Boot??????Start?????????End??????Blocks???Id??System? ?/dev/sda2??????????????17?????????147?????1048576???82??Linux?swap?/?Solaris? ?Partition?2?does?not?end?on?cylinder?boundary.? ?/dev/sda3?????????????147????????5227????40803328???83??Linux? ??Disk?/dev/sdb:?2147?MB,?2147483648?bytes? ?255?heads,?63?sectors/track,?261?cylinders? ?Units?=?cylinders?of?16065?*?512?=?8225280?bytes? ?Sector?size?(logical/physical):?512?bytes?/?512?bytes? ?I/O?size?(minimum/optimal):?512?bytes?/?512?bytes? ?Disk?identifier:?0xcdd48395? ????Device?Boot??????Start?????????End??????Blocks???Id??System? ?/dev/sdb1???????????????1?????????261?????2096451???83??Linux?? 新建一個分區并且設置它為啟動分區。
bash-4.1#?fdisk?/dev/sda? ??WARNING:?DOS-compatible?mode?is?deprecated.?It's?strongly?recommended?to? ?????????switch?off?the?mode?(command?'c')?and?change?display?units?to? ?????????sectors?(command?'u').? ??Command?(m?for?help):?n? ?Command?action? ???e???extended? ???p???primary?partition?(1-4)? ?p? ?Partition?number?(1-4):?1? ?First?cylinder?(1-5226,?default?1):? ?Using?default?value?1? ?Last?cylinder,?+cylinders?or?+size{K,M,G}?(1-16,?default?16):? ?Using?default?value?16? ??Command?(m?for?help):?a? ?Partition?number?(1-4):?1? ??Command?(m?for?help):?p? ??Disk?/dev/sda:?43.0?GB,?42991616000?bytes? ?255?heads,?63?sectors/track,?5226?cylinders? ?Units?=?cylinders?of?16065?*?512?=?8225280?bytes? ?Sector?size?(logical/physical):?512?bytes?/?512?bytes? ?I/O?size?(minimum/optimal):?512?bytes?/?512?bytes? ?Disk?identifier:?0x00000000? ????Device?Boot??????Start?????????End??????Blocks???Id??System? ?/dev/sda1???*???????????1??????????16??????128488+??83??Linux? ?/dev/sda2??????????????17?????????147?????1048576???82??Linux?swap?/?Solaris? ?Partition?2?does?not?end?on?cylinder?boundary.? ?/dev/sda3?????????????147????????5227????40803328???83??Linux? ??Command?(m?for?help):?w? ?The?partition?table?has?been?altered!?? 重啟主機以更新分區表,然后進入援救模式,并在我們新創建的分區上創建文件系統。
bash-4.1#?mkfs.ext4?/dev/sda1? ?Filesystem?label=? ?OS?type:?Linux? ?Block?size=1024?(log=0)? ?Fragment?size=1024?(log=0)? ?Stride=0?blocks,?Stripe?width=0?blocks? ?32128?inodes,?128488?blocks? ?6424?blocks?(5.00%)?reserved?for?the?super?user? ?First?data?block=1? ?Maximum?filesystem?blocks=67371008? ?16?block?groups? ?8192?blocks?per?group,?8192?fragments?per?group? ?2008?inodes?per?group? ?Superblock?backups?stored?on?blocks:? ????????8193,?24577,?40961,?57345,?73729? ??Writing?inode?tables:?done? ?Creating?journal?(4096?blocks):?done? ?Writing?superblocks?and?filesystem?accounting?information:?done? ??This?filesystem?will?be?automatically?checked?every?38?mounts?or? ?180?days,?whichever?comes?first.??Use?tune2fs?-c?or?-i?to?override.?? 安裝內核鏡像文件
通過前述的方法我們安裝內核和鏡像文件。
bash-4.1#?chroot?/mnt/sysp_w_picpath? ?sh-4.1#?mount?/dev/sda1?/boot? ?sh-4.1#?mount?–?o?loop?/dev/sr0?/media? ?sh-4.1#?cd?/media/Server/Packages? ?sh-4.1#?rpm?-ivh?--force?kernel-2.6.32-71.el6.x86_64.rpm? ?warning:?kernel-2.6.32-71.el6.x86_64.rpm:?\? ?Header?V3?RSA/SHA256?Signature,?key?ID?fd431d51:?NOKEY? ?Preparing...????????????????###########################################?[100%]? ???1:kernel??????????????????###########################################?[100%]?? 安裝 GRUB
我們安裝 GRUB 到硬盤設備 sda 上。
sh-4.1#?grub-install?/dev/sda? ?Installation?finished.?No?error?reported.? ?This?is?the?contents?of?the?device?map?/boot/grub/device.map.? ?Check?if?this?is?correct?or?not.?If?any?of?the?lines?is?incorrect,? ?fix?it?and?re-run?the?script?`grub-install'.? ??(fd0)???/dev/fd0? ?(hd0)???/dev/sda? ?(hd1)???/dev/sdb?? 編輯引導菜單
由于我們創建了新的分區,其對應的 UUID 會發生變化,可以通過命令 blkid 來查詢分區的 UUID。
bash-4.1#?blkid? ?/dev/loop0:?TYPE="squashfs"?/dev/sda2:?UUID="7b1e0fac-ff06-492c-848d-497e2a38c54e"?TYPE="swap"?/dev/sda3:?UUID="ef89764e-04ff-4f26-ae82-dcab267ecc66"?TYPE="ext4"?/dev/sdb1:?UUID="2b824352-df2a-44c6-a547-838d46f526fa"?SEC_TYPE="ext2"?TYPE="ext3"?/dev/loop1:?LABEL="RHEL_6.0?x86_64?Disc?1"?TYPE="iso9660"?/dev/sda1:?UUID="cec964af-1618-48ff-ac33-4ef71b9d3265"?TYPE="ext4"? 上述的 sda3 為根分區,編輯 /boot/grub/grub.conf 文件更新其對應的 UUID,其內容如下。
title?Red?Hat?Enterprise?Linux?6? ?root?(hd0,0)? ?kernel?/vmlinuz-2.6.32-71.el6.x86_64?\? ?root=UUID=ef89764e-04ff-4f26-ae82-dcab267ecc66?rhgb?quiet? ?initrd?/initramfs-2.6.32-71.el6.x86_64.img?? 更新 /etc/fstab
類似的我們也需要更新 /etc/fstab 里 /boot 分區對應的新 UUID,其內容如下。
#? ?#?/etc/fstab? ?#?Created?by?anaconda?on?Sun?Mar?18?04:35:07?2012? ?#? ?#?Accessible?filesystems,?by?reference,?are?maintained?under?'/dev/disk' ?#?See?man?pages?fstab(5),?findfs(8),?mount(8)?and/or?blkid(8)?for?more?info? ?#? ?UUID=ef89764e-04ff-4f26-ae82-dcab267ecc66?/??????????????????ext4????defaults????????1?1? ?UUID=cec964af-1618-48ff-ac33-4ef71b9d3265?/boot??????????????ext4????defaults????????1?2? ?UUID=7b1e0fac-ff06-492c-848d-497e2a38c54e?swap???????????????swap????defaults????????0?0? ?tmpfs???????????????????/dev/shm????????????????tmpfs???defaults????????0?0? ?devpts??????????????????/dev/pts????????????????devpts??gid=5,mode=620??0?0? ?sysfs???????????????????/sys?????????????????????sysfs???defaults????????0?0? ?proc????????????????????/proc????????????????????proc????defaults????????0?0?? 現在我們的恢復步驟已經完成,重啟主機后 GRUB 中可見我們配置的系統列表。
圖 9. GRUB 菜單
至此 /boot 分區已恢復,系統可正常引導啟動。
圖 10. 系統啟動
總結
本文闡述了常見的 Linux 災難恢復技術和方法,及其出現嚴重災難時應注意的恢復順序,以確保 Linux 系統在出現災難時得以安全恢復。
轉載于:https://blog.51cto.com/redkey/1179089
總結
以上是生活随笔為你收集整理的Linux系统灾难恢复技术和方法-[3]的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。