Two weeks ago I created a Makefile to automate the ZFS setup for 2 disks as described here, but adapted the procedure to align to 4K sectors disks.
A few hours ago I tested this with 9.2-BETA2. Some details ......
Code:
FreeBSD 9.2-BETA2 FreeBSD 9.2-BETA2 #0 r253698: Sat Jul 27 18:22:20 UTC 2013
root@bake.isc.freebsd.org:/usr/obj/usr/src/sys/GENERIC amd64
# zpool status
pool: syspool
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
NAME STATE READ WRITE CKSUM
syspool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
gpt/disk_1 ONLINE 0 0 0
gpt/disk_2 ONLINE 0 0 0
errors: No known data errors
# zpool list
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
syspool 1.81T 712M 1.81T 0% 1.00x ONLINE -
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
syspool 4.82G 1.78T 144K none
syspool/ROOT 711M 1.78T 144K none
syspool/ROOT/default 710M 1.78T 710M legacy
syspool/swap 4.13G 1.78T 72K -
# zdb -C syspool
MOS Configuration:
version: 5000
name: 'syspool'
state: 0
txg: 152
pool_guid: 3438526185973838084
hostid: 556313802
hostname: ''
vdev_children: 1
vdev_tree:
type: 'root'
id: 0
guid: 3438526185973838084
children[0]:
type: 'mirror'
id: 0
guid: 10481547726514786031
metaslab_array: 33
metaslab_shift: 34
ashift: 12
asize: 2000394125312
is_log: 0
create_txg: 4
children[0]:
type: 'disk'
id: 0
guid: 13788062699240212125
path: '/dev/gpt/disk_1'
phys_path: '/dev/gpt/disk_1'
whole_disk: 1
create_txg: 4
children[1]:
type: 'disk'
id: 1
guid: 6638123737697553782
path: '/dev/gpt/disk_2'
phys_path: '/dev/gpt/disk_2'
whole_disk: 1
create_txg: 4
features_for_read:
The
ashift 12 indicates that ZFS is using a 4K alignment. Of course you also need to align the partition(s) on a 4K (8 x 512) boundary:
Code:
# gpart show ada1 ; gpart show ada2
=> 34 3907029101 ada1 GPT (1.8T)
34 6 - free - (3.0k)
40 88 1 freebsd-boot (44k)
128 3907029000 2 freebsd-zfs (1.8T)
3907029128 7 - free - (3.5k)
=> 34 3907029101 ada2 GPT (1.8T)
34 6 - free - (3.0k)
40 88 1 freebsd-boot (44k)
128 3907029000 2 freebsd-zfs (1.8T)
3907029128 7 - free - (3.5k)
diskinfo(8) shows that the drives I used are Advanced Format drives. These drives report a sector of 512 bytes, while actually they use sectors of 4096 bytes.
Code:
# diskinfo -v ada1 ; diskinfo -v ada2
ada1
512 # sectorsize
2000398934016 # mediasize in bytes (1.8T)
3907029168 # mediasize in sectors
4096 # stripesize
0 # stripeoffset
3876021 # Cylinders according to firmware.
16 # Heads according to firmware.
63 # Sectors according to firmware.
S1E160MR # Disk ident.
ada2
512 # sectorsize
2000398934016 # mediasize in bytes (1.8T)
3907029168 # mediasize in sectors
4096 # stripesize
0 # stripeoffset
3876021 # Cylinders according to firmware.
16 # Heads according to firmware.
63 # Sectors according to firmware.
S1E15YPP # Disk ident.
The 9.2-BETA2
dmesg(8) reports these drives as:
Code:
ada1 at ata3 bus 0 scbus1 target 0 lun 0
ada1: <ST2000DM001-1CH164 CC24> ATA-8 SATA 3.x device
ada1: 300.000MB/s transfers (SATA 2.x, UDMA5, PIO 8192bytes)
ada1: 1907729MB (3907029168 512 byte sectors: 16H 63S/T 16383C)
ada1: quirks=0x1<4K>
ada1: Previously was known as ad6
ada2 at ata3 bus 0 scbus1 target 1 lun 0
ada2: <ST2000DM001-1CH164 CC24> ATA-8 SATA 3.x device
ada2: 300.000MB/s transfers (SATA 2.x, UDMA5, PIO 8192bytes)
ada2: 1907729MB (3907029168 512 byte sectors: 16H 63S/T 16383C)
ada2: quirks=0x1<4K>
ada2: Previously was known as ad7