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

Reply via email to