linux 分区错误怎么解决

linux 分区错误怎么解决,第1张

硬盘无法识别,无法通过自检,在Linux下成功修复分区表出错。

给同学重装下系统,再GHOST的过程中大概是没有事先格式化系统盘,然后再解压过程中还打开了下,导致了程序一直未响应卡在那里,等了很久没反应,于是就强制关机,悲剧就出来了,重启后BIOS进不去,硬盘自检过不去。 由于上次我已经处理过同样的问题,觉得应该也是硬盘分区表出了问题。于是把硬盘拆出来,装到移动硬盘盒里面,然后在放在我的电脑上检测下。

之前用的是win7打开 DG还有PPTD来检测下,悲剧的是竟然没检测出来!! 上次我自己硬盘分区表出问题的时候至少可以检测出来并且修复好了,这次悲情了。。。又实验了其他方法,还是没辙,觉得可能是硬盘碎片多然后导致彻底损坏了吧。。 最后觉得还是试试在Linux下能不能检测出来,毕竟Linux下自带的一些驱动和系统管理方面更强,于是,奇迹就出现了。

我重启开了Ubuntu,然后插上他的硬盘,终端上输入 sudo fdisk -l 这下竟然可以看到同学那块硬盘的信息,不过还是不能正确读取出来,不过下面显示了一条很重要的信息:

Partition table entries are not in disk order

说明了现在分区表中的分区顺序和硬盘物理分区的顺序不一样。

解决方法如下:

1.在终端执行以下命令:sudo fdisk -l 先察看好那一块盘出现上述信息。

然后再输入 sudo fdisk /dev/sdb (用你的移动硬盘位置代替/dev/sdb,勿选中你本地的盘)

有提示后输入 x 回车,在命令列表中会有一项 f fix partition order

然后再输入 f 回车,成功会提示 done.

然后输入 p 回车,查看调整后的分区表

最后输入 w 回车,这个命令是将之前的 *** 作写入硬盘

重启之后就会启用新的分区表。

提示:对于修复本地磁盘的话,最好在重启之前先将修改前后的分区表信息比较一下,查看引导分区和交换分区的路径是否变动,如果有变动还要更新 /etc/fstab 和 /boot/grub/menu.lst 文件,以免发生无法开机的问题。

于错误的使用分区工具而带来的分区丢失,硬盘磁盘分区遭到损坏的情况下,使用叫做「TestDisk」的工具可以复原已损坏的分区。

TestDisk 支持在 Windows、Linux、Unix、Mac OS 等系统上执行。TestDisk 还支持包括 FAT、NTFS、Ext2、Ext3、ReiserFS、RAID 等在内的广泛的文件系统。

下面就介绍一下如何使用TestDisk急性恢复(注)。

注:可以使用TestDisk进行复原的场合,也就是硬盘HDD上的分区(该分区有原有数据纪录)已经损坏的情形。但是假如损坏之后,重新再次做成了新分区的话,复原的可能性比较小,很困难。

TestDisk可以从http://www.cgsecurity.org/wiki/PhotoRec下在(注)。下载Fedora Core 6 对应的RPM包文件。例如、假如使用GNOME的分区治理软件「GParted」(Gnome Partition Editor)误删除了/dev/hda5分区。

注:Linux下恢复误删除的文件中介绍了使用「PhotoRec」对误删除的文件进行恢复。

注:TestDisk是恢复分区信息的软件、针对分区表被删除以及MBR(master boot record)被修改的恢复分区信息软件:TestDisk、使用前请先确认。

对于安装和配置请参照Linux下恢复误删除的文件。

以root权限登陆,启动TestDisk。

# testdisk

首先,选择恢复 *** 作中的log文件(testdisk.log)的纪录方式。

[Create]新建

[Append]追加

[No Log]不纪录

选择log文件的记录方式

选择了log文件的记录方式后、显示了处于连接状态的磁盘设备。然后选择要恢复的磁盘分区、选择[Proceed]。在这里选择装有Linux/Windows XP的硬盘HDD「Disk /dev/hda」。

在列出的磁盘设备中,选择要恢复的分区,然后选择磁盘分区的种类。Linux/Windows就选[Intel]。

下示画面中选择[Analyse],对分区进行分析。

显示了当前分区的状态。然后选择[Proceed]、显示分析结果。

分区状态表示

分区结构以绿色文字表示。和分析之前的画面相比、Linux的分区增加了一项,这个就是被误删除了的分区,选择之。

按[P]键,该分区根部的文件和索引被表示出来,假如显示正确的画,分析结果就可以正确的推算。然后用这个方法,对其他的盘符进行 *** 作。

分区的分析结果

按[Enter]键,显示分析结果被反映到磁盘。并且被恢复。

现在的状态,恢复的信息还没有被写到硬盘上,必须选择[Write],才能真正的被写到磁盘上。写 *** 作执行的确认信息显示的时候,按[Y]键确认之。

写 *** 作执行完毕,需要重新启动,按[Enter]键。

最后退出[Quit],TestDisk结束。系统重新启动。

第一种 误删文件进程还在

这种方法就比较简单,能还原的文件限制也比较多。如果被删除的文件的进程还是存在,即能找到进程PID。通过命令 lsof | grep (deletefile) 查找到进程id。然后就是进入进程目录 cd /proc/PID/fd 。然后可以通过 ll 命令查看具体文件信息,将有软连接到被删除文件的文件复制就可还原了。

第二种 使用extundelete之类基于inode的工具

针对 Linux 下的 ext 文件系统来说,常用的 Linux 文件删除恢复工具有 debugfs、ext3grep、extundelete 等。extundelete 是一个开源的数据恢复工具,支持 ext3、ext4 文件系统,其官方站点位于http://extundelete.sourceforce.net/,目前最新稳定版本为 0.2.0。

这个工具和还有一些其他类似的恢复工具,都是基于inode,还原文件的,也就是说,需要被删除文件的inode还在,没有被覆盖,即在文件删除之后,没有读写输入。所以第一件事就是挂起文件所在分区。但是这个 *** 作有个问题就是,如果系统只有一个挂载盘,而且还是线上服务的话,挂起是不现实的。并且就算读写不多,但是系统本身没有安装这些恢复工具,在你安装编译这些恢复工具时的读写,也很可能把删除的文件inode覆盖了。

但是如果,系统拥有多个挂载盘,且被删除文件分区所在的文件盘挂起并不印象,你还是可以尝试这个方法的。或者系统本身就有安装这个工具,距离文件删除不是很久,也可以试一下,也许inode还在呢。

具体使用方法这里就不说了,网上很多教程,随便搜一下都是。

第三种 testdisk工具

testdisk 是分区表恢复、raid 恢复、分区恢复的开源免费工具(testdisk 支持如下文件系统: FAT12/FAT16/FAT32/NTFS/ext2/ext3/ext4)。testdisk 支持的功能: 修复分区表, 恢复已删除分区,用 FAT32 备份表恢复启动扇区,重建 FAT12/FAT16/FAT32 启动扇区,修复 FAT 表,重建 NTFS 启动扇区,用备份表恢复 NTFS 启动扇区,用 mft 镜像表(mft mirror)修复 mft 表,查找 ext2/ext3 备份的 superblock,从 FAT,NTFS 及 ext2 文件系统恢复删除文件,从已删除的 FAT,NTFS 及 ext2/ext3 分区复制文件。

所以,这个工具是不基于inode的,即时文件后,没有挂起分区,读写 *** 作一直在进行,或者过去很久了,都是可以有机会恢复文件的。

但也不是百分百能成功,举个栗子,被删除的是 /usr/local/mytest 这个文件夹。然后你这个文件夹下部分文件的备份,为了及时先恢复部分线上业务,然后你mkdir /usr/local/mytest 然后将部分备份复制了进去。那么testdisk也无法拯救恢复了。还有就是testdisk恢复文件时,还需要注意看一下文件大小。如果文件大小显示为0,那么就算选择恢复这个文件,也是会得到一个0kb的文件。

所以这个适用于,一些inode已经被覆盖,但是文件物理存储块还未被覆盖的文件,可以尝试一下这个方法,也许可以找回部分丢失文件。

在使用rm -rf这个命令时一定要小心再小心,不然造成的后果是很严重的,因此提醒大家再使用这个命令时一定要保持头脑清醒。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/6230445.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-18
下一篇 2023-03-18

发表评论

登录后才能评论

评论列表(0条)

保存