NTFS磁盘恢复

NTFS磁盘恢复

版本1.0
作者:Skip Frizzell <sfrizzell [at] canton-pc [dot] com>

1情况

玛丽,一个朋友的女儿在大学:她的Windows XP笔记本电脑不断重新启动,我们怀疑,有一个坏的硬盘。 系统将启动实时CD(Ubuntu 9.10 Karmic Koala Desktop),并且可以读取硬盘上的数据。 在启动过程中,实时CD会识别磁盘错误,并尝试不成功修复它们。

2备份

保护硬盘上的信息是优先级#1。 我们不知道磁盘有什么问题,所以在尝试修复之前,我们需要备份磁盘映像。 从命令提示符下,在笔记本电脑的live CD环境的/ media / server上创建一个目录,以挂载驱动器共享以备份笔记本电脑的硬盘。

服务器以前已配置了NFS共享,但是Live CD没有安装NFS客户端。 幸运的是,Ubuntu Live CD可以从apt存储库下载并安装程序。

LiveCD$ sudo apt-get install portmap nfs-common

现在安装了nfs客户端,我们可以挂载共享,并有一个放置磁盘映像的位置

LiveCD$ sudo mount server:/storage/share /media/server

现在,在服务器上的共享看起来像一个挂载在/ media / server上的本地分区,我们可以创建我们的磁盘映像。

LiveCD$ sudo fdisk -l
Disk /dev/sda: 250.0 GB, 250000000000 bytes
255 heads, 63 sectors/track, 30394 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000001
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1       16708   134206978+   7  HPFS/NTFS

fdisk -l显示硬盘是/ dev / sda,有一个NTFS分区。 现在我们可以使用dd创建一个磁盘映像。 注意:dd允许您直接读取和写入设备。 这里粗心大意的命令可能会破坏您的数据。 测量两次并切割一次。

LiveCD$ dd if=/dev/sda of=/media/server/laptop_disk.img

通常,dd需要一段时间才能制作磁盘映像,但是我们几乎立刻就会收到磁盘错误,并且dd中止。 幸运的是有ddrescue,其实有两个ddrescue程序,我们使用的是GNU ddrescue程序。 ddrescue几乎完全像dd一样工作,除了它旨在对故障驱动器进行操作,并可以补偿磁盘错误。 ddrescue不会在实时CD上出现,并且在APT存储库中不可用,但是我们可以从Web下载它,将其放在已经安装的nfs共享中,并从那里安装。

LiveCD$ sudo dpkg -i gddrescue_1.11-1_i386.deb
LiveCD$ sudo ddrescue -v /dev/sda mary_inspiron_6000.img mary_inspiron_6000.log

ddrescue成功映像磁盘。 下一个任务是制作磁盘映像的副本,以便在尝试修复磁盘映像的情况下,我们至少能够以最小的努力回到这一点。 我们将对图像进行全部工作(mary_inspiron_6000.img),并将原始(mary_inspiron_6000.img.orig)保存为归档和引用。

LiveCD$ cp -p mary_inspiron_6000.img mary_inspiron_6000.img.orig

现在有趣的部分,看看我们可以保存什么。

3恢复

恢复令人惊讶,有一个例外,我稍后会详细介绍。 我将工作映像(mary_inspiron_6000.img)作为d盘安装在我设置用于磁盘恢复的虚拟Windows XP机器上,并对其运行各种工具。

diskpart在Windows XP上提供有关磁盘及其分区的信息

C:\Documents and Settings\sfrizzell>diskpart
DISKPART> list disk
  Disk ###  Status      Size     Free     Dyn  Gpt
  --------  ----------  -------  -------  ---  ---
  Disk 0    Online        12 GB      0 B
  Disk 1    Online        56 GB      0 B
DISKPART> select disk 1
Disk 1 is now the selected disk.
DISKPART> detail disk
QEMU HARDDISK
Disk ID: 41AB2316
Type   : IDE
Bus    : 0
Target : 1
LUN ID : 0
  Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
  Volume 2     D                NTFS   Partition     56 GB  Healthy

我使用的第一个工具是chkdsk.exe,“Chkdsk.exe是一个用于验证Windows XP Professional卷上的文件系统的逻辑完整性的命令行工具。”

C:\Documents and Settings\sfrizzell>chkdsk /r d:
The type of the file system is NTFS.
CHKDSK is verifying files (stage 1 of 5)...
File verification completed.
CHKDSK is verifying indexes (stage 2 of 5)...
Correcting error in index $I30 for file 56146.
Correcting error in index $I30 for file 56146.
Sorting index $I30 in file 56146.
Index verification completed.
CHKDSK is recovering lost files.
Recovering orphaned file 6A82D2~1 (56129) into directory file 56146.
Recovering orphaned file 6A82D25B245A4B1D94281AC1E2272B77 (56129) into directory
 file 56146.
Recovering orphaned file 3BEA32~1.DB3 (56145) into directory file 56146.
Recovering orphaned file 3bea32c5-d9da-4696-a242-338575562c22-inq.db3 (56145) in
to directory file 56146.
Recovering orphaned file 3BEA32~1.XML (56147) into directory file 56146.
Recovering orphaned file 3BEA32C5-D9DA-4696-A242-338575562C22.xml (56147) into d
irectory file 56146.
Recovering orphaned file 3BEA32~2.DB3 (56149) into directory file 56146.
Recovering orphaned file 3bea32c5-d9da-4696-a242-338575562c22-preinq.db3 (56149)
 into directory file 56146.
Recovering orphaned file 3BEA32~3.DB3 (56150) into directory file 56146.
Recovering orphaned file 3bea32c5-d9da-4696-a242-338575562c22-errors.db3 (56150)
 into directory file 56146.
Recovering orphaned file manifest.db3 (56151) into directory file 56146.
CHKDSK is verifying security descriptors (stage 3 of 5)...
Security descriptor verification completed.
CHKDSK is verifying Usn Journal...
Usn Journal verification completed.
CHKDSK is verifying file data (stage 4 of 5)...
File data verification completed.
CHKDSK is verifying free space (stage 5 of 5)...
Free space verification is complete.
CHKDSK discovered free space marked as allocated in the
master file table (MFT) bitmap.
Correcting errors in the Volume Bitmap.
Windows has made corrections to the file system.
  58597055 KB total disk space.
  32117188 KB in 48418 files.
     18992 KB in 6501 indexes.
       264 KB in bad sectors.
    131935 KB in use by the system.
     65536 KB occupied by the log file.
  26328676 KB available on disk.
      4096 bytes in each allocation unit.
  14649263 total allocation units on disk.
   6582169 allocation units available on disk.

Chkdsk修复卷,现在我们颠倒备份过程,并通过nfs共享使用dd将修复的映像复制回新的硬盘驱动器。 现在是时候测试已修复的分区,看看它是否启动。 成功! 磁盘启动,我们现在有一个修复的系统。

现在我们已经对系统进行了修复,现在是讨论我提到的那个问题的时候了。 该图像已经被放置在比我们拥有93 GB可用空间的图像大得多的新硬盘上,我们希望能够访问。 尽管Windows将paritition报告为健康,但我曾尝试扩展分区的Linux工具都报告了一个错误,阻止它们扩展分区。

幸运的是,Microsoft提供了扩展磁盘分区的工具。 diskpart将现有分区扩展到可用磁盘空间,但不会扩展系统分区。 没问题,使用USB到硬盘驱动器电缆,磁盘可以连接到现有的系统。 在连接到该系统的同时,它不是系统驱动器,而且可以轻松快速地扩展。

DISKPART> list volume
  Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
  Volume 2     E                NTFS   Partition     56 GB  Healthy
DISKPART> select volume 2
DISKPART> extend
DISKPART> list volume
  Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
* Volume 2     E                NTFS   Partition    149 GB  Healthy

将磁盘放回笔记本电脑后,它会启动并且没有任何问题。

4。结论

Linux提供了一个极其丰富的工具箱来修复问题。 它在许多情况下通过绕过操作系统的结构并直接寻址硬件来实现这一点。 这是新兴的,可以快速有效地在机器之间传递信息,虚拟化可以作为其他操作系统和环境呈现。 随着Linux的所有优势,在某些情况下绕过操作系统并不是最好的解决方案,Windows系统命令是工作的正确工具。

虽然从技术的角度来看,这一切令人兴奋和愉快,但重要的是,玛丽的笔记本电脑正在再次工作,她可以回到学校,并取得成功。

5链接

在Debian Lenny上设置NFS服务器和客户机
https://www.youcl.com/info/5276
Ddrescue - 数据恢复工具
http://www.gnu.org/software/ddrescue/ddrescue.html
使用KVM进行虚拟化Ubuntu 9.10
https://www.youcl.com/info/6969
磁盘和文件系统故障排除
http://technet.microsoft.com/en-us/library/bb457122.aspx
USB 2.0到SATA / IDE硬盘驱动器硬盘CD-ROM 3.5 / 2.5转换器适配器电缆
http://www.amazon.com/Drive-CD-Rom-Converter-Adapter-Cable/dp/B001MW7058

6常见问题

问:为什么没有使用System Rescue CD?

A:说实话,我使用了手头的工具和我熟悉的工具。 我非常担心,在我有机会形象化之前,Ubuntu Workstation CD尝试修复NTFS分区。 我已经下载了System Rescue CD,并将评估它以备将来使用,谢谢你的建议!

如果需要,我也可以评估GetDataBack NTFS,但它是一个付费应用程序,我喜欢免费比萨饼。

问:为什么不提到testdisk?

A:我没有用 我检查了它的功能列表,我不需要任何这个工作...据说,它看起来像一个很棒的工具,它将进入我的工具箱。 http://www.cgsecurity.org/wiki/TestDisk

问:你使用了什么虚拟化软件(Virtualbox ...)?

答:由于缺乏细节,因为任何虚拟化技术都应该完成这项工作,所以似乎没有任何意义。 我使用kvm进行这种恢复,并在上面包括一个有用的链接。

问:我建议使用parted / gparted或ntfsresize(ntfsprogs的一部分),而不是使用diskpart来增长分区。

A:不是一个问题,但是无论如何,再次表示道歉,因为我缺乏清晰度。 从这份文件中删除了很多失败的尝试和不完整的成功,只提供了文章的肉(我把它读到许多手册页上)。

gparted无法调整分区大小并返回未知错误。 我的假设是,即使我已经对磁盘进行了成像,并将图像移动到已知的硬盘驱动器上,NTFS分区上的一些标志并没有被chkdsk清除,并且向linux报告了幻象错误。

我不记得尝试ntfsresize,它也会进入我的工具箱下次!

谢谢大家花时间回复! 您的建议将使我更好的下一次我必须做数据恢复。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏