⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000002.htm

📁 一份很好的linux入门资料
💻 HTM
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人:&nbsp;ttao&nbsp;(苦乐生涯),&nbsp;信区:&nbsp;Linux&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;superblock&nbsp;corrupt后的修复工作&nbsp;<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Tue&nbsp;Oct&nbsp;19&nbsp;21:03:06&nbsp;1999)&nbsp;<BR>&nbsp;<BR>在linux文件系统里,superblock扮演着相当重要的角色,&nbsp;<BR>它记录了inode表和空闲块表在硬盘上的存放位置等重要信息,&nbsp;<BR>由于它很重要,所以系统自动将superblock进行冗余保存,在&nbsp;<BR>恢复严重瘫痪的文件系统时可能要对它进行操作.&nbsp;<BR>&nbsp;<BR>前几天我就遭遇乐superblock&nbsp;corrupt而被它&quot;折磨&quot;到现在&nbsp;<BR>才解脱,我想把这一次经验教训贴出来,希望以后对朋友们处理&nbsp;<BR>这样的&quot;灾难&quot;有所帮助.在此也特别感谢netiscpu,zhanglu,lisuit&nbsp;<BR>等大虾的大力帮助.&nbsp;<BR>&nbsp;<BR>出现superblock&nbsp;corrupt的原因基本是非正常关机&nbsp;<BR>引起的,而且关机的时候你的硬盘状况又不太好.&nbsp;<BR>也有例外情况,我听说有人在用samba时shutdown&nbsp;<BR>就出现乐superblock&nbsp;corrupt,当然有的也可能是假象,&nbsp;<BR>比如你的硬盘是scsi硬盘,系统崩溃后用从光盘上做的boot/rescue&nbsp;<BR>软盘启动,那么你e2fsck任何一个分区都会得到superblock&nbsp;<BR>corrupt的提示,这并不是e2fsck比较笨,因为scsi硬盘没有驱动&nbsp;<BR>和superblock&nbsp;corrupt对于他来讲都是一样的--找不到inode头.&nbsp;<BR>&nbsp;<BR>当你的系统出现superblock&nbsp;corrupt而无法启动时,不要着急&nbsp;<BR>慢慢来.&nbsp;<BR>&nbsp;<BR>1.用应急盘启动,先看fdisk的结果.&nbsp;<BR>如果你的分区表看起来正常,那么恢复的可能性就比较大乐,&nbsp;<BR>如果出现cannot&nbsp;open&nbsp;/dev/sda2的提示,那么想一想你的&nbsp;<BR>scsi卡启动没有,如果没有,那么你可以试着用小红帽的安装&nbsp;<BR>光盘启动,记住,仅仅是看分区表,千万不要写它.然后把分区情况详细&nbsp;<BR>记录下来.&nbsp;<BR>&nbsp;<BR>2.试着e2fsck&nbsp;/dev/hda2,(先不要加-p&nbsp;-y&nbsp;之类的参数,)&nbsp;<BR>用手动进行修复,同时也可以了解具体是文件系统的那些&nbsp;<BR>地方损坏了,如果你的运气好,e2fsck过去了,那么恭喜你,&nbsp;<BR>/dev/hda2已经基本修复,当然修复的可能是99.9%,也可能是99%&nbsp;<BR>这就看文件系统的损坏程度乐,不过现在可以说你的数据已经&nbsp;<BR>都找回来了.剩下的事就是mount上把数据备份出来以防万一.&nbsp;<BR>&nbsp;<BR>3.如果e2fsck没过去(确保你的硬盘已经正确驱动乐),&nbsp;<BR>也不要着急,因为superblock在硬盘中有很多地方有备份,现在你最好&nbsp;<BR>把硬盘卸下来挂到另一个好的linux系统上,当然同样要保证硬盘&nbsp;<BR>被正确驱动乐.先用e2fsck&nbsp;/dev/hda2,如果结果和前面一样&nbsp;<BR>就用e2fsck&nbsp;-b&nbsp;xxx&nbsp;-f&nbsp;/dev/hda2,&nbsp;xxx是硬盘上superblock的&nbsp;<BR>备份块,xxx=n*8192+1,n=1,2,3...&nbsp;<BR>一般来讲,如果系统瘫痪的真正原因是superblock损坏,&nbsp;<BR>这种办法就应该可以恢复你的数据了。&nbsp;<BR>如果执行后的结果还是不能通过,那么往下一步.&nbsp;<BR>&nbsp;<BR>4.利用dd命令.&nbsp;<BR>&nbsp;&nbsp;先dd&nbsp;if=/dev/hda2&nbsp;of=/tmp/rescue&nbsp;&nbsp;conv=noerror&nbsp;<BR>(/tmp/rescue是一个文件),把重要的数据拷出来,当然,&nbsp;<BR>这个盘要比你损坏的盘大一点,否则拷不下.另外,&nbsp;<BR>上面的dd命令在不同的境况下if和of应作相应的修改,&nbsp;<BR>写在这里只是一个例子,总之在用dd之前最好先看看man.&nbsp;<BR>&nbsp;&nbsp;刚才你已经看到你的分区表了,现在找一个和你的硬盘一样&nbsp;<BR>的硬盘,应该是一摸一样(大小,型号),在这块硬盘上&nbsp;<BR>按照坏盘上的分区表分区,分的区也应该是也是一模一样&nbsp;<BR>然后用dd命令把坏盘上superblock&nbsp;location后的东东&nbsp;<BR>全部拷到好盘的superblock&nbsp;location后,愿上帝保佑你,&nbsp;<BR>当你再次启动系统时就可以看到熟悉的数据了,有人用这种方法&nbsp;<BR>恢复了99%以上的数据,不过好在这种方法(包括前面的方法)&nbsp;<BR>都没有动那块坏盘上的数据,如果还是没有恢复,那没你还有最后一种选择.&nbsp;<BR>&nbsp;<BR>5.&nbsp;在手册页里称这种方法为last-ditch&nbsp;recovery&nbsp;method,&nbsp;<BR>就是说这是最后的恢复方法,只有当你已经尝试了其他的方法,&nbsp;<BR>都没有能恢复你的数据的情况下才用,因为这需要冒一定的风险.&nbsp;<BR>&nbsp;&nbsp;把你的硬盘挂在一台好的linux&nbsp;box上,运行:&nbsp;<BR>#mke2fs&nbsp;-S&nbsp;/dev/hda2(如果你的数据在hda2里)&nbsp;<BR>这条命令只重建superblock,而不碰inode表,不过这仍有一定的&nbsp;<BR>风险。good&nbsp;luck&nbsp;to&nbsp;you&nbsp;all.&nbsp;<BR>&nbsp;<BR>当时也有人建议我如果实在不行的话就重装系统(不动分区也不格式化),&nbsp;<BR>这也可能有效,但你也应该清楚这种方法就像mke2fs&nbsp;-S&nbsp;/dev/hd*&nbsp;<BR>一样是有风险的。&nbsp;<BR>&nbsp;<BR>一点建议:&nbsp;<BR>如果你的硬盘不是可以轻易就重做的,最好在建立一个新的系统后:&nbsp;<BR>&nbsp;<BR>1。拿出笔和纸,把你的分区信息详细记录下来.&nbsp;<BR>&nbsp;<BR>2.&nbsp;用mkbootdisk做好现在这个系统的启动盘并测试.&nbsp;<BR>特别是如果你用的硬盘是scsi的。&nbsp;<BR>&nbsp;<BR>3.&nbsp;在用mke2fs建立一个文件系统后将屏幕上的superblock&nbsp;<BR>所在位置记录下来。&nbsp;<BR>&nbsp;<BR>4.&nbsp;用crontab对重要数据进行备份。&nbsp;<BR>&nbsp;<BR>ext2文件系统(包括其他的unix文件系统)是很强壮的,&nbsp;<BR>但你仍然应该小心的呵护他

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -