ZFS and sparse file backed md devices
steve at sohara.org
Mon Jan 19 16:12:00 UTC 2015
I tried to follow the suggestions for converting a ZFS mirror (mine
was a three way mirror) to a RAIDZ (or in my case a RAIDZ2) when tight on
discs by creating a pool using sparse file backed md devices to stand in
for the missing discs. Fortunately I experimented with a dry run using
nothing but sparse file backed md devices first.
I'm using FreeBSD 10.1-RELEASE-p3.
The first surprise was when I created four 2TB sparse file backed
md devices using truncate and mdconfig and then tried to make a zfs pool
out of them. The sparse files became not sparse - or at least tried to but
of course there wasn't 8TB of space to use in /tmp so it filled up and it
took a reboot to kill the zpool create run. Next experiment was more
modest, four 128MB sparse files, sure enough once the zpool create finished
they were four 128MB files and not sparse. Creating a pool on real discs
certainly doesn't write on all the blocks - so why did my sparse files get
filled in ?
A little more experimenting revealed that I could offline the 128MB
md devices one by one, destroy the device, truncate the file up to 2TB,
recreate the device, wipe the ZFS meta data and replace the offlined
device without filling in the sparse file. All was well until I did this to
the fourth device and the pool tried to autoexpand - after a few seconds
the box locked up and became completely unresponsive to everything except
pings. Anybody have any idea why ?
At this point I decided that the sparse file method was a
non-starter and rebuilt my pool using four 1TB partitions out of the two
available drives, copied the data, and then replaced the partitions one by
one with whole drives, eventually winding up where I wanted to be with my
three drive mirror converted to a four drive RAIDZ2. Still I am puzzled as
to why the sparse file md device route no longer works.
 Well single partitions covering most of each drive.
Steve O'Hara-Smith <steve at sohara.org>
More information about the freebsd-questions