I have a huge problem with ZFS pool fragmentation. I started investigating problem about 2 weeks ago http://www.opensolaris.org/jive/thread.jspa?threadID=34423&tstart=0
I found workaround for now - changing recordsize - but I want better solution. The best solution would be a defragmentator tool, but I can see that it is not easy. When ZFS pool is fragmented then: 1. spa_sync function is executing very long ( > 5 seconds ) 2. spa_sync thread often takes 100% CPU 3. metaslab space map is very big There are some changes hidding the problem like this http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6512391 and I hope there will be available in Solaris 10 update 4 But I suggest that: 1. in sync phase when for the first time we did not found block we need ( for example 128k ), pool schould remember this for some time ( 5 minutes ) and stop asking for this kind of blocks. 2. We should be more careful with unloading space maps. At the end of sync phase space maps for metaslabs without active flag are unloaded. On my fragmented pool spacemap with 800MB space available ( from 2GB ) is unloaded because there was no 128K blocks. This message posted from opensolaris.org _______________________________________________ zfs-discuss mailing list zfs-discuss@opensolaris.org http://mail.opensolaris.org/mailman/listinfo/zfs-discuss