# Write-Back Cache in ZFS?



## stassik (Jan 26, 2012)

Sorry for noob qestion, but Write-Back cache - it exists in zfs/FreeBSD? what is his correct name? ZiL? P.S. for example: LARC and L2ARC - are caches for read  P.S.S. Sorry for my russian-english :stud


----------



## SirDice (Jan 26, 2012)

Maybe this clears things up a bit: http://www.nickebo.net/zfs-zil-l2arc-what-that-about/


----------



## stassik (Jan 28, 2012)

SirDice said:
			
		

> Maybe this clears things up a bit: http://www.nickebo.net/zfs-zil-l2arc-what-that-about/


Thanks for your answer! But I want to know more:
ZiL it is cache for a streaming or sequential write-workload?


----------



## phoenix (Jan 29, 2012)

Any sync writes under 64KB in size are written to the ZIL first, then they become async writes that get written out to the pool along with the next transaction group (5-30 seconds later, depending on pool settings).

Any sync writes over 64 KB in size are written to the pool directly as part of an immediate transaction group (ASAP).

Sequential or streaming don't matter.  It's just size that counts.


----------



## tanngens (Jan 29, 2012)

phoenix said:
			
		

> Any sync writes under 64KB in size are written to the ZIL first, then they become async writes that get written out to the pool along with the next transaction group (5-30 seconds later, depending on pool settings).
> 
> Any sync writes over 64 KB in size are written to the pool directly as part of an immediate transaction group (ASAP).
> 
> Sequential or streaming don't matter.  It's just size that counts.



Another quick question about the ZIL that I've wondered. if the pool is experiencing very high I/O on the mechanical disks does the ZIL "take over" some of the writes while the mechanical disks get whatever they're doing done?


----------



## phoenix (Jan 30, 2012)

Nope. the ZIL is only for sync writes under a certain size.


----------



## stassik (Jan 30, 2012)

phoenix said:
			
		

> Any sync writes under 64KB in size are written to the ZIL first, then they become async writes that get written out to the pool along with the next transaction group (5-30 seconds later, depending on pool settings).
> 
> Any sync writes over 64 KB in size are written to the pool directly as part of an immediate transaction group (ASAP).
> 
> Sequential or streaming don't matter.  It's just size that counts.



THank you for your answer!

The NEXT noob's question:
1. Created iSCSI target;
2. Formated from iSCSI initiator to NTFS (64KB);

All my writes from iSCSI initiator to iSCSI target will be under 64KB in size? All in ZiL first?


----------



## throAU (Jan 30, 2012)

I'd suggest that with 64KB block size NTFS (this is what you mean by 64KB?), all your writes will be ABOVE (well, equal to or greater than) 64KB?

Any reason you're sharing out as iSCSI to merely format as NTFS anyway?  If it was me I'd simply share out via CIFS (samba)?


----------



## stassik (Jan 30, 2012)

throAU said:
			
		

> I'd suggest that with 64KB block size NTFS (this is what you mean by 64KB?), all your writes will be ABOVE (well, equal to or greater than) 64KB?
> 
> Any reason you're sharing out as iSCSI to merely format as NTFS anyway?  If it was me I'd simply share out via CIFS (samba)?



1. Yes, I mean 64KB block size NTFS;
2. Why iSCSI? because:
- iSCSI fastest net protocol;
- iSCSI target I can connect like natural Hard Disk (in samba just mapped net disk);
- I can boot PC without HDD from iSCSI target in lan;
3. Please answer to me for question: 
- If iSCSI target on the pool, formatted by iSCSI Initator to 64KB or 32KB block size NTFS - All data will be write to ZiL before zfs pool?


----------



## phoenix (Jan 30, 2012)

Only if the writes are marked as "sync".  Most writes are "async", and don't go to the ZIL.

Only if the filesystem is mounted "sync", then all writes will be sync and (possibly) go to the ZIL.  Otherwise, it's up to the application doing the writes to determine whether it's a sync or async write.


----------



## stassik (Jan 31, 2012)

ZiL is only one cache for write in ZFS file system?


----------



## olav (Jan 31, 2012)

You can use a hardware raid controller with battery backed write cache to further improve zfs performance. Just remember to configure each harddrive as a single raid drive.


----------

