qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [RFC] qed: Add QEMU Enhanced Disk format


From: Avi Kivity
Subject: Re: [Qemu-devel] [RFC] qed: Add QEMU Enhanced Disk format
Date: Wed, 08 Sep 2010 11:23:46 +0300
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.8) Gecko/20100806 Fedora/3.1.2-1.fc13 Thunderbird/3.1.2

 On 09/08/2010 01:27 AM, Anthony Liguori wrote:
FWIW, L2s are 256K at the moment and with a two level table, it can support 5PB of data.


I clearly suck at basic math today. The image supports 64TB today. Dropping to 128K tables would reduce it to 16TB and 64k tables would be 4TB.

Maybe we should do three levels then. Some users are bound to complain about 64TB.


BTW, I don't think your checksumming idea is sound. If you store a 64-bit checksum along side each point, it becomes necessary to update the parent pointer every time the table changes. This introduces an ordering requirement which means you need to sync() the file every time you update and L2 entry.

Even worse, if the crash happens between an L2 update and an L1 checksum update, the entire cluster goes away. You really want allocate-on-write for this.

Today, we only need to sync() when we first allocate an L2 entry (because their locations never change). From a performance perspective, it's the difference between an fsync() every 64k vs. every 2GB.

Yup. From a correctness perspective, it's the difference between a corrupted filesystem on almost every crash and a corrupted filesystem in some very rare cases.


Plus, doesn't btrfs do block level checksumming? IOW, if you run a workload where you care about this level of data integrity validation, if you did btrfs + qed, you would be fine.

Or just btrfs by itself (use btrfs for snapshots and base images, use qemu-img convert for shipping).


Since the majority of file systems don't do metadata checksumming, it's not obvious to me that we should be.

The logic is that as data sizes increase, the probablity of error increases.

I think one of the critical flaws in qcow2 was trying to invent a better filesystem within qemu instead of just sticking to a very simple and obviously correct format and letting the FS folks do the really fancy stuff.

Well, if we introduce a minimal format, we need to make sure it isn't too minimal.

I'm still not sold on the idea. What we're doing now is pushing the qcow2 complexity to users. We don't have to worry about refcounts now, but users have to worry whether they're the machine they're copying the image to supports qed or not.

The performance problems with qcow2 are solvable. If we preallocate clusters, the performance characteristics become essentially the same as qed.

--
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]