![ntfsresize 后 MFT / NTLDR / NTFS(外部驱动器)损坏(Linux)](https://linux22.com/image/1377643/ntfsresize%20%E5%90%8E%20MFT%20%2F%20NTLDR%20%2F%20NTFS%EF%BC%88%E5%A4%96%E9%83%A8%E9%A9%B1%E5%8A%A8%E5%99%A8%EF%BC%89%E6%8D%9F%E5%9D%8F%EF%BC%88Linux%EF%BC%89.png)
我有一个连接到 RaspberryPi(无头)的外部 USB 驱动器,1.5 TB 卷,100% 分区 NTFS。
在这个问题期间从控制台创建 ext4 分区ext4
,我的目标是通过将分区缩小到 50%来改变整体 fs ntfs
,将所有文件复制到新分区,然后将新ext4
分区的大小调整为 100%。
使用后ntfsresize
(我首先运行了模拟,-n
一切正常,然后强制执行写入操作,运行也没有错误),分区文件系统上出现了几个错误,(再次,ntfsresize 运行没有错误,但文件系统已损坏)。
ntfs
缩小到大约 600 GB后,我fdisk
曾经删除了 100% 的分区并将其分成两个 50% 的分区,使用正确的分区类型(我不从这个外部硬盘启动,只存储数据) - 这也没有显示任何错误。
此时我注意到几个错误,并且无法再安装该驱动器。
我确实需要那些我无法再访问的数据,并且愿意向帮助我再次访问数据的人捐赠一瓶啤酒(Paypal)。
以下是一些输出:
/dev/sda
起始扇区 2048 结束扇区 2930272255 (1 扇区 = 512 字节)
我将 NTFS 文件大小缩小到:656511M
大小我将 NTFS 分区更改为:略小于total sectors / 2
=> 1400000000 个扇区
fdisk
分区之前:
Disk /dev/sda: 1500.3 GB, 1500299395072 bytes
255 heads, 63 sectors/track, 182401 cylinders, total 2930272256 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000303ee
Device Boot Start End Blocks Id System
/dev/sda1 2048 2930272255 1465135104 7 HPFS/NTFS/exFAT
分区表之后fdisk
:
Disk /dev/sda: 1500.3 GB, 1500299395072 bytes
248 heads, 15 sectors/track, 787707 cylinders, total 2930272256 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000303ee
Device Boot Start End Blocks Id System
/dev/sda2 2048 1400000000 699998976+ 7 HPFS/NTFS/exFAT
fdisk
核实:
Command (m for help): v
Remaining 1530274302 unallocated 512-byte sectors
ntfsfix /dev/sda2
:
root@rasp:~# ntfsfix /dev/sda2
Mounting volume... Failed to load runlist for $MFT/$DATA.
highest_vcn = 0x68f, last_vcn - 1 = 0xe24f
Failed to load $MFT: Input/output error
FAILED
Attempting to correct errors... Failed to load runlist for $MFT/$DATA.
highest_vcn = 0x68f, last_vcn - 1 = 0xe24f
Failed to load $MFT: Input/output error
FAILED
Failed to startup volume: Input/output error
Checking for self-located MFT segment... OK
Failed to load runlist for $MFT/$DATA.
highest_vcn = 0x68f, last_vcn - 1 = 0xe24f
Failed to load $MFT: Input/output error
Volume is corrupt. You should run chkdsk.
1.更新:
ntfsfix /dev/sda:
root@rasp:~# ntfsfix /dev/sda
Mounting volume... NTFS signature is missing.
FAILED
Attempting to correct errors... NTFS signature is missing.
FAILED
Failed to startup volume: Invalid argument
NTFS signature is missing.
Trying the alternate boot sector
The alternate bootsector is usable
Set sector count to 2930272255 instead of 2930270207
Rewriting the bootsector
The boot sector has been rewritten
ntfs_mst_post_read_fixup_warn: magic: 0xffffffff size: 1024 usa_ofs: 65535 usa_count: 65534: Invalid argument
Record 0 has no FILE magic (0xffffffff)
Failed to load $MFT: Input/output error
Volume is corrupt. You should run chkdsk.
fdisk /dev/sda2
现在:
Disk /dev/sda2: 716.8 GB, 716798951936 bytes
255 heads, 63 sectors/track, 87145 cylinders, total 1399997953 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x444c544e
This doesn't look like a partition table
Probably you selected the wrong device.
Device Boot Start End Blocks Id System
/dev/sda2p1 ? 1768778098 1776409558 3815730+ 6b Unknown
/dev/sda2p2 ? 1830843506 3225479386 697317940+ 75 PC/IX
/dev/sda2p3 ? 1718906437 1718909009 1286+ 41 PPC PReP Boot
/dev/sda2p4 2827157504 2827210421 26459 0 Empty
Partition table entries are not in disk order
fdisk /dev/sda
现在:
Disk /dev/sda: 1500.3 GB, 1500299395072 bytes
255 heads, 63 sectors/track, 182401 cylinders, total 2930272256 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x444c544e
This doesn't look like a partition table
Probably you selected the wrong device.
Device Boot Start End Blocks Id System
/dev/sda1 ? 1768778098 1776409558 3815730+ 6b Unknown
/dev/sda2 ? 1830843506 3225479386 697317940+ 75 PC/IX
/dev/sda3 ? 1718906437 1718909009 1286+ 41 PPC PReP Boot
/dev/sda4 2827157504 2827210421 26459 0 Empty
Partition table entries are not in disk order
上面的输出很奇怪。我昨天运行了testdisk
-repair boot sector
似乎已经杀死了分区表。磁盘标识符也改变了吗?
我现在做的事情:testdisk
[REPAIR BS]
由于昨天没有成功,因此再次运行(大约需要 6 个小时)
答案1
不幸的是,所有基于 Linux 的 NTFS 修复实用程序的范围和能力都相当有限。Testdisk 是您在跨平台方面能得到的最好的工具,虽然它在恢复分区和引导扇区方面非常棒,但如果您损坏了 NTFS 文件系统本身,它实际上并不是您所需要的。在这种情况下,testdisk 能做的最好的事情就是尝试恢复 MFT 镜像。/ntfsfsck
被ntfsfix
严重阉割,并且它们的部分恢复功能/方法在几年前就被关闭了,因为由于错误实施或在逆向工程时没有完全理解而存在危险。
如果您有 Vista 及更高版本的 Windows 安装 CD,请使用“启动修复”中的命令行功能尝试chkntfs /f
修复相关分区(如果可以看到)。如果失败,可能需要使用您最喜欢的文件恢复工具来从格式化卷中恢复文件。
免费软件:Testdisk 的对应软件,照相记录,就是这样的。我个人有很好的经验雷库瓦来自 Piriform,但这是一个仅适用于 Windows 的程序,因此您需要将硬盘连接到另一台 Windows 机器。
有一些硬核的商业 NTFS 文件恢复应用程序,但老实说,它们几乎不值得这么麻烦 - 如果您的分区损坏到需要它们,您可以恢复文件,但它们可能不完整/损坏并且实际上无法打开。最好的办法是使用这些工具按名称检索某些文件。
请注意:从已删除的分区恢复文件的软件可能需要几天的时间才能进行深度扫描!