Trying to clone a ZFS drive, can't get ashift=12

Daniel Eischen deischen at freebsd.org
Wed Apr 1 04:30:55 UTC 2015


I have an Oracle (nee Sun) X4-2 server with identical 300GB SAS
drives.  I did an MBR ZFS install from FreeBSD 10.1-RELEASE CD
and have it updated to p6:

   $ uname -a
   FreeBSD foo 10.1-RELEASE-p6 FreeBSD 10.1-RELEASE-p6 #0:
     Tue Feb 24 19:00:21 UTC 2015
     root at amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC
     amd64

   $ freebsd-version
   10.1-RELEASE-p6

The current ZFS setup is:

   $ zdb | grep ashift
               ashift: 12
               ashift: 12

   $ zpool status
     pool: bootpool
    state: ONLINE
     scan: resilvered 486M in 0h0m with 0 errors on Thu Mar 26 09:16:45  2015
   config:

           NAME                                                            STATE     READ WRITE CKSUM
           bootpool                                                        ONLINE       0     0     0
             diskid/DISK-001442CBEEKF%20%20%20%20%20%20%20%20KFHBEEKFs1a   ONLINE       0     0     0


     pool: zroot
    state: ONLINE
     scan: resilvered 200K in 0h0m with 0 errors on Wed Mar 25 10:51:36  2015
   config:

           NAME                                                            STATE     READ WRITE CKSUM
           zroot                                                           ONLINE       0     0     0
             diskid/DISK-001442CBEEKF%20%20%20%20%20%20%20%20KFHBEEKFs1d   ONLINE       0     0     0

   $ gpart show diskid/DISK-001442CBEEKF%20%20%20%20%20%20%20%20KFHBEEKF
   =>       63  585937437   diskid/DISK-001442CBEEKF%20%20%20%20%20%20%20%20KFHBEEKF  MBR  (279G)
            63  585937422                                                          1  freebsd  [active]  (279G)
     585937485         15                                                             - free -  (7.5K)

   $ gpart show diskid/DISK-001442CBEEKF%20%20%20%20%20%20%20%20KFHBEEKFs1
   =>        0  585937422   diskid/DISK-001442CBEEKF%20%20%20%20%20%20%20%20KFHBEEKFs1  BSD  (279G)
             0    4194304                                                            1  freebsd-zfs  (2.0G)
       4194304    8388608                                                            2  freebsd-swap  (4.0G)
      12582912  573354510                                                            4  freebsd-zfs  (273G)

   [Why are the disk ids blank %20 filled?]

Now I want to create another (sorta) matching setup, but this time want
to use labels and 4G (instead of 2G) for bootpool.

   # gpart create -s MBR da1
   # gpart add -t freebsd da1
   # gpart create -s BSD da1s1
   # gpart add -s 4G -t freebsd-zfs da1s1
   # gpart add -s 4G -t freebsd-swap da1s1
   # gpart add -t freebsd-zfs da1s1
   # gpart show da1
   =>       63  585937437  da1  MBR  (279G)
            63  585937422    1  freebsd  (279G)
     585937485         15       - free -  (7.5K)
   # gpart show da1s1
   =>        0  585937422  da1s1  BSD  (279G)
             0    8388608      1  freebsd-zfs  (4.0G)
       8388608    8388608      2  freebsd-swap  (4.0G)
      16777216  569160206      4  freebsd-zfs  (271G)

Except for da1s1a being 4G instead of 2G, everything matches the
ZFS setup above.  Make the labels.

   # glabel label boot0 da1s1a
   # glabel label swap0 da1s1b
   # glabel label root0 da1s1d

Create the ZFS bootpool.

   # zpool create -o cachefile=/tmp/newpool.cache bootpoolNew label/boot0
   # zdb -U /tmp/newpool.cache | grep ashift
               ashift: 9

The geometry matches, but ashift is 9 not 12.

If I try to use 4K, the disk geometry doesn't match the original and
ashift is still 9 instead of 12.

   # gpart create -s MBR da1
   # gpart add -a 4k -t freebsd da1
   # gpart create -s BSD da1s1
   # gpart add -a 4k -s 4G -t freebsd-zfs da1s1
   # gpart add -a 4k -s 4G -t freebsd-swap da1s1
   # gpart add -a 4k -t freebsd-zfs da1s1

   # gpart show da1
   =>       63  585937437  da1  MBR  (279G)
            63         63       - free -  (32K)
           126  585937359    1  freebsd  [active]  (279G)
     585937485         15       - free -  (7.5K)

   # gpart show da1s1
   =>        0  585937359  da1s1  BSD  (279G)
             0          2         - free -  (1.0K)
             2    8388608      1  freebsd-zfs  (4.0G)
       8388610    8388608      2  freebsd-swap  (4.0G)
      16777218  569160136      4  freebsd-zfs  (271G)
     585937354          5         - free -  (2.5K)

   # zpool create -o cachefile=/tmp/newpool.cache bootpoolNew label/boot0
   # zdb -U /tmp/newpool.cache | grep ashift
               ashift: 9

What gives?  How do I get it to use 4k?

-- 
DE


More information about the freebsd-stable mailing list