V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
balduncle
V2EX  ›  云修电脑

clonezilla 大镜像克隆到小分区导致 ntfs 已使用块 header 和 bitmap 计数不一致如何修复?

  •  
  •   balduncle · 2023-08-04 18:12:11 +08:00 · 903 次点击
    这是一个创建于 512 天前的主题,其中的信息可能已经有所发展或是发生改变。
    还是 clonezilla 克隆磁盘的问题:用克隆分区的时候,没有修改分区表,导致 ntfs 已使用块计数不一致,即 Header 和 bitmap 计数不一致。



    问题的产生
    1.首先将原来系统按照分区克隆存为镜像文件;
    2.利用 win7 重新安装( ventoy 挂载的 ios 文件)
    3.保留 win7 重新安装后的启动小分区,将 c 盘分区克隆回去。因为 clonezilla 提示目标磁盘小于源磁盘(产生原因是我对 ssd 重新分区后,空间略小于原磁盘,但是实际使用空间是足够的)
    4.我选择了忽略检查目标磁盘空间大小,并且不修改分区表,估计是这个问题导致了块使用计数不一致
    5.成功克隆回分区,然后再用 win7 官方安装程序修复引导
    6.启动完美,使用正常
    7.我想用 clonezilla 对现有硬盘完整重新备份克隆报错

    “ntfsclone-ng.c: used blocks count mismatch: 8034126 in header, 8036358 from read_bitmap”

    查询资料发现,是 ntfs 的块计数不一致导致。

    -----------clonezilla 报错完整版本日志:------------------------

    Starting /usr/sbin/ocs-sr at 2023-08-04 16:56:08 UTC...
    *****************************************************.
    Clonezilla image dir: /home/partimag
    Shutting down the Logical Volume Manager
    Finished Shutting down the Logical Volume Manager
    The selected devices: sda
    PS. 下次您可以直接下这样的指令:
    /usr/sbin/ocs-sr -q2 -c -j2 -z1p -i 0 -sfsck -scs -senc -p choose savedisk 2023-08-04-16-img sda
    *****************************************************.
    The selected devices: sda
    Searching for data/swap/extended partition(s)...
    The data partition to be saved: sda1 sda2 sda3 sda4
    The selected devices: sda1 sda2 sda3 sda4
    下个步骤将把这台机器的硬盘/分区存成镜像文件:
    *****************************************************.
    Machine: 20C6A0B8CD
    sda (250GB_Samsung_SSD_850__Samsung_SSD_850_EVO_250GB_S2R7NX0)
    sda1 (100M_vfat_________(In_Samsung_SSD_850_)_Samsung_SSD_850_EVO_250GB_S2R7NX0)
    sda2 (128M_MS_Reserved_Partition(In_Samsung_SSD_850_)_Samsung_SSD_850_EVO_250GB_S2R7NX0)
    sda3 (125G_ntfs(In_Samsung_SSD_850_)_Samsung_SSD_850_EVO_250GB_S2R7NX0)
    sda4 (107.7G_ntfs(In_Samsung_SSD_850_)_Samsung_SSD_850_EVO_250GB_S2R7NX0)
    *****************************************************.
    -> "/home/partimag/2023-08-04-16-img".
    Shutting down the Logical Volume Manager
    Finished Shutting down the Logical Volume Manager
    Starting saving /dev/sda1 as /home/partimag/2023-08-04-16-img/sda1.XXX...
    /dev/sda1 filesystem: vfat.
    *****************************************************.
    *****************************************************.
    Use partclone with pigz to save the image.
    Image file will not be split.
    *****************************************************.
    If this action fails or hangs, check:
    * Is the disk full ?
    *****************************************************.
    Running: partclone.vfat -z 10485760 -N -L /var/log/partclone.log -c -s /dev/sda1 --output - | pigz -c --fast -b 1024 --rsyncable > /home/partimag/2023-08-04-16-img/sda1.vfat-ptcl-img.gz 2> /tmp/img_out_err.sv0PMG
    Partclone v0.3.23 http://partclone.org
    Starting to clone device (/dev/sda1) to image (-)
    Reading Super Block
    memory needed: 20997124 bytes
    bitmap 25600 bytes, blocks 2*10485760 bytes, checksum 4 bytes
    Calculating bitmap... Please wait...
    done!
    File system: FAT32
    Device size: 104.9 MB = 204800 Blocks
    Space in use: 23.3 MB = 45464 Blocks
    Free Space: 81.6 MB = 159336 Blocks
    Block size: 512 Byte
    Total block 204800
    Syncing... OK!
    Partclone successfully cloned the device (/dev/sda1) to the image (-)
    >>> Time elapsed: 7.27 secs (~ .121 mins)
    *****************************************************.
    Finished saving /dev/sda1 as /home/partimag/2023-08-04-16-img/sda1.vfat-ptcl-img.gz
    *****************************************************.
    Starting saving /dev/sda2 as /home/partimag/2023-08-04-16-img/sda2.XXX...
    /dev/sda2 filesystem: MS_Reserved_Partition.
    *****************************************************.
    *****************************************************.
    Use partclone with pigz to save the image.
    Image file will not be split.
    *****************************************************.
    If this action fails or hangs, check:
    * Is the disk full ?
    *****************************************************.
    Running: partclone.dd -z 10485760 -N --buffer_size 16777216 -L /var/log/partclone.log -s /dev/sda2 --output - | pigz -c --fast -b 1024 --rsyncable > /home/partimag/2023-08-04-16-img/sda2.dd-ptcl-img.gz 2> /tmp/img_out_err.Y0NIRI
    Partclone v0.3.23 http://partclone.org
    Starting to clone/restore (/dev/sda2) to (-) with dd mode
    get device size 134217728 by ioctl BLKGETSIZE64,
    get device size 134217728 by ioctl BLKGETSIZE64,
    memory needed: 33587200 bytes
    bitmap 32768 bytes, blocks 2*16777216 bytes, checksum 0 bytes
    Calculating bitmap... Please wait... done!
    File system: raw
    Device size: 134.2 MB = 262144 Blocks
    Space in use: 134.2 MB = 262144 Blocks
    Free Space: 0 Byte = 0 Blocks
    Block size: 512 Byte
    Total block 262144
    Syncing... OK!
    >>> Time elapsed: 6.24 secs (~ .104 mins)
    *****************************************************.
    Finished saving /dev/sda2 as /home/partimag/2023-08-04-16-img/sda2.dd-ptcl-img.gz
    *****************************************************.
    Starting saving /dev/sda3 as /home/partimag/2023-08-04-16-img/sda3.XXX...
    /dev/sda3 filesystem: ntfs.
    *****************************************************.
    *****************************************************.
    Use partclone with pigz to save the image.
    Image file will not be split.
    *****************************************************.
    If this action fails or hangs, check:
    * Is the disk full ?
    *****************************************************.
    Running: partclone.ntfs -z 10485760 -N -L /var/log/partclone.log -c -s /dev/sda3 --output - | pigz -c --fast -b 1024 --rsyncable > /home/partimag/2023-08-04-16-img/sda3.ntfs-ptcl-img.gz 2> /tmp/img_out_err.mDMjop
    Partclone v0.3.23 http://partclone.org
    Starting to clone device (/dev/sda3) to image (-)
    Reading Super Block
    memory needed: 25067524 bytes
    bitmap 4096000 bytes, blocks 2*10485760 bytes, checksum 4 bytes
    Calculating bitmap... Please wait...
    ntfsclone-ng.c: used blocks count mismatch: 12482386 in header, 12483444 from read_bitmap
    Failed to use partclone program to save or restore an image!
    *****************************************************.
    Failed to save partition /dev/sda3.
    Starting saving /dev/sda4 as /home/partimag/2023-08-04-16-img/sda4.XXX...
    /dev/sda4 filesystem: ntfs.
    *****************************************************.
    *****************************************************.
    Use partclone with pigz to save the image.
    Image file will not be split.
    *****************************************************.
    If this action fails or hangs, check:
    * Is the disk full ?
    *****************************************************.
    Running: partclone.ntfs -z 10485760 -N -L /var/log/partclone.log -c -s /dev/sda4 --output - | pigz -c --fast -b 1024 --rsyncable > /home/partimag/2023-08-04-16-img/sda4.ntfs-ptcl-img.gz 2> /tmp/img_out_err.nnDJS1
    Partclone v0.3.23 http://partclone.org
    Starting to clone device (/dev/sda4) to image (-)
    Reading Super Block
    memory needed: 24499396 bytes
    bitmap 3527872 bytes, blocks 2*10485760 bytes, checksum 4 bytes
    Calculating bitmap... Please wait...
    ntfsclone-ng.c: used blocks count mismatch: 8034126 in header, 8036358 from read_bitmap
    Failed to use partclone program to save or restore an image!
    *****************************************************.
    Failed to save partition /dev/sda4.
    Dumping the device mapper table in /home/partimag/2023-08-04-16-img/dmraid.table...
    Saving block devices info in /home/partimag/2023-08-04-16-img/blkdev.list...
    Saving block devices attributes in /home/partimag/2023-08-04-16-img/blkid.list...
    Checking the integrity of partition table in the disk /dev/sda...
    Reading the partition table for /dev/sda...RETVAL=0
    *****************************************************.
    Saving the primary GPT of sda as /home/partimag/2023-08-04-16-img/sda-gpt-1st by dd...
    34+0 records in
    34+0 records out
    17408 bytes (17 kB, 17 KiB) copied, 0.001671 s, 10.4 MB/s
    *****************************************************.
    Saving the secondary GPT of sda as /home/partimag/2023-08-04-16-img/sda-gpt-2nd by dd...
    32+0 records in
    32+0 records out
    16384 bytes (16 kB, 16 KiB) copied, 0.00119738 s, 13.7 MB/s
    *****************************************************.
    Saving the GPT of sda as /home/partimag/2023-08-04-16-img/sda-gpt.gdisk by gdisk...
    The operation has completed successfully.
    *****************************************************.
    Saving the MBR data for sda...
    输入了 1+0 块记录
    输出了 1+0 块记录
    512 字节已复制,0.000464016 s ,1.1 MB/s
    End of saveparts job for image /home/partimag/2023-08-04-16-img.
    *****************************************************.
    *****************************************************.
    End of savedisk job for image 2023-08-04-16-img.
    Checking if udevd rules have to be restored...
    This program is not started by Clonezilla server, so skip notifying it the job is done.
    This program is not started by Clonezilla server, so skip notifying it the job is done.
    Finished!
    Finished!
    Now syncing - flush filesystem buffers...
    Ending /usr/sbin/ocs-sr at 2023-08-04 17:00:23 UTC...



    --------------------------------------------------------------

    我搜索到了类似的案例,解决方案也差不多
    https://sourceforge.net/p/clonezilla/discussion/Open_discussion/thread/8ac8cbfb7d/

    尝试解决方案:

    使用 chkdsk c: /f 进行修复,
    重新启动修复,安全模式修复,目前还没成功。


    也查询了 chatgpt

    ---------------------------------
    如果在使用 Clonezilla 进行硬盘克隆时出现块计数不匹配的问题,可以尝试以下方法来修复:

    1. 重新克隆:首先,尝试重新执行克隆操作。在重新克隆之前,确保目标硬盘已经完全清空,并且没有任何分区或文件系统。选择合适的克隆选项,确保克隆过程中不会发生任何错误。

    2. 检查文件系统:如果目标硬盘上已经存在文件系统或分区,请确保其文件系统类型与源硬盘相同,并且目标硬盘的分区结构与源硬盘一致。如果需要,可以在克隆之前手动创建相同的分区结构。

    3. 更新 Clonezilla:确保你使用的是最新版本的 Clonezilla 。旧版本可能存在一些已知的问题或错误,通过更新到最新版本可以修复或改进这些问题。

    4. 使用其他工具:如果问题仍然存在,你可以尝试使用其他克隆工具或方法来复制硬盘。例如,你可以使用 dd 命令、EaseUS Todo Backup 、Acronis True Image 等工具进行克隆。这些工具可能具有不同的算法和处理方式,可能能够解决在 Clonezilla 中遇到的特定问题。

    5. 寻求专业帮助:如果以上方法都无法解决问题,建议向 Clonezilla 的支持论坛、社区或官方技术支持寻求帮助。他们可能能够提供更具体的指导或解决方案,以解决你遇到的克隆问题。

    请注意,在尝试任何修复方法之前,请务必备份重要的文件,并小心操作,以避免不可逆的数据损失。

    ---------------------------------
    在 NTFS 文件系统中,"header"和"bitmap"是用于跟踪已使用块的计数器。

    1. Header (头部):NTFS 文件系统的每个分区都有一个头部,其中包含了关于分区的元数据信息。在头部中,有一个字段记录了已使用的块数量。这个字段可以用来追踪分区中已经分配给文件和文件夹的块的数量。

    2. Bitmap (位图):NTFS 文件系统使用位图来跟踪每个块的分配状态。位图是一个二进制数据结构,其中的每个位对应于一个块。如果位为 1 ,则表示相应的块已经被分配给文件或文件夹;如果位为 0 ,则表示该块是空闲的。通过扫描位图,可以计算已使用的块的数量。

    这两个计数器可以帮助操作系统和文件系统维护对硬盘上空闲和已使用块的跟踪。在进行文件的读取和写入时,操作系统可以参考这些计数器来确定可用的块,并进行相应的分配和释放操作。

    ---------------------------------
    如果在 NTFS 文件系统中的头部和位图中记录的已使用块数量不一致,可以尝试以下方法来修正这个问题:

    1. 使用 chkdsk 命令修复:可以运行 Windows 的 chkdsk 命令来扫描和修复 NTFS 文件系统中的错误。打开命令提示符窗口,然后输入以下命令并按回车键运行:

    ```
    chkdsk <驱动器盘符>: /f
    ```

    将"<驱动器盘符>"替换为发生不一致的 NTFS 分区的盘符。例如,如果是 C 盘出现问题,命令将是:

    ```
    chkdsk C: /f
    ```

    chkdsk 命令将扫描分区并尝试修复文件系统中的错误,包括已使用块计数不一致的问题。

    2. 使用第三方工具修复:如果 chkdsk 命令无法解决问题,可以尝试使用第三方的 NTFS 修复工具。例如,可以使用 TestDisk 、NTFSfix 等工具来扫描和修复 NTFS 文件系统中的错误。这些工具通常具有更高级的修复功能,可以处理更复杂的问题。

    3. 寻求专业帮助:如果以上方法无法修复问题,建议咨询专业的数据恢复服务或向硬盘制造商寻求支持。他们可能具备更深入的专业知识和工具来处理头部和位图不一致的问题。

    请注意,在进行任何修复操作之前,请务必备份重要的数据,并小心操作,以避免进一步数据损失。
    ---------------------------------


    ---------------------------------

    当 ntfs 硬盘的块计数不匹配时,可能需要采取以下步骤来处理:

    1. 检查硬盘状态:确保硬盘没有任何硬件问题,并且处于正常工作状态。你可以尝试使用硬盘健康检测工具或进行磁盘扫描来检查硬盘的健康状况。

    2. 运行修复工具:对于 NTFS 文件系统,Windows 提供了一些内置的修复工具,例如 chkdsk 命令。可以在命令提示符下运行`chkdsk`命令来扫描和修复硬盘上的错误。使用`chkdsk`命令时,可以添加`/f`参数来修复发现的错误。

    例如:`chkdsk D: /f`(将 D:替换为你的硬盘盘符)

    这个过程可能需要一些时间,具体取决于硬盘的大小和问题的严重程度。请确保在运行修复工具之前备份重要的数据。

    3. 使用第三方工具:如果内置的修复工具无法解决问题,你可以尝试使用一些第三方的 NTFS 修复工具。例如,可以使用 TestDisk 、NTFSfix 等工具来扫描和修复硬盘上的 NTFS 文件系统错误。在使用这些工具之前,请确保了解其使用方法和风险,并备份重要的数据。

    4. 寻求专业帮助:如果以上方法都无法解决问题,建议咨询专业的数据恢复服务或向硬盘制造商寻求支持。他们可能具备更深入的专业知识和工具来处理块计数不匹配的问题。

    请注意,在进行任何修复操作之前,请务必备份重要的数据,并小心操作,以避免进一步数据损失。

    ---------------------------------

    是的,Windows 7 安装光盘可以用于启动 chkdsk 程序。以下是在 Windows 7 安装光盘中启动 chkdsk 的步骤:

    1. 将 Windows 7 安装光盘插入计算机的光驱中。

    2. 重新启动计算机,并在启动过程中按下相应的键(通常是 F12 、F2 或 Delete 键)进入计算机的启动菜单或 BIOS 设置。

    3. 在启动菜单或 BIOS 设置中,选择从光驱启动。这可能在菜单中被标记为"CD-ROM"、"DVD-ROM"或光驱的制造商名称。

    4. 保存设置并退出启动菜单或 BIOS 设置。计算机将重新启动,并从 Windows 7 安装光盘启动。

    5. 在 Windows 7 安装程序加载后,选择适当的语言、时区和键盘布局。

    6. 在安装程序的主菜单中,点击"修复你的计算机"或类似选项。

    7. 在修复选项菜单中,选择"命令提示符"或"恢复控制台"。

    8. 在命令提示符窗口中,输入以下命令并按回车键运行:

    ```
    chkdsk C: /f
    ```

    将"C:"替换为发生问题的 NTFS 分区的盘符。

    9. chkdsk 程序将开始扫描并尝试修复分区中的错误。请耐心等待扫描和修复过程完成。

    请注意,使用 Windows 7 安装光盘启动 chkdsk 可能需要一些计算机技术知识。如果你不确定操作的步骤或不熟悉命令行界面,请寻求专业人士的帮助或考虑使用其他可靠的工具来修复文件系统问题。

    ---------------------------------

    ---------------------------------


    我的问题是,这个方案,是否正确呢?除了上面提到的,还有其他更好的方案没有?


    谢谢
    balduncle
        1
    balduncle  
    OP
       2023-08-04 18:36:05 +08:00
    实际解决方法:
    用 pe 加载了 cmd ,然后运行 chkdsk X: /f 把整个硬盘分区全部都修复了一遍,提示修复了数图错误。然后现在两者应该一样,现在克隆没问题了。

    类似的,如果用 win7 安装光盘来修复,应该也是没问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2662 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 09:57 · PVG 17:57 · LAX 01:57 · JFK 04:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.