Since I was curious, I've hacked up a version of zdb to collect statistics on ditto block counts and diversity (how many ditto blocks are actually on different top-level vdevs). diffs available on request.
here's some sample output on a pool which started life with one top-level vdev before the introduction of ditto blocks, was upgraded to support them, had about 120GB of data migrated into it, and then was grown to three top-level vdevs: : 3 #; time ./amd64/zdb -L -bD z Traversing all blocks to verify nothing leaked ... *** Live pool traversal; block counts are only approximate *** No leaks (block sum matches space maps exactly) bp count: 8266676 bp logical: 269002290176 avg: 32540 bp physical: 123969312768 avg: 14996 compression: 2.17 bp allocated: 161739043840 avg: 19565 compression: 1.66 SPA allocated: 161739043840 used: 14.77% Ditto blocks: 1 % 2 % 3 % Total Type 256 7.25 - 3273 92.75 3529 R3 blocks 63557 4.11 1484190 95.89 8 0.00 1547755 R2 blocks 6715392 100.00 6715392 R1 blocks Ditto block diversity: 1 % 2 % 3 % Total Type 640 18.14 - 2889 81.86 3529 R3 vdevs 926581 59.87 621166 40.13 8 0.00 1547755 R2 vdevs 6715392 100.00 6715392 R1 vdevs ------ presentation could use some work but to summarize, the "R3"/"R2"/"R1" indicates counts of blocks at each expected replication level, and the column headers indicate either the actual number of ditto blocks, or the number of different vdevs on which the ditto blocks appear. the first table is unlikely to be interesting on pools born with ditto blocks enabled. Anyhow, to explain this all a little better, for this pool, 18% of the triply-replicated blocks are on a single vdev and 82% are on all three; 60% of the doubly-replicated are on one vdev and 40% are on two. 93% of the triply-replicated blocks are actually triply replicated, while 7% aren't (presumably they haven't been rewritten since the pool was upgraded) Similarly, 4% of the doubly-replicated blocks haven't been rewritten since the upgrade. The first table is unlikely to be interesting on pools born with ditto blocks enabled. (I believe the 8 blocks with expected replication level of 2 which turn up with a replication level of 3 is a bug in my counting). By comparison, zpool iostat reports: capacity operations bandwidth pool used avail read write read write ----------- ----- ----- ----- ----- ----- ----- z 151G 869G 71 83 605K 1.11M raidz 105G 235G 55 28 497K 392K ... raidz 23.9G 316G 8 30 64.1K 431K ... raidz 21.8G 318G 9 33 60.9K 428K ... ----------- ----- ----- ----- ----- ----- ----- so as I might have expected, the metadata is spreading out a lot faster than the unreplicated data.. - Bill _______________________________________________ zfs-discuss mailing list zfs-discuss@opensolaris.org http://mail.opensolaris.org/mailman/listinfo/zfs-discuss