Striping over raidz1

My intention is to purchase four 3 TB disks with 4k sectors, create a raidz1 pool and copy all my current data to it. Once done I intend to add my four old 2 TB disks, also with 4k sectors, as another raidz1 to the same data set.

# zpool create tank raidz newdisk1 newdisk2 newdisk3 newdisk4

# zpool add tank raidz olddisk1 olddisk2 olddisk3 olddisk4

I have three questions about this.
  1. Will this work at all?
  2. Will I need to use gnop to make sure the data is aligned to 4k boundaries?
  3. Will 8 GB of RAM be enough, or should I spring for 16? I will not be using deduplication.
 
  1. It would work, but I would recommend to set up the pool, *then* move data to it in order to utilize the increased read and write performance from striping two RaidZ vdevs.
  2. I would also recommend you force 4k block size on drives, regardless of their sector size being 512B or 4k; Setting 4k will help reduce potential compatibility issues in the future. You can take a look [thread=32947]here[/thread] for an example on how to do that. :)
  3. Your data capacity would be (4-1)*3TB + (4-1)*2TB = 15TB data. 8GB should be enough to run this thing, and notable performance increment from more RAM would mostly depend on workload. What do you use this thing for?
 
2. The blocksize property known as the ashift property is per vdev so you'll have to remember to apply the gnop(8) trick when creating the pool and also when you add the second vdev.
 
@Traxton

Why not just:
# gnop create -S 4096 newdisk1
# zpool add tank raidz newdisk1.nop newdisk2 newdisk3 newdisk4

Right away? This is the way you usually go about it; just add more disks. Aftwards you can zfs send/recv your datasets to copies, delete the originals and rename the copies back to the original names, to evenly spread the data across both vdevs, but that's the advanced course, totally optional and only if you're paranoid about performance.

/Sebulon
 
Back
Top