LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
123
返回列表 发新帖
楼主: jsoso

修改 /etc/fstab 文件后,进不了系统了!

[复制链接]
 楼主| 发表于 2004-7-28 14:11:56 | 显示全部楼层
多谢各位大哥了!
我再试一试,如果不行的话只好重装了!

再问一下,超级块是个什么东西?
有什么作用?
发表于 2004-7-28 14:16:26 | 显示全部楼层
Superblock 包含一个文件系统的基本大小和其形状的描述。文件系统管理器使该信息来维持文件系统。
当文件系统被安装时,通常仅仅在数据块组 0 的 Superblock 被读进内存。在系统的每个其他块组中也含有一个
超级块的副本拷贝以防止文件系统崩溃。
发表于 2004-7-28 14:24:05 | 显示全部楼层
发信人: ttao (苦乐生涯), 信区: Linux        
标  题: superblock corrupt后的修复工作
发信站: BBS 水木清华站 (Tue Oct 19 21:03:06 1999)

在linux文件系统里,superblock扮演着相当重要的角色,
它记录了inode表和空闲块表在硬盘上的存放位置等重要信息,
由于它很重要,所以系统自动将superblock进行冗余保存,在
恢复严重瘫痪的文件系统时可能要对它进行操作.

前几天我就遭遇乐superblock corrupt而被它"折磨"到现在
才解脱,我想把这一次经验教训贴出来,希望以后对朋友们处理
这样的"灾难"有所帮助.在此也特别感谢netiscpu,zhanglu,lisuit
等大虾的大力帮助.

出现superblock corrupt的原因基本是非正常关机
引起的,而且关机的时候你的硬盘状况又不太好.
也有例外情况,我听说有人在用samba时shutdown
就出现乐superblock corrupt,当然有的也可能是假象,
比如你的硬盘是scsi硬盘,系统崩溃后用从光盘上做的boot/rescue
软盘启动,那么你e2fsck任何一个分区都会得到superblock
corrupt的提示,这并不是e2fsck比较笨,因为scsi硬盘没有驱动
和superblock corrupt对于他来讲都是一样的--找不到inode头.

当你的系统出现superblock corrupt而无法启动时,不要着急
慢慢来.

1.用应急盘启动,先看fdisk的结果.
如果你的分区表看起来正常,那么恢复的可能性就比较大乐,
如果出现cannot open /dev/sda2的提示,那么想一想你的
scsi卡启动没有,如果没有,那么你可以试着用小红帽的安装
光盘启动,记住,仅仅是看分区表,千万不要写它.然后把分区情况详细
记录下来.

2.试着e2fsck /dev/hda2,(先不要加-p -y 之类的参数,)
用手动进行修复,同时也可以了解具体是文件系统的那些
地方损坏了,如果你的运气好,e2fsck过去了,那么恭喜你,
/dev/hda2已经基本修复,当然修复的可能是99.9%,也可能是99%
这就看文件系统的损坏程度乐,不过现在可以说你的数据已经
都找回来了.剩下的事就是mount上把数据备份出来以防万一.

3.如果e2fsck没过去(确保你的硬盘已经正确驱动乐),
也不要着急,因为superblock在硬盘中有很多地方有备份,现在你最好
把硬盘卸下来挂到另一个好的linux系统上,当然同样要保证硬盘
被正确驱动乐.先用e2fsck /dev/hda2,如果结果和前面一样
就用e2fsck -b xxx -f /dev/hda2, xxx是硬盘上superblock的
备份块,xxx=n*8192+1,n=1,2,3...
一般来讲,如果系统瘫痪的真正原因是superblock损坏,
这种办法就应该可以恢复你的数据了。
如果执行后的结果还是不能通过,那么往下一步.

4.利用dd命令.
  先dd if=/dev/hda2 of=/tmp/rescue  conv=noerror
(/tmp/rescue是一个文件),把重要的数据拷出来,当然,
这个盘要比你损坏的盘大一点,否则拷不下.另外,
上面的dd命令在不同的境况下if和of应作相应的修改,
写在这里只是一个例子,总之在用dd之前最好先看看man.
  刚才你已经看到你的分区表了,现在找一个和你的硬盘一样
的硬盘,应该是一摸一样(大小,型号),在这块硬盘上
按照坏盘上的分区表分区,分的区也应该是也是一模一样
然后用dd命令把坏盘上superblock location后的东东
全部拷到好盘的superblock location后,愿上帝保佑你,
当你再次启动系统时就可以看到熟悉的数据了,有人用这种方法
恢复了99%以上的数据,不过好在这种方法(包括前面的方法)
都没有动那块坏盘上的数据,如果还是没有恢复,那没你还有最后一种选择.

5. 在手册页里称这种方法为last-ditch recovery method,
就是说这是最后的恢复方法,只有当你已经尝试了其他的方法,
都没有能恢复你的数据的情况下才用,因为这需要冒一定的风险.
  把你的硬盘挂在一台好的linux box上,运行:
#mke2fs -S /dev/hda2(如果你的数据在hda2里)
这条命令只重建superblock,而不碰inode表,不过这仍有一定的
风险。good luck to you all.

当时也有人建议我如果实在不行的话就重装系统(不动分区也不格式化),
这也可能有效,但你也应该清楚这种方法就像mke2fs -S /dev/hd*
一样是有风险的。

一点建议:
如果你的硬盘不是可以轻易就重做的,最好在建立一个新的系统后:

1。拿出笔和纸,把你的分区信息详细记录下来.

2. 用mkbootdisk做好现在这个系统的启动盘并测试.
特别是如果你用的硬盘是scsi的。

3. 在用mke2fs建立一个文件系统后将屏幕上的superblock
所在位置记录下来。

4. 用crontab对重要数据进行备份。

ext2文件系统(包括其他的unix文件系统)是很强壮的,
但你仍然应该小心的呵护他?

--
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: bbs.ndc.neu.edu]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表