Re: nvd->nda switch and blocksize changes for ZFS

From: Dimitry Andric <dim_at_FreeBSD.org>
Date: Sat, 23 Sep 2023 18:12:35 UTC
On 23 Sep 2023, at 18:31, Frank Behrens <frank@harz2023.behrens.de> wrote:
> 
> I created a zpool with a FreeBSD-14.0-CURRENT on February. With 15.0-CURRENT/14.0-STABLE from now I get the message:
> 
> status: One or more devices are configured to use a non-native block size.
>         Expect reduced performance.
> action: Replace affected devices with devices that support the
>         configured block size, or migrate data to a properly configured
>         pool.
>         NAME        STATE     READ WRITE CKSUM
>         zsys        ONLINE       0     0     0
>           raidz1-0  ONLINE       0     0     0
>             nda0p4  ONLINE       0     0     0  block size: 4096B configured, 16384B native
>             nda1p4  ONLINE       0     0     0  block size: 4096B configured, 16384B native
>             nda2p4  ONLINE       0     0     0  block size: 4096B configured, 16384B native
> 
> I use:
> nda0: <Samsung SSD 980 1TB ..>
> nda0: nvme version 1.4
> nda0: 953869MB (1953525168 512 byte sectors)
> 
> I cannot imagine, that the native blocksize changed. Do I really expect a reduced performance?
> Is it advisable to switch back to nvd?

It could be due to a bug in nda so it reports the native block size incorrectly, in which case you would not need to do anything but ignore the message. However, if the native block size is really 16kiB, you will get write amplification effects, which could needlessly shorten the life of your SSD.

I would try running e.g. smartmontools's smartctl, which can sometimes tell you what the real block size is. Although as far as I know, it retrieves this information from some internal database. You could also try to look up the information in the SSD vendor's data sheet, or ask the vendor directly?

-Dimitry