Date: Thu, 6 Nov 2014 12:01:27 +0100 From: Borja Marcos <borjam@sarenet.es> To: "freebsd-fs@FreeBSD.org Filesystems" <freebsd-fs@freebsd.org> Subject: ZFS bug: Creating ZIL ignores vfs.zfs.min_auto_ashift Message-ID: <B731A922-3F83-4D8E-A4EA-22C5CA8A3850@sarenet.es>
next in thread | raw e-mail | index | archive | help
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@splunk:/ # uname -a FreeBSD splunk 10.1-PRERELEASE FreeBSD 10.1-PRERELEASE #12: Tue Nov 4 = 11:22:48 CET 2014 root@splunk:/usr/obj/usr/src/sys/SPLUNK10 amd64 Example: # sysctl vfs.zfs.min_auto_ashift=3D12 # 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 = <=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D = 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.=20 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.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?B731A922-3F83-4D8E-A4EA-22C5CA8A3850>