V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
WXZhao
V2EX  ›  程序员

双系统 win10 给 Linux 的 ext4 整盘(未分区)添加了 MSR 分区,如何恢复?求助!急!

  •  
  •   WXZhao · 2022-04-05 21:51:54 +08:00 · 2127 次点击
    这是一个创建于 724 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Ubuntu20 和 Win10 分别装在两个固态硬盘里,另有两个机械硬盘用在 Linux 下存数据( 1T+4T ),打开 win10 后提醒我的分区表不是 GPT 是否要转为 GPT ,点确定后给两个没在用的数据硬盘分区表添加了 MSR 分区,有什么办法挽回吗?数据少量损毁可以接受

    两个数据硬盘都没有进行分区,整盘格式化为 ext4 在使用,diskgenius 搜索已丢失分区表可以找到未格式化的 ext4 分群,起止柱面为 0 和最大 win10 创建的 MSR 分区起止柱面 0 到 2 共 16Mb ,这个分区内的数据可能已经损坏了

    因为全盘格式化使用,diskgenius 无法保存 GPT 分区表 [磁盘的首、尾部分没有转换到 GUID 分区表所必须的空间(除了 MBR 扇区外还需要各 33 个扇区)。请先删除分区或者对分区进行调整后再转换] ,也无法调整分区大小后进行转换

    求助,紧急啊,大的为数据盘,小的为数据备份盘,两给一起没了!

    35 条回复    2022-04-07 04:40:56 +08:00
    Cooky
        1
    Cooky  
       2022-04-05 21:58:09 +08:00   ❤️ 2
    https://wiki.archlinux.org/title/File_recovery#e2fsck

    mkfs.ext4 -n /dev/sdX
    获取备份超级块位置
    e2fsck -b 超级块位置 /dev/sdX

    我的是这么救回来过
    WXZhao
        2
    WXZhao  
    OP
       2022-04-05 22:03:14 +08:00
    @Cooky 谢谢大佬,我现在切到 win10 用 diskgenius 的数据恢复可以扫出来里面的文件,先试着看能不能这样复制出来做个备份,再试试,万分感激!
    iqfEmhuNidBhDfWo
        3
    iqfEmhuNidBhDfWo  
       2022-04-05 22:37:19 +08:00
    说得我都怕了,赶紧把移动固态硬盘给断电了,里面都是 ext4 分区。
    WXZhao
        4
    WXZhao  
    OP
       2022-04-05 22:37:33 +08:00
    @Cooky diskgenius 给的文件结构和名称全乱了,所以去尝试了一下 e2fsck, 现在好像成功了, 我可以 mount 查看内容了, 但是过程中有大量的提示修复,全部选是之后出现了 1.3%的 non-contiguous, 我是成功了还是成功了 98.7%呢...大佬有什么建议能够确认下数据的损毁情况呢? 太感谢了!!!!!!


    ....
    Free inodes count wrong (60824549, counted=60844763).
    Fix? yes

    Padding at end of inode bitmap is not set. Fix? yes

    Block bitmap differences: Group 0 block bitmap does not match checksum.
    FIXED.

    Backup: ***** FILE SYSTEM WAS MODIFIED *****
    Backup: 210213/61054976 files (1.3% non-contiguous), 133855522/244190646 blocks
    WXZhao
        5
    WXZhao  
    OP
       2022-04-05 22:39:15 +08:00
    @ukss 有分区的没啥事, windows 好像自己会跳过, 但我习惯于不分区直接存数据, 就被误伤了(在一些英文论坛上看到过有关的讨论)....:(
    iqfEmhuNidBhDfWo
        6
    iqfEmhuNidBhDfWo  
       2022-04-05 23:22:36 +08:00
    @WXZhao 不分区是什么意思?你是想说只有一个分区吧?
    nkloveni
        7
    nkloveni  
       2022-04-05 23:30:31 +08:00   ❤️ 1
    就是不分区,直接 mkfs.ext4 /dev/sdb 这种也能够创建文件系统的,在 linux 下毛问题都没有
    Cooky
        8
    Cooky  
       2022-04-05 23:43:43 +08:00
    @WXZhao 看下 lost+found 目录里有啥,重分区未写入数据的话应该没什么损失,我 dd 16M 数据到错误磁盘救回来也没看有什么问题
    msg7086
        9
    msg7086  
       2022-04-05 23:47:06 +08:00   ❤️ 1
    @ukss 就是不分区。和「只有一个分区」完全没关系。
    ryd994
        10
    ryd994  
       2022-04-05 23:51:21 +08:00 via Android   ❤️ 4
    @ukss 又称 super floppy 模式
    一般人用硬盘是先有分区表,然后设置一到多个分区,然后再在分区上建立文件系统
    Linux 允许不建分区表,直接全盘当成一个分区(不是全盘只分一个区)。直接建立文件系统。
    其实 Windows 也支持这样的用法的。软盘就是这样,所以叫 super floppy 。系统自带的磁盘管理工具不允许你这样做。disk genious 第三方工具可以。Windows 也可以识别读取(如果是 Windows 支持的文件系统的话)
    WXZhao
        11
    WXZhao  
    OP
       2022-04-06 00:06:29 +08:00   ❤️ 1
    @ukss 不分区就真的不分区, 比如`mount /dev/sda /data`这样, 而不是 /dev/sda1... 做 LVM 的时候喜欢这样, 就遗传到自己主机上了~
    WXZhao
        12
    WXZhao  
    OP
       2022-04-06 00:11:31 +08:00
    @Cooky lost+found 里面是空的, 先在看来好像没有问题. 我用 e2fsck 后 fdisk -l 会 The primary GPT table is corrupt, but the backup appears OK, so that will be used. 用 gdisk 改为 backup table 能正常, 但重启后一切都恢复错误的样子了, 现在先 mount 了上去, 把数据转移了再格式化硬盘看看吧
    Cooky
        13
    Cooky  
       2022-04-06 00:20:58 +08:00
    @WXZhao 裸设备没分区表跑啥 fdisk ? fsck 过了就没问题了
    WXZhao
        14
    WXZhao  
    OP
       2022-04-06 00:29:36 +08:00
    @Cooky fsck 是过了,但重启后还是有问题无法 mount, 会提示 mount: /home/wxz/Backup: wrong fs type, bad option, bad superblock on /dev/sda, missing codepage or helper program, or other error. 又要 e2fsck 或者 fsck -t ext4 才能挂载

    flow:
    sudo mkfs.ext4 -n /dev/sda
    sudo e2fsck -b 32768 /dev/sda
    sudo mount /dev/sda Backup (这里没有问题, 但 fdisk 会提示 The primary GPT table is corrupt, but the backup appears OK, so that will be used, 所以用 gdisk 分别 r,b,w)
    重启系统, sudo mount /dev/sda Backup, 报错 mount: /home/wxz/Backup: wrong fs type, bad option, bad superblock on /dev/sda, missing codepage or helper program, or other error.
    重新 e2fsck -b 32768 /dev/sda
    又可以了, 但重启还是会出问题, 哪里理解错了呢?
    Cooky
        15
    Cooky  
       2022-04-06 00:37:20 +08:00
    @WXZhao fsck 完 mount 之后 fdisk 和 gdisk 都不要用,如果是系统自动用了 fdisk 和 gdisk ,想办法把它禁掉
    iqfEmhuNidBhDfWo
        16
    iqfEmhuNidBhDfWo  
       2022-04-06 00:37:55 +08:00
    @nkloveni
    @msg7086
    @ryd994
    学到了!!!
    WXZhao
        17
    WXZhao  
    OP
       2022-04-06 00:43:06 +08:00
    @Cooky 好的, 那我 fsck 后直接写到 fstab 里重启一下试试
    WXZhao
        18
    WXZhao  
    OP
       2022-04-06 01:06:52 +08:00
    @Cooky 尝试了一下, 重启后 mount: /home/wxz/Data: wrong fs type, bad option, bad superblock on /dev/sdb, missing codepage or helper program, or other error.必须重新 fsck 才能挂载, 我还是数据迁移重新格式化一下硬盘吧...
    msg7086
        19
    msg7086  
       2022-04-06 01:29:38 +08:00
    @WXZhao
    「用 gdisk 改为 backup table 能正常」
    「所以用 gdisk 分别 r,b,w 」
    您这是反复擦除自己的数据啊?
    你都知道分区表会破坏你的文件系统了,还要坚持破坏是什么情况?给我整不会了。
    WXZhao
        20
    WXZhao  
    OP
       2022-04-06 01:34:45 +08:00
    @msg7086 啊?我可能表述不清楚
    fsck 正常后再用 fdisk 看到提示说 The primary GPT table is corrupt, but the backup appears OK(这不是说备份是好的嘛), 所以用 gdisk 尝试恢复, 这里用的 b 是 use backup GPT header (rebuilding main), 我以为是用 backup 覆盖 primary, 难道我的理解错的远了?

    The primary GPT table is corrupt, but the backup appears OK, so that will be used.
    Disk /dev/sda: 931.53 GiB, 1000204886016 bytes, 1953525168 sectors
    Disk model: TOSHIBA DT01ACA1
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    Disklabel type: gpt
    Disk identifier: 12E7EEF1-FDC0-40C4-BB7F-F594F771E42A
    ryd994
        21
    ryd994  
       2022-04-06 01:53:44 +08:00 via Android   ❤️ 2
    @WXZhao 你都没分区,为什么用 fidsk ?我们理理事情经过:
    1. 你误用 Windows 安装程序,给硬盘加了个 GPT 分区表,覆盖了 ext4 super block ,同时 GPT 自动在磁盘末尾加了个备份分区表
    2. 按照论坛的建议,你用 fsck 和备用 super block 恢复了主 super block
    3. 你又用 fdisk ,从备用 GPT 表恢复了主 GPT 表。这是不是又把 super block 给覆盖掉了?
    WXZhao
        22
    WXZhao  
    OP
       2022-04-06 02:11:38 +08:00
    @ryd994 我终于被敲醒了, 我本来就没分区表:笑哭:

    那只有最后的问题了, fsck 恢复 super block 后再重启怎么挂载呀? 重启手动 mount 也会出现 mount: /home/wxz/Data: wrong fs type, bad option, bad superblock on /dev/sdb, missing codepage or helper program, or other error.
    yjd
        23
    yjd  
       2022-04-06 02:23:25 +08:00
    dg 遇到文件系统坏的情况下搜索确实挺渣的,搜出来一堆重命名的文件,你都分不清楚。
    所以我的经验,搜索丢失数据一般用 EaseUS Data Recovery Wizard Technician 文件结构基本都能原样保留。
    ryd994
        24
    ryd994  
       2022-04-06 03:16:52 +08:00 via Android
    @WXZhao 感觉是开头的哪个 magic byte 被 GPT 覆盖了。但是又不属于文件系统结构,所以没有被修复。
    DiskGenius 之类的工具看看分区的 magic byte ?
    mingl0280
        25
    mingl0280  
       2022-04-06 07:56:14 +08:00 via Android
    @WXZhao 没辙了,你干掉的一部分很可能是有数据的。
    你要是之前建了 GPT 分区表再写的,因为 GPT 分区表使用的空间被保留了反而能把数据区给救回来。现在你是裸分区直接用的,开始部分肯定挂了。
    LaTero
        26
    LaTero  
       2022-04-06 08:30:31 +08:00 via Android
    @WXZhao fsck non-continguous 没事的,不是损坏的意思,相当于文件碎片
    WXZhao
        27
    WXZhao  
    OP
       2022-04-06 12:07:04 +08:00
    @yjd 谢谢
    WXZhao
        28
    WXZhao  
    OP
       2022-04-06 12:14:27 +08:00
    @mingl0280 那有什么办法能排查哪些文件又损坏吗?很少量的还是可以接受的(cp 备份了一个盘, 好像没有发现什么问题)
    WXZhao
        29
    WXZhao  
    OP
       2022-04-06 12:23:20 +08:00
    @ryd994 diskgenius 看到的东西不太懂, 看不来要怎么做... 我觉得现在可能并没有数据丢失? fsck 后进 lost+found 里面是没有文件的, 这种情况下是不是先把文件转移再重做硬盘更稳妥一些呢?

    root@WXZ-Ubuntu20:/home/wxz/Backup/lost+found# ls -alh
    total 20K
    drwx------ 2 root root 16K 9 月 9 2019 .
    drwxr-xr-x 7 wxz wxz 4.0K 4 月 5 23:53 ..
    mingl0280
        30
    mingl0280  
       2022-04-06 15:50:13 +08:00
    @WXZhao 找丢失的文件可能难度比较大,不过你既然都把分区的文件 cp 出来了……那就说明你运气好。你先用 dd 拷到另外一个盘做个镜像,剩下的就是重建引导了……
    WXZhao
        31
    WXZhao  
    OP
       2022-04-06 17:02:15 +08:00
    @mingl0280 听到运气好感觉安心很多了:) 但还是有点问题要请教一下, 感激不尽!
    0, 运气好是指的 fsck 后 lost+found 里为空吧, 这个能确信没有文件受损吗?
    1, 比如 e2fsck + mount 的 1t 备份盘, 里面最主要的就是 5 个 tgz 压缩包, 尽管现在都成功 cp 出来了, 但我之前并没有保存 hash, 那这些文件是否有可能受损呢?
    2, 现在 cp 已经成功了还要 dd 拷贝再重建的目的是恢复数据? 数据拷贝出来后格式化会不会更稳妥呢?
    WXZhao
        32
    WXZhao  
    OP
       2022-04-06 17:22:05 +08:00
    @mingl0280 我再想了想, 这里指得是用 dd -if=/dev/sda -of=/path/to/file.img 把所有的数据一起拷贝为镜像文件, 再 parted /dev/sda, 建立 /dev/sda1, 然后 dd -if=/path/to/file.img -of=/dev/sda1 完整恢复? 应该比我傻傻的 cp 要快很多, 但暂时我找不到能存 1t 和 4t 镜像文件的硬盘了...
    mingl0280
        33
    mingl0280  
       2022-04-06 23:34:06 +08:00
    @WXZhao dd 拷的可能带分区表,cp 有可能部分文件拷不出来。如果拷完引导不了建议检查 fstab……
    WXZhao
        34
    WXZhao  
    OP
       2022-04-06 23:52:31 +08:00
    @mingl0280 谢谢! 我也有点搞清楚了, 现在测试了一下盘里的 gz 压缩包(几乎等同所有数据), 解压都没有报错, 我更肯定数据没有问题了:)
    mingl0280
        35
    mingl0280  
       2022-04-07 04:40:56 +08:00
    @WXZhao 那你直接 dd+fsck 完了就应该可以启动了,不要折腾其它的……
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2679 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 15:28 · PVG 23:28 · LAX 08:28 · JFK 11:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.