I've found a lot of info about using ZFS with 4k blocksize drives. Mine is a Seagate ST2000DL003. (2TB "Green" 5900RPM) I think that is 4k blocksize, and I think it pretends to be 512. (like the WD "EARS" I've read alot of bad about.)
My understanding is that this is best practice to use gnop to fool zfs into thinking the apparently 512 drives are really 4k (which they are really anyway
), and from there it's basically smooth. ashift gets set at 12, and everyone is happy. (As an aside, I wonder whether ashift can be made a tunable parameter at zpool create time. While Solaris I don't think has this option, I've heard that the LLNL Linux port allows this. That way the gnop hack wouldn't be necessary.)
OK so now that leads me to my question, which I am not clear on. Initially I would have been happy with giving ZFS the whole disk, as is standard best practice on Solaris. However I recently had an incident at work that made me start thinking more. (basically had to migrate data from one SAN storage unit to another; new SAN unit had slightly smaller LUNs; bad news) I'm thinking it would be best to maybe shave off 1GB or so off from the 2TB (enough to be safe, but small enough not to notice) in case I need to replace or mirror to a slightly smaller drive.
The best/only way I can think of to do this is with partitioning. Obviously with that now, the partitions should definetely be laid out on 4k boundaries. What partitioning scheme is best for this? (GPT, BSD, DOS-style FDISK, EFI, SMI, etc) Ideally would be something portable, but at the very least I'd like to understand how it works so if I did have to change I could create another partition scheme pointing the same place. Does this relate at all with a given labelling scheme? And most importantly, do I do gnop trick on the whole drive, then partition? Or do I partition the drive, then do gnop trick on only the partition?
Thanks for any advice!
My understanding is that this is best practice to use gnop to fool zfs into thinking the apparently 512 drives are really 4k (which they are really anyway

OK so now that leads me to my question, which I am not clear on. Initially I would have been happy with giving ZFS the whole disk, as is standard best practice on Solaris. However I recently had an incident at work that made me start thinking more. (basically had to migrate data from one SAN storage unit to another; new SAN unit had slightly smaller LUNs; bad news) I'm thinking it would be best to maybe shave off 1GB or so off from the 2TB (enough to be safe, but small enough not to notice) in case I need to replace or mirror to a slightly smaller drive.
The best/only way I can think of to do this is with partitioning. Obviously with that now, the partitions should definetely be laid out on 4k boundaries. What partitioning scheme is best for this? (GPT, BSD, DOS-style FDISK, EFI, SMI, etc) Ideally would be something portable, but at the very least I'd like to understand how it works so if I did have to change I could create another partition scheme pointing the same place. Does this relate at all with a given labelling scheme? And most importantly, do I do gnop trick on the whole drive, then partition? Or do I partition the drive, then do gnop trick on only the partition?
Thanks for any advice!