Creating zpool on NVMe Disks takes forever

Mark Martinec Mark.Martinec+freebsd at ijs.si
Thu Feb 19 19:26:36 UTC 2015


>>>> On 02/19/2015 12:56 PM, Steven Hartland wrote:
>>>>> Disable trim on init:
>>>>> sysctl vfs.zfs.vdev.trim_on_init=0

>>>> this fixed it, thx!
>>>> 
>>>> but why does it take >8h to trim 2x 400GB? Or is trimming handled
>>>> differently on NVMe than on HDD/SSD?
>>> TRIM/UNMAP is simply an SATA/SCSI command that is sent to a device.
>>> What the device does when it gets that command is up to the 
>>> controller
>>> and firmware on the device.


The default of vfs.zfs.vdev.trim_on_init = 1 can be counterproductive
in case of enabling encryption on a device.  The FreeBSD handbook
for example states:

   
https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/disks-encrypting.html

> 4. Create the New File System
> 
> Next, format the device with the UFS file system and mount it
> on an existing mount point:
>   # dd if=/dev/random of=/dev/da2.eli bs=1m
>   # newfs /dev/da2.eli
>   # mount /dev/da2.eli /private

So after waiting for hours to populate the disk surface with
random bytes, creating a ZFS pool out of it can ditch all the
effort and possibly rewrite it with zeros before creating the
pool.

It should be documented to turn vfs.zfs.vdev.trim_on_init off
in the above case.

   Mark


More information about the freebsd-fs mailing list