As a side bar, since you cannot remove a vdev, you can really shot oneself in the foot if not careful (as I recently did). I had a X4500 system with (4) RAIDz2 vdevs in one pool. When adding a disk to the system, I forgot to add it as a spare and I was left with a stripe across the RAIDz2 sets + a single disk. I had to blow everything away...

Any information on when disk evacuation will make its way into ZFS?

Robert



On May 25, 2008, at 3:11 PM, Kyle McDonald wrote:

Orvar Korvar wrote:
> Ok, so i make one vdev out of 8 discs. And I combine all vdevs into one large zpool? Is it correct?
>
> I have 8 port SATA card. I have 4 drives into one zpool. That is one vdev, right? Now I can add 4 new drives and make them into one zpool. And now I combine both zpool into one zpool? That can not be right? I dont get vdevs. Can someone explain?
>
A 'vdev' is the basic unit that a zpool is made of.

There are several types of vdevs:

Single device type:

   This vdev is made from one storage device - Generally a Hard disk
drive, but there are other possibilities. This type of vdev has *no*
data redundancy, but ZFS will still be able to notice errors due to
checksumming every block. ZFS will also keep redundant meta-data on this one device, so meta data has the ability to survive block failures, but nothing will save data in this type of vdev from a full device failure. The size of this vdev is the size of the storage device it is made from.

Mirrored type:
    This type of vdev is made from 2 or more storage devices, All data
is written to all devices, so there is data redundancy. The more devices
in the mirror the more copies of the data, and the more full device
failures the vdev can survive. The size of this vdev is the size of the
smallest storage device in the mirror. While devices (copies) can be
added and removed from the mirror vdev, this only changes the
redundancy, and not the size. Though if the smallest storage device in
the mirror is replaced with a larger one, the size of the mirror should
grow to the size of the new smallest device in the mirror.

RAIDZ or RAIDZ1 type:
This type of vdev is made of 3 or more storage devices. This type of vdev has data redundancy, and can survive the loss of one device in the
vdev at a time. The available space on a RAIDZ vdev is the size of the
smallest storage device in the vdev times one less than the number of
devices in the vdev ( minsize*(n-1) ) because 1 devices worth of space
is used for parity information to provide the redundancy. This vdev type
cannot (currently) have it's size changes by adding or removing
(changing 'n') devices to/from it. However it can have it's available
space increased by replacing the current smallest device with a larger
device (changing 'minsize') so that some other device now becomes the
'smallest device'. NOTE: if the vdev started with identical sized
devices, you'll need to replace all of them before you'll see any
increase in the available space since the 'size of the smallest device'
will still be the same untill they are all replaced. Posts by
knowledgable people on this mailing list have suggested that there is
little benefit to having 10 or more devices in a RAIDZ vdev., and that
devices should be split into multiple vdevs to keep the number in anyone
in the single digits.

RAIDZ2 type:
   This type of vdev is made of 4 or more storage devices. It is
basically just like RAIDZ1, except it has enoug redundancy to survive 2 device failures at the same time, and the available space is the size of the smallest device times *two* less than number of devices in the vdev
( minsize*(n-2) ) becuase 2 devices worth of space are used to provide
the redundancy. Changing the space in this type of vdev is limited the
same way that a RAIDZ vdev is.

As noted above, the term 'Storage Device' in these descriptoins is
generally a hard disk drive, but it can be other things. ZFS allows you
to use files on another filesystem, slices (solaris partitions) of a
drive, fdisk partitions, Hardware RAID LUNs, iSCSI targets, USB thumb
drives, etc.


A Zpool is made up of more than one of these vdev's.  The size of a
zpool is the sum of the sizes of the vdevs it is made from. The zpool
doesn't add any redundancy itself, the vdev's are responsible for that.
Which is why, while a zpool can be made of vdev's of differing types,
it's not a good idea. The 'zpool create' command will warn you if you
try to use a mix of redundant and non-redundant vdev types in the same
pool. This is really a bad idea since you can't control what data is
placed on the redundant vdev's and which is places on the non- redundant
vdev's. If you have data that has different redundancy needs, you're
better off creating more than one zpool.

Vdev's can be added to a zpool, but not removed (yet?) Therefore to
increase the size of a of zpool, you have to either add another full
vdev to it, or replace one (or more) devices in one of the existing
vdev's so that the vdev contributes more space to the zpool.


I hope this helps.

   -Kyle



_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss


_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to