[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] a tiny tool for checking and repairing damaged qcow2 image
From: |
张友加 |
Subject: |
[Qemu-devel] a tiny tool for checking and repairing damaged qcow2 image |
Date: |
Tue, 15 Aug 2017 14:39:56 +0800 (CST) |
Hi,
I want to introduce a tiny tool(https://github.com/zhangyoujia/qcow2-dump) for
checking and repairing damaged qcow2 image.
I met many damaged qcow2 images when I work.
It does't always work by using the qemu-img command to check and repair these
damaged qcow2 images.
The functions of the qemu-img check command are too limited for developers.
It's difficult to known where is damaged, and difficult to repair the damage
too.
For example: more than one active L2 entries point to the same active
cluster(mostly caused by refcount error), such as:
Active Cluster:
----------------------------------------------------------------
REUSED cluster offset: 0x44000000 | l1_index: 2, l2_index: 1017 | refcount: 2
REUSED cluster offset: 0x44000000 | l1_index: 12, l2_index: 7780
REUSED cluster offset: 0x45000000 | l1_index: 2, l2_index: 1273 | refcount: 2
REUSED cluster offset: 0x45000000 | l1_index: 12, l2_index: 6742
REUSED cluster offset: 0x4a000000 | l1_index: 2, l2_index: 2553 | refcount: 2
REUSED cluster offset: 0x4a000000 | l1_index: 12, l2_index: 7068
The results of qemu-img check command are wrong which only show refcount errors
and copied errors, but do not show the active cluster reused errors. so if you
use qemu-img check -r sub-command to repair this qcow2 image, it only increases
refcount of the reused cluster, but does not rebuild the reused active cluster.
that does't work. (eg: reused_active_cluster.png)
That's why I want to make a tool has more functions.
qcow2-dump has some improvements compare with qemu-img check command:
1. -m check: output the status of qcow2 image and statistics of metadata. (eg:
rebuild_refcount_table.png)
2. -m error: output of -m check + the damaged positions of qcow2 image. (eg:
reused_active_cluster.png & error.tgz)
3. -m dump: output of -m error + dump all metadata of qcow2 image. (eg:
dump.tgz)
qcow2-dump also has some functions for repairing damaged qcow2 image:
1. rebuild damaged refcount table. (eg: rebuild_refcount_table.png)
qcow2-dump -R all rebuild_refcount_table.qcow2
2. rebuild reused active cluster. (eg: reused_active_cluster.png)
qcow2-dump -R all -r reused_active_cluster.qcow2
3. delete damaged qcow2 snapshot header. (eg: invalid_snapshot_header.png)
qcow2-dump -D snapshot[0] vm-disk-2.qcow2
4. -m edit / -m copy: for repairing some special damage. (eg: comments of
qcow2_edit_modify is a instance)
...
But this tool is not good enough yet, hope to receive your advices to improve
it.
Best wishes
youplus
qcow2-dump.tar.gz
Description: GNU Zip compressed data
- [Qemu-devel] a tiny tool for checking and repairing damaged qcow2 image,
张友加 <=