ZFS pool with 4k sector size

Adam McDougall mcdouga9 at egr.msu.edu
Thu Aug 22 22:51:02 UTC 2013


On 08/22/13 04:23, Trond Endrestøl wrote:
> On Thu, 22 Aug 2013 11:40+0400, Michael BlackHeart wrote:
>
>> Hello,
>> I'd like to know what is the best way to convert my pool from 512b sector
>> size to 4k sector size.
>>
>> Hardware: 2 x2Tb WD Green with 4k physical sector size
>>
>> Model Family: Western Digital Caviar Green (AF, SATA 6Gb/s)
>> Device Model: WDC WD20EARX-00PASB0
>> Serial Number: WD-WCAZA8280575
>> LU WWN Device Id: 5 0014ee 206032063
>> Firmware Version: 51.0AB51
>> User Capacity: 2 000 398 934 016 bytes [2,00 TB]
>> Sector Sizes: 512 bytes logical, 4096 bytes physical
>> Device is: In smartctl database [for details use: -P show]
>> ATA Version is: ATA8-ACS (minor revision not indicated)
>> SATA Version is: SATA 3.0, 3.0 Gb/s (current: 3.0 Gb/s)
>> Local Time is: Thu Aug 22 11:33:16 2013 MSK
>> SMART support is: Available - device has SMART capability.
>> SMART support is: Enabled
>>
>> They're running in a mirror
>>
>> pool: storage
>> state: ONLINE
>> scan: resilvered 48K in 0h0m with 0 errors on Thu Jul 25 19:18:01 2013
>> config:
>>
>> NAME STATE READ WRITE CKSUM
>> storage ONLINE 0 0 0
>> mirror-0 ONLINE 0 0 0
>> ada3 ONLINE 0 0 0
>> ada7 ONLINE 0 0 0
>>
>> zdb info
>>
>> storage:
>> version: 5000
>> name: 'storage'
>> state: 0
>> txg: 1292269
>> pool_guid: 18442220950447532371
>> hostid: 708219113
>> hostname: 'diablo.miekoff.local'
>> vdev_children: 1
>> vdev_tree:
>> type: 'root'
>> id: 0
>> guid: 18442220950447532371
>> create_txg: 4
>> children[0]:
>> type: 'mirror'
>> id: 0
>> guid: 4289294206539029185
>> metaslab_array: 33
>> metaslab_shift: 34
>> ashift: 9
>> asize: 2000394125312
>> is_log: 0
>> create_txg: 4
>> children[0]:
>> type: 'disk'
>> id: 0
>> guid: 16348588566764560218
>> path: '/dev/ada3'
>> phys_path: '/dev/ada3'
>> whole_disk: 1
>> DTL: 95
>> create_txg: 4
>> children[1]:
>> type: 'disk'
>> id: 1
>> guid: 7655198429866445090
>> path: '/dev/ada7'
>> phys_path: '/dev/ada7'
>> whole_disk: 1
>> DTL: 97
>> create_txg: 4
>> features_for_read:
>>
>> As you see ashift is 9 (512b).
>>
>> I know a common solution with gnop and export-mport pool, but how should I
>> manage mirror this way? Should I create a mirror on gnop-ed devices and
>> then export-import?
> I'm afraid you're out of luck. You need to backup the data
> somehow, recreate the pool with ashift=12, and restore the data.
>
> A better option would be to buy a couple of new drives, assuming you
> can connect them to the current system, create a new mirrored pool
> with ashift=12, and transfer the data using a recursive set of
> snapshots on the current pool and a ZFS send stream sent to the new
> pool.
>
>
You can zpool detach storage ada7, gnop create -S 4k ada7, zpool create 
storage2 ada7.nop, then copy all of your data into storage2 manually.  
When done, destroy the original zpool then zpool attach storage2 
ada7.nop ada3 which will resilver ada7 onto ada3 to complete the new 
mirror. Then I'd zpool export storage2, destroy the nop or just reboot, 
and re-import storage2 as storage if you wish to rename it.

The risk is losing all of your data if there is a problem while you only 
have one valid copy.


More information about the freebsd-stable mailing list