Hello, I had a 3-disk raidz2 pool. I wanted to increase throughput and available storage so I added in another 2 disks into the pool with: zpool add -f external c12t0d0p0 zpool add -f external c13t0d0p0 (it wouldn''t work without -f, and I believe that''s because the fs was online) I now notice that these new disks are not appearing in the raidz2 pool. I am therefore thinking that my fs is simply striping across the raidz2 and c12 and c13. This would mean that the data on the c12 and c13 is at a high risk of being lost. 1) Am I right in my reasoning? 2) Can I remove the new disks from the pool, and re-add them under the raidz2 pool or will I break the fs in so doing? 3) How can I check how much zfs data is written on the actual disk (say c12)? # zpool status pool: external state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM external ONLINE 0 0 0 raidz2 ONLINE 0 0 0 c5t0d0s0 ONLINE 0 0 0 c6t0d0s0 ONLINE 0 0 0 c7t0d0s0 ONLINE 0 0 0 c12t0d0p0 ONLINE 0 0 0 c13t0d0p0 ONLINE 0 0 0 errors: No known data errors thanks justin -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.opensolaris.org/pipermail/zfs-discuss/attachments/20080521/d3b7d185/attachment.html> -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/x-pkcs7-signature Size: 3361 bytes Desc: not available URL: <http://mail.opensolaris.org/pipermail/zfs-discuss/attachments/20080521/d3b7d185/attachment.bin>
> 1) Am I right in my reasoning?yes > 2) Can I remove the new disks from the pool, and re-add them under the raidz2 pool copy the data off the pool, destroy and remake the pool, and copy back > 3) How can I check how much zfs data is written on the actual disk (say c12)? zpool iostat -v
On Wed, 21 May 2008, Justin Vassallo wrote:> zpool add -f external c12t0d0p0 > zpool add -f external c13t0d0p0 (it wouldn''t work without -f, and I believe > that''s because the fs was online)No, it had nothing to do with the pool being online. It was because a single disk was being added to a pool with raidz2. The error message that zpool would have displayed, without the -f, is something like: ''mismatched replication level''. By using the -f the files are now striping among three vdevs: the original raidz2, and each of the new disks. You are correct that the new disks now contain data that is at high risk. The disks cannot be removed from the pool. The best that can be done now is to attach mirrors to each of the disks. E.g.: # zpool attach external c12t0d0p0 c14t0d0p0 At least that way when a disk fails, you still have access to your data. The other option would be to create a new pool entirely with the five-disk raidz2 you originally wanted, and then do a zfs send | zfs recv for all datasets. Regards, markm
>> zpool add -f external c12t0d0p0 >> zpool add -f external c13t0d0p0 (it wouldn''t work without -f, and I believe >> that''s because the fs was online) > > No, it had nothing to do with the pool being online. It was because a > single disk was being added to a pool with raidz2. The error message that > zpool would have displayed, without the -f, is something like: ''mismatched > replication level''. > > By using the -f the files are now striping among three vdevs: the original > raidz2, and each of the new disks.Aren''t one supposed to be able to add more disks to an existing raidz(2) pool and have the data spread all disks in the pool automagically? -- regards Claus When lenity and cruelty play for a kingdom, the gentlest gamester is the soonest winner. Shakespeare
On Wed, 21 May 2008, Claus Guttesen wrote:> Aren''t one supposed to be able to add more disks to an existing raidz(2) > pool and have the data spread all disks in the pool automagically?Alas, that is not yet possible. See Adam''s blog for details: http://blogs.sun.com/ahl/entry/expand_o_matic_raid_z Regards, markm
On Wed, May 21, 2008 at 2:54 PM, Claus Guttesen <kometen at gmail.com> wrote:>>> zpool add -f external c12t0d0p0 >>> zpool add -f external c13t0d0p0 (it wouldn''t work without -f, and I believe >>> that''s because the fs was online) >> >> No, it had nothing to do with the pool being online. It was because a >> single disk was being added to a pool with raidz2. The error message that >> zpool would have displayed, without the -f, is something like: ''mismatched >> replication level''. >> >> By using the -f the files are now striping among three vdevs: the original >> raidz2, and each of the new disks. > > Aren''t one supposed to be able to add more disks to an existing > raidz(2) pool and have the data spread all disks in the pool > automagically?In my understanding, the raidz level applies to the vdev, not the pool. vdevs can be added to the pool, then dynamic striping, distributes data between them. -- Hugh Saunders