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