使用superblock访问和修复ext3文件系统

日期: 2009-11-03 作者:Sander van Vugt翻译:唐琼瑶 来源:TechTarget中国 英文

你通常不会看见服务器文件系统出现许多问题,不过偶尔会出错并造成损害。在本文中,TechTarget中国的特约专家Sander van Vugt将教你如何访问受损害的ext3文件系统。   如果你收到一个文件系统错误,将会丢失文件系统访问权限。不过如果是ext2或ext3文件系统,有办法解决。

高级启动选项将帮助你允许访问你认为可能丢失的数据。   要获取访问,你需要超级快(superblock)。这是一个1KB的块,包含关于文件系统的所有元数据,这些数据是启动文件系统所需要的。通常作为第二个1KB块存储在ext3文件系统上。

要显示超级快的内容,能使用debugfs工具。图1显示超级快的样子: F……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

你通常不会看见服务器文件系统出现许多问题,不过偶尔会出错并造成损害。在本文中,TechTarget中国的特约专家Sander van Vugt将教你如何访问受损害的ext3文件系统。

  如果你收到一个文件系统错误,将会丢失文件系统访问权限。不过如果是ext2或ext3文件系统,有办法解决。高级启动选项将帮助你允许访问你认为可能丢失的数据。

  要获取访问,你需要超级快(superblock)。这是一个1KB的块,包含关于文件系统的所有元数据,这些数据是启动文件系统所需要的。通常作为第二个1KB块存储在ext3文件系统上。要显示超级快的内容,能使用debugfs工具。图1显示超级快的样子:

Filesystem volume name:  <none>
Last mounted on:         <not available>
Filesystem UUID:         09979101-96e0-4533-a7f3-0a2db9b07a03
Filesystem magic number: 0xEF53
Filesystem revision #:   1 (dynamic)
Filesystem features:     has_journal ext_attr
                         filetype needs_recovery sparse_super large_file
Default mount options:   (none)
Filesystem state:        clean
Errors behavior:         Continue
Filesystem OS type:      Linux
Inode count:             5248992
Block count:             10486428
Reserved block count:    524321
Free blocks:             3888202
Free inodes:             4825214
First block:             0
Block size:              4096
Fragment size:           4096
Blocks per group:        32768
Fragments per group:     32768
Inodes per group:        16352
Inode blocks per group:  511

  由于某些错误,如果文件系统出现问题,超级快就不可访问。例如,如果一个机械错误发生在服务器的硬盘上,就不能访问超级快。幸好,默认下在ext3文件系统上有一些超级快的备份。使用这些备份,仍然能启动文件系统。

  第一个超级快备份在磁盘上的位置取决于文件系统的大小。在现代大型文件系统上,能在块32768上找到备份。在小型文件系统,能在块8192上找到。要启动任何备份超级快,可以使用启动选项-o sb。

  不过,这个命令的问题在于它期望你在1024字节块里指定超级快的位置,然而现在ext3卷或分区的默认块大小是4096字节。因此,要告诉启动命令在何处找到超级快,你必须把超级快的位置乘以四。这意味着如果第一个备份超级快存储在block 32768,你应该输入块值141072。例如,如果你的/dev/sda5文件系统出现问题,你应该使用命令mount -o sb=141072 /dev/sda5/somewhere启动。

  由于你已经启动了有问题的文件系统,就该修复问题。有简单和不简单的方式。我们看看比较难的解决方案,使用dd工具复制备份超级快到旧有超级快的位置。使用代码d if=/dev/sda5 of=/dev/sda5 bs=1024 skip=141072 count=1 seek=1。完成后,你的文件系统就能像以前那样正常访问了。

  如果你不喜欢复杂的恢复丢失超级快的方式,可以使用简单的方法。只需要输入代码fsck /dev/sda5,就可以恢复受损的超级快。

相关推荐