linux断电系统修复
来源:互联网 发布:中国十堰淘宝第一村 编辑:程序博客网 时间:2024/06/09 13:45
对于突然断电有可能会出现linux系统无法正常启动的情况,通常是由于断电造成硬盘的数据异常,表现出来就是文件系统损坏,严重的还有分区表损坏。正好昨天又让我遇到了,于是写下此文。
当出现此情况的时候,切忌把硬盘格式化,一旦格式化数据也就不容易找回了。linux系统提供了fsck命令用于修复文件系统,fdsik命令用于磁盘分区,dd命令用于底层的数据拷贝(可参考dd命令使用详解)。
当硬盘分区能够识别只需要使用fsck命令修复即可。比如,第一个硬盘的第二个分区损坏
fsck /dev/sda2 -y;执行此命令时需要卸载/dev/sda2或者以只读方式挂载也可以,-y参数是默认所有回答yes
修复完成后应该就能正常使用了。
但是笔者遇到了更为严重的情况,那就是分区表损坏。分区无法识别,所以也没法使用fsck进行修复。使用fdisk查看硬盘信息如下:
1
2
3
4
5
6
7
8
9
10
11
ubuntu-root#fdisk /dev/sdc
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a
new
DOS disklabel with disk identifier 0x0f6f29eb.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
这种时候只能恢复分区表,所以为了数据安全,一定要记得备份分区表。我们知道,硬盘第一个扇区MBR包含了分区表,具体是:引导代码(446byte)+分区表(64byte)+0x55AA(2Byte)。所以如果硬盘只是用作数据存储,可以恢复前512byte的数据,比如备份好的mbr是文件mbr.bak。那么,备份和恢复MBR记录:
1
2
3
4
5
dd
if
=/dev/sda of=mbr.bak bs=512 count=1;备份第一个硬盘的MBR
dd
if
=mbr.bak of=/dev/sda bs=512 count=1;恢复第一个硬盘的MBR
dd
if
=mbr.bak of=/dev/sda bs=1 count=64 skip=446;只恢复分区表
当然我是没有备份分区表的,不过因为是虚拟机使用的虚拟磁盘,所以一个磁盘就只有一个主分区(参数是fdisk的默认值,于是抱着尝试的心理用fdisk重新分区,一个主分区并且参数默认)。然后使用fsck修复居然成功了。
本文地址:http://www.yunlipiao.com/317.html,出自云里飘博客,转载请保留链接 0 0
- linux断电系统修复
- ubuntu断电修复
- Linux 系统修复
- 修复Linux系统
- linux紧急修复系统
- linux: 系统修复
- Linux系统引导修复
- linux 系统 权限 修复
- 修复linux系统引导
- linux笔记-系统修复
- linux系统修复
- linux系统之系统修复
- linux下系统磁盘以为断电而无法启动
- linux系统修复Repair filesystem
- linux系统中的grub修复
- 断电后WindowsXP文件丢失后修复
- 【mysql 因为断电表损坏修复方法】
- windows 断电重启进入修复模式
- 利用NFS挂载盘进行Oracle备份问题的解决
- 教你如何与程序员好好玩耍
- C++拷贝构造函数详解
- sqlserver 存储过程 返回多个select 结果集
- 关于Unrecognized Windows Sockets error: 0: JVM_Bind 异常解决
- linux断电系统修复
- 国内外优秀的源码网站
- 增加ORACLE归档位置到NFS(转)
- 收藏的Android非常好用的组件或者框架
- Spring Data JPA
- sufficient statistics
- STL中map的数据结构
- 实战教程:六步教你做好微信内容营销
- struts2 内置验证器