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.
_______________________________________________
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "freebsd-stable-unsubscr...@freebsd.org"

Reply via email to