Hi, I have a setup with thousands of filesystems, each containing several snapshots. For a good percentage of these filesystems I want to create a snapshots once every hour, for others once every 2 hours and so forth. I built some tools to do this, no problem so far.
While examining disk load on the system, I found out that load jumps up whenever the snapshot creation process is running. Delving a bit deeper it seems that every snapshot start a new txg. This seems to be quite costly, about 100-150 IOPs. This takes about one second, so I can create one snapshot per second. Creating all necessary snapshot for one hour takes about 45 minutes. During this time the disks are at 70% utilization and txgs are back-to-back. So I need to optimize this. Looking at the code it seems that recursive snapshots are being collected into a single txg. So my aim is to collect all necessary snapshots in a single txg, too. Using libzfs or ioctl I haven't found any way to do this. I cannot just use recursive snapshots, because not all filesystems need to be snapshotted. Same with snapshot deletion. My idea is to write a small kernel module that roughly duplicates the code of zfs_ioc_snapshot, but instead of being fully recursive gets passed a list of filesystems to snapshot. My questions: - is there any easier way to bring down disk load and accelerate snapshot creation? - are there any arguments, why my approach isn't feasible? Thanks for any hits. -Arne _______________________________________________ zfs-discuss mailing list zfs-discuss@opensolaris.org http://mail.opensolaris.org/mailman/listinfo/zfs-discuss