ZFS bug: Creating ZIL ignores vfs.zfs.min_auto_ashift
Steven Hartland
killing at multiplay.co.uk
Thu Nov 6 13:03:50 UTC 2014
Your zdb output looks strange you have two children[1] entries are you
sure your pool is not corrupt?
On 06/11/2014 11:01, Borja Marcos wrote:
>
> 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"
More information about the freebsd-fs
mailing list