Linux 灾难恢复.docx

上传人:b****5 文档编号:28938978 上传时间:2023-07-20 格式:DOCX 页数:23 大小:197.23KB
下载 相关 举报
Linux 灾难恢复.docx_第1页
第1页 / 共23页
Linux 灾难恢复.docx_第2页
第2页 / 共23页
Linux 灾难恢复.docx_第3页
第3页 / 共23页
Linux 灾难恢复.docx_第4页
第4页 / 共23页
Linux 灾难恢复.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

Linux 灾难恢复.docx

《Linux 灾难恢复.docx》由会员分享,可在线阅读,更多相关《Linux 灾难恢复.docx(23页珍藏版)》请在冰豆网上搜索。

Linux 灾难恢复.docx

Linux灾难恢复

Linux灾难恢复

Linux发行版本众多,现如今也得到了越来越广泛的应用,同时也面临着系统出现故障的潜在风险,本文将以发行版本RHEL6为例详细介绍几种Linux灾难恢复技术和方法,以确保Linux系统的安全恢复。

在介绍Linux灾难恢复方法之前,我们先来了解下MBR,其全称为MasterBootRecord,即硬盘的主引导记录。

它由三个部分组成,主引导程序、硬盘分区表和硬盘有效标志。

在总共512字节的主引导扇区里主引导程序(Bootloader)占446个字节,第二部分是硬盘分区表,占64个字节,硬盘有多少分区以及每一分区的大小都记录在其中。

第三部分是硬盘有效标志,占2个字节。

具体如图示:

图1.MBR

 

 

系统硬盘分区表破坏

生产环境中的Linux服务器可能会因为病毒或者意外断电而引起硬盘分区表被破坏,通常恢复硬盘分区表需要之前我们先备份其分区表的信息,一般我们使用USB外接设备来备份主机硬盘的分区表。

在主机上挂载USB设备后我们查看系统当前磁盘设备:

[root@FCoE~]#fdisk-l

Disk/dev/sda:

43.0GB,42991616000bytes

255heads,63sectors/track,5226cylinders

Units=cylindersof16065*512=8225280bytes

Sectorsize(logical/physical):

512bytes/512bytes

I/Osize(minimum/optimal):

512bytes/512bytes

Diskidentifier:

0x00032735

DeviceBootStartEndBlocksIdSystem

/dev/sda1*11713107283Linux

Partition1doesnotendoncylinderboundary.

/dev/sda217147104857682Linuxswap/Solaris

Partition2doesnotendoncylinderboundary.

/dev/sda314752274080332883Linux

Disk/dev/sdb:

2147MB,2147483648bytes

255heads,63sectors/track,261cylinders

Units=cylindersof16065*512=8225280bytes

Sectorsize(logical/physical):

512bytes/512bytes

I/Osize(minimum/optimal):

512bytes/512bytes

Diskidentifier:

0x00000000

Disk/dev/sdbdoesn'tcontainavalidpartitiontable

 

现在我们在sdb这个设备上创建一个新的分区:

[root@FCoE~]#fdisk/dev/sdb

DevicecontainsneitheravalidDOSpartitiontable,norSun,SGIorOSFdisklabel

BuildinganewDOSdisklabelwithdiskidentifier0xcdd48395.

Changeswillremaininmemoryonly,untilyoudecidetowritethem.

Afterthat,ofcourse,thepreviouscontentwon'tberecoverable.

Warning:

invalidflag0x0000ofpartitiontable4willbecorrectedbyw(rite)

WARNING:

DOS-compatiblemodeisdeprecated.It'sstronglyrecommendedto

switchoffthemode(command'c')andchangedisplayunitsto

sectors(command'u').

Command(mforhelp):

n

Commandaction

eextended

pprimarypartition(1-4)

p

Partitionnumber(1-4):

1

Firstcylinder(1-261,default1):

Usingdefaultvalue1

Lastcylinder,+cylindersor+size{K,M,G}(1-261,default261):

Usingdefaultvalue261

Command(mforhelp):

p

Disk/dev/sdb:

2147MB,2147483648bytes

255heads,63sectors/track,261cylinders

Units=cylindersof16065*512=8225280bytes

Sectorsize(logical/physical):

512bytes/512bytes

I/Osize(minimum/optimal):

512bytes/512bytes

Diskidentifier:

0xcdd48395

DeviceBootStartEndBlocksIdSystem

/dev/sdb11261209645183Linux

Command(mforhelp):

w

Thepartitiontablehasbeenaltered!

Callingioctl()tore-readpartitiontable.

Syncingdisks.

 在新分区sdb1上创建文件系统:

[root@FCoE~]#mkfs.ext3/dev/sdb1

mke2fs1.41.12(17-May-2010)

Filesystemlabel=

OStype:

Linux

Blocksize=4096(log=2)

Fragmentsize=4096(log=2)

Stride=0blocks,Stripewidth=0blocks

131072inodes,524112blocks

26205blocks(5.00%)reservedforthesuperuser

Firstdatablock=0

Maximumfilesystemblocks=536870912

16blockgroups

32768blockspergroup,32768fragmentspergroup

8192inodespergroup

Superblockbackupsstoredonblocks:

32768,98304,163840,229376,294912

Writinginodetables:

done

Creatingjournal(8192blocks):

done

Writingsuperblocksandfilesystemaccountinginformation:

done

Thisfilesystemwillbeautomaticallycheckedevery24mountsor

180days,whichevercomesfirst.Usetune2fs-cor-itooverride.

 

挂载新的文件系统:

[root@FCoE~]#mount/dev/sdb1/mnt/

 

通常我们通过备份硬盘的MBR来备份硬盘分区表:

[root@FCoE~]#ddif=/dev/sdaof=/mnt/sda.mbrbs=512count=1

1+0recordsin

1+0recordsout

512bytes(512B)copied,0.000777948s,658kB/s

 

现在我们来写零硬盘分区表来实现类似分区表被破坏的结果:

[root@FCoE~]#ddif=/dev/zeroof=/dev/sdabs=1count=64skip=446seek=446

64+0recordsin

64+0recordsout

64bytes(64B)copied,0.00160668s,39.8kB/s

 查询硬盘sda上的分区信息,发现其已不包含任何分区:

[root@FCoE~]#fdisk-l

Disk/dev/sda:

43.0GB,42991616000bytes

255heads,63sectors/track,5226cylinders

Units=cylindersof16065*512=8225280bytes

Sectorsize(logical/physical):

512bytes/512bytes

I/Osize(minimum/optimal):

512bytes/512bytes

Diskidentifier:

0x00032735

DeviceBootStartEndBlocksIdSystem

Disk/dev/sdb:

2147MB,2147483648bytes

255heads,63sectors/track,261cylinders

Units=cylindersof16065*512=8225280bytes

Sectorsize(logical/physical):

512bytes/512bytes

I/Osize(minimum/optimal):

512bytes/512bytes

Diskidentifier:

0xcdd48395

DeviceBootStartEndBlocksIdSystem

/dev/sdb11261209645183Linux

 

当主机硬盘分区表丢失了之后,再次启动后GRUB会因找不到配置文件而进入命令行模式:

图2.分区表丢失

 

接下来我们挂载RHEL6的安装盘,同时也接入我们之前备份的USB设备,然后重启主机,选择CD-ROM为第一引导设备,启动后选择“Rescueinstalledsystem”。

图3.选择援救

 

按照提示,最终我们选择一个shell。

图4.选择shell

 

我们查询系统磁盘信息,发现硬盘设备sda没有包含任何分区。

bash-4.1#fdik–l

Disk/dev/sda:

43.0GB,42991616000bytes

255heads,63sectors/track,5226cylinders

Units=cylindersof16065*512=8225280bytes

Sectorsize(logical/physical):

512bytes/512bytes

I/Osize(minimum/optimal):

512bytes/512bytes

Diskidentifier:

0x00032735

DeviceBootStartEndBlocksIdSystem

Disk/dev/sdb:

2147MB,2147483648bytes

255heads,63sectors/track,261cylinders

Units=cylindersof16065*512=8225280bytes

Sectorsize(logical/physical):

512bytes/512bytes

I/Osize(minimum/optimal):

512bytes/512bytes

Diskidentifier:

0xcdd48395

DeviceBootStartEndBlocksIdSystem

/dev/sdb11261209645183Linux

 

我们来恢复它的硬盘分区表,创建一个目录并且挂载之前备份的USB设备,我们看到它的设备名是/dev/sdb。

bash-4.1#mount/dev/sdb1/usb

bash-4.1#ls/usb

lost+foundsda.mbr

 

通过原来备份的sda.mbr文件来恢复硬盘设备sda的硬盘分区表:

bash-4.1#ddif=/usb/sda.mbrof=/dev/sdabs=1count=64skip=446seek=446

64+0recordsin

64+0recordsout

64bytes(64B)copied,0.038358s,4.6kB/s

 

再次查询系统磁盘信息:

bash-4.1#fdisk-l

Disk/dev/sda:

43.0GB,42991616000bytes

255heads,63sectors/track,5226cylinders

Units=cylindersof16065*512=8225280bytes

Sectorsize(logical/physical):

512bytes/512bytes

I/Osize(minimum/optimal):

512bytes/512bytes

Diskidentifier:

0x00032735

DeviceBootStartEndBlocksIdSystem

/dev/sda1*11713107283Linux

Partition1doesnotendoncylinderboundary.

/dev/sda217147104857682Linuxswap/Solaris

Partition2doesnotendoncylinderboundary.

/dev/sda314752274080332883Linux

Disk/dev/sdb:

2147MB,2147483648bytes

255heads,63sectors/track,261cylinders

Units=cylindersof16065*512=8225280bytes

Sectorsize(logical/physical):

512bytes/512bytes

I/Osize(minimum/optimal):

512bytes/512bytes

Diskidentifier:

0xcdd48395

DeviceBootStartEndBlocksIdSystem

/dev/sdb11261209645183Linux

 

硬盘设备sda的分区表已经恢复,重启后系统便可正常引导。

 

系统GRUB损坏

类似得我们可以来写零Bootloader来实现GRUB被破坏的结果:

[root@FCoEgrub]#ddif=/dev/zeroof=/dev/sdabs=446count=1

1+0recordsin

1+0recordsout

446bytes(446B)copied,0.0017583s,254kB/s

 

重启后系统会因找不到GRUB而卡在“BootingfromHardDisk…”

挂载系统安装光盘然后选择进入Rescue模式,然后恢复GRUB:

bash-4.1#chroot/mnt/sysimage

sh-4.1#grub

grub>roothd(0,0)

grub>setup(hd0)

grub>quit

图5.恢复GRUB

 

重启主机后,系统可正常引导。

系统内核文件丢失

系统丢失内核kernel文件,再次启动后会提示找不到文件。

图6.内核丢失

 

挂载系统安装盘进入援救模式,检查/boot目录下发现没有kernel文件。

bash-4.1#chroot/mnt/sysimage

bash-4.1#ls/boot

ls

config-2.6.32-71.el6.x86_64lost+found

efisymvers-2.6.32-71.el6.x86_64.gz

grubSystem.map-2.6.32-71.el6.x86_64

initramfs-2.6.32-71.el6.x86_64.img

 

从挂载的系统安装盘强制重新安装内核:

sh-4.1#mount–oloop/dev/sr0/media

sh-4.1#cd/media/Server/Packages

sh-4.1#rpm-ivh--forcekernel-2.6.32-71.el6.x86_64.rpm

warning:

kernel-2.6.32-71.el6.x86_64.rpm:

HeaderV3RSA/SHA256Signature,\

keyIDfd431d51:

NOKEY

Preparing...###########################################[100%]

1:

kernel###########################################[100%]

 

在/boot目录下已经生成新的kernel文件vmlinuz-2.6.32-71.el6.x86_64

sh-4.1##ls/boot

config-2.6.32-71.el6.x86_64lost+found

efisymvers-2.6.32-71.el6.x86_64.gz

grubSystem.map-2.6.32-71.el6.x86_64

initramfs-2.6.32-71.el6.x86_64.imgvmlinuz-2.6.32-71.el6.x86_64

 

重启主机后,系统可正常引导。

系统镜像文件丢失

系统丢失镜像文件,主机启动后黑屏。

图7.镜像丢失

 

挂载系统安装盘进入援救模式,检查/boot目录下发现没有镜像文件。

bash-4.1#chroot/mnt/sysimage

sh-4.1#ls/boot

config-2.6.32-71.el6.x86_64symvers-2.6.32-71.el6.x86_64.gz

efiSystem.map-2.6.32-71.el6.x86_64

grubvmlinuz-2.6.32-71.el6.x86_64

lost+found

 

重新生成镜像文件initramfs-2.6.32-71.el6.x86_64.img。

sh-4.1#cd/boot

sh-4.1#mkinit

sh-4.1#ls

config-2.6.32-71.el6.x86_64lost+found

efisymvers-2.6.32-71.el6.x86_64.gz

grubSystem.map-2.6.32-71.el6.x86_64

initramfs-2.6.32-71.el6.x86_64.imgvmlinuz-2.6.32-71.el6.x86_64

 

重启主机后,系统可正常引导。

 

系统/boot分区损坏

一般来说系统/boot分区损坏,我们会先尝试修复文件系统。

如果文件系统损坏不能修复,那么我们可以参照前述的方法来依次新建/boot分区,重新安装内核和镜像,然后安装GURB再手工编辑引导菜单,以最终来恢复系统可正常引导。

通常我们需要按照如下的步骤来恢复。

创建分区

碰到比较严重的情况就是/boot分区已经完全损坏,启动时会提示找不到引导设备。

图8.引导分区损坏

 

挂载安装盘后进入援救模式,查看分区情况,发现分区/dev/sda1不存在。

bash-4.1#

Disk/dev/sda:

43.0GB,42991616000bytes

255heads,63sectors/track,5226cylinders

Units=cylindersof16065*512=8225280bytes

Sectorsize(logical/physical):

512bytes/512bytes

I/Osize(minimum/optimal):

512bytes/512bytes

Diskidentifier:

0x00000000

DeviceBootStartEndBlocksIdSystem

/dev/sda217147104857682Linuxswap/Solaris

Partition2doesnotendoncylinderboundary.

/dev/sda314752274080332883Linux

Disk/dev/sdb:

2147MB,214748

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1