ZFS bug: Creating ZIL ignores vfs.zfs.min_auto_ashift
Michael Jung
mikej at paymentallianceintl.com
Thu Nov 6 13:11:15 UTC 2014
What does smartctl -a /dev/ada1 show?
I see other posts via google showing that the SSDSA2CT040G3 has 512 byte physical sectors (ashift 9)
--mikej
=== START OF INFORMATION SECTION ===
Device Model: INTEL SSDSA2CT040G3
Serial Number: CVPR140301GV040AGN
LU WWN Device Id: 5 001517 9596e4f5f
Firmware Version: 4PC10362
User Capacity: 40,020,664,320 bytes [40.0 GB]
Sector Size: 512 bytes logical/physical <--------------
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: 8
ATA Standard is: ATA-8-ACS revision 4
Local Time is: Sun May 13 14:36:47 2012 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
-----Original Message-----
From: owner-freebsd-fs at freebsd.org [mailto:owner-freebsd-fs at freebsd.org] On Behalf Of Borja Marcos
Sent: Thursday, November 06, 2014 6:01 AM
To: freebsd-fs at FreeBSD.org Filesystems
Subject: ZFS bug: Creating ZIL ignores vfs.zfs.min_auto_ashift
Hi,
I have noticed that ZIL creation _ignores_ the vfs.zfs.min_auto_ashift variable. ZIL and cache on SSDs should use this variable in order to apply the optimum sector size on SSDs or so-called advanced format drives.
The system is:
root at splunk:/ # uname -a
FreeBSD splunk 10.1-PRERELEASE FreeBSD 10.1-PRERELEASE #12: Tue Nov 4 11:22:48 CET 2014 root at splunk:/usr/obj/usr/src/sys/SPLUNK10 amd64
Example:
# sysctl vfs.zfs.min_auto_ashift=12
# zpool status //// Just a common mirror with two hard disks
pool: rpool
state: ONLINE
scan: scrub repaired 0 in 5h55m with 0 errors on Wed Oct 29 23:26:03 2014
config:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
ada0p3 ONLINE 0 0 0
ada2p3 ONLINE 0 0 0
errors: No known data errors
# zpool add rpool log ada1
# zpool status
pool: rpool
state: ONLINE
scan: scrub repaired 0 in 5h55m with 0 errors on Wed Oct 29 23:26:03 2014
config:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
ada0p3 ONLINE 0 0 0
ada2p3 ONLINE 0 0 0
logs
ada1 ONLINE 0 0 0
errors: No known data errors
///// There it is, but
# zdb | more
version: 5000
name: 'rpool'
state: 0
txg: 11738986
pool_guid: 18110845055860026534
hostid: 316898903
hostname: 'splunk'
vdev_children: 2
vdev_tree:
type: 'root'
id: 0
guid: 18110845055860026534
children[0]:
type: 'mirror'
id: 0
guid: 10858793804082837265
metaslab_array: 30
metaslab_shift: 32
ashift: 12
asize: 482922987520
is_log: 0
create_txg: 4
children[0]:
type: 'disk'
id: 0
guid: 10490056043151312448
path: '/dev/ada0p3'
phys_path: '/dev/ada0p3'
whole_disk: 1
DTL: 331
create_txg: 4
children[1]:
type: 'disk'
id: 1
guid: 2441255496794840851
path: '/dev/ada2p3'
phys_path: '/dev/ada2p3'
whole_disk: 1
DTL: 252
create_txg: 4
children[1]:
type: 'disk'
id: 1
guid: 3564614139316480036
path: '/dev/ada1'
id: 1
guid: 2441255496794840851
path: '/dev/ada2p3'
phys_path: '/dev/ada2p3'
whole_disk: 1
DTL: 252
create_txg: 4
children[1]:
type: 'disk'
id: 1
guid: 3564614139316480036
path: '/dev/ada1'
phys_path: '/dev/ada1'
whole_disk: 1
metaslab_array: 0
metaslab_shift: 0
ashift: 9 <======================= WRONG, SHOULDN'T IT BE 12??
asize: 40015757312
is_log: 1
create_txg: 11738986
features_for_read:
com.delphix:hole_birth
com.delphix:embedded_data
If, however, I do the gnop trick,
# gnop create -S 4K ada1
# zpool add rpool log ada1.nop
# zpool status
pool: rpool
state: ONLINE
scan: scrub repaired 0 in 5h55m with 0 errors on Wed Oct 29 23:26:03 2014
config:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
ada0p3 ONLINE 0 0 0
ada2p3 ONLINE 0 0 0
logs
ada1.nop ONLINE 0 0 0
errors: No known data errors
this time our mirror has the ashift we wanted, 12.
children[1]:
type: 'disk'
id: 1
guid: 6487094506120463221
path: '/dev/ada1.nop'
phys_path: '/dev/ada1.nop'
whole_disk: 1
metaslab_array: 0
metaslab_shift: 0
ashift: 12
asize: 40015757312
is_log: 1
create_txg: 11739034
The disks I am playing with are:
# camcontrol devlist
<ST3500418AS CC38> at scbus0 target 0 lun 0 (ada0,pass0)
<INTEL SSDSA2CT040G3 4PC10362> at scbus1 target 0 lun 0 (ada1,pass1)
<ST500DM002-1BC142 JC4B> at scbus2 target 0 lun 0 (ada2,pass2)
<INTEL SSDSA2CT040G3 4PC10362> at scbus3 target 0 lun 0 (ada3,pass3)
And yes, I know the two hard disks have different sector sizes but I created the pool with an ashift of 12.
Borja.
_______________________________________________
freebsd-fs at freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-fs
To unsubscribe, send any mail to "freebsd-fs-unsubscribe at freebsd.org"
GoPai.com | Facebook.com/PaymentAlliance
CONFIDENTIALITY NOTE: This message is intended only for the use
of the individual or entity to whom it is addressed and may
contain information that is privileged, confidential, and
exempt from disclosure under applicable law. If the reader
of this message is not the intended recipient, you are hereby
notified that any dissemination, distribution or copying
of this communication is strictly prohibited. If you have
received this transmission in error, please notify us by
telephone at (502) 212-4001 or notify us at PAI , Dept. 99,
6060 Dutchmans Lane, Suite 320, Louisville, KY 40205
More information about the freebsd-fs
mailing list