Performance in Device Extent vs File Extents

Not open for further replies.


Jan 13, 2014
Hi everyone:

The official FreeNAS docs (iSCSI page) "...a zvol and a file extent should have identical performance. In practice, a file extent outperforms in reads/writes but this is only noticeable at 10 GB Ethernet speeds or higher. For high performance, file extents are recommended at this time. "

My experience with this is the polarized opposite. Writing to a file extent I average write speeds of about 3.75MB/s. Writing to a device extent I average write speeds of about 88MB/s.

Usage: This is for a backup server. The goal is to use File extents so that I could expand my extents later as my backup storage needs grow. (My understanding is) File extents can be increased but device extents/zvol devices can either be created or destroyed - not grown.

UPDATE: I just read through to the bottom of the iSCSI page and saw zvol can be grown - just has to be done through the CLI (there doesn't appear to be a way to do it through the GUI. That's fine I guess - this seems to solve for the reason I was preferring File over Device extents)

Having said that, Is there a reason for the massive delta in speed between File and Device Extents? I ask only because the documentation (iSCSI page) says the opposite and I'd like to understand what I'm doing that is creating this massive difference.

I will try to give as much information as possible. If anything else is needed to help me troubleshoot please let me know.

FreeNAS 9.2

Hardware: New Dell R520, 8x4TB Segate Constellation SAS 7200rpm drives, LSI 9211-8i controller. 32G RAM, dual processor Intel 2.2Ghz

Storage Server Configuration:
- Disk Raid: All drives in a Raidz2

Storage Volume
- StorageVolume: Compression: Inherit, aTime: Inherit, Quote and Reserved space: 0, DeDupe: Inherit

-- StorageVolume\BackupDataSet: Compression Off; aTime: inherit; Quota for -this dataset, -this dataset and all children: 0; Reserved space for this dataset: 0; Reserved space for this dataset and all children: 1T; Dedupe: Inherit

-- zvol created under StorageVolume\BackupDataSet
Size: 1.5T; Compression: None; Sparse Volume: Unselected; Block Size 512

--- Extent Type: File; Path: StorageVolume\BackupDataset\FileExtent; Extent size: 1TB
--- Extent Type: Device; Path: StorageVolume\BackupDataset\DeviceExtent; Extent size: 1TB
iSCSI Config
Each iSCSI extent is presented through it's own identically configured Target to the testing server.
rw, logical block size: 512


Inactive Account
Mar 25, 2012
I've used iSCSI on both and I saw the same performance across the board. In fact, I just did a speed test of my file extent and I got about 40MB/sec. That's what I've always gotten on that pool from iSCSI.

Keep in mind that if you change certain settings you can make one perform worse than the other. So you'll have to look at your config and see what you've done to cause the disparity. The number of things that could be hurting performance is almost endless depending on how much stuff you've setup for your situation.


I asked the FreeBSD developer who maintains this section of code and he explains it this way. A zvol has to pass all requests through an additional GEOM layer, which substantially increases processing overhead and creates some problems, whereas a file extent does not. In FreeBSD 10, as part of his GEOM direct dispatch projects, zvols get some improvements, but file extents should still remain faster. To get on par, GEOM should be completely moved out of the equation, which he wishes to try at some point, but not yet.

He found it curious that you got such low numbers from a file extent and wonders if you have different settings for the dataset or zvol such as sync or block/record size.


Feb 12, 2015
Sorry to resurrect this thread...

dlavigne, does your statement still hold true on FreeNAS 9.3? Did you ever follow up with this developer on his progress for removing the GEOM layer from device file extents for iSCSI or other related optimizations?
Not open for further replies.