真实的例子
在真实的环境中,上文所述的混合存储池里,那些自己创建的文件会使用实际的物理盘来替代,同时cache和log会使用速度超快的SSD替代,这是我的一个实际的存储池:
# zpool status pool
pool: pool
state: ONLINE
scan: scrub repaired 0 in 2h23m with 0 errors on Sun Dec 2 02:23:44 2012
config:
NAME STATE READ WRITE CKSUM
pool ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
sdf ONLINE 0 0 0
sdg ONLINE 0 0 0
logs
mirror-1 ONLINE 0 0 0
ata-OCZ-REVODRIVE_OCZ-3Y41-part1 ONLINE 0 0 0
ata-OCZ-REVODRIVE_OCZ-676K-part1 ONLINE 0 0 0
cache
ata-OCZ-REVODRIVE_OCZ-3Y41-part2 ONLINE 0 0 0
ata-OCZ-REVODRIVE_OCZ-676K-part2 ONLINE 0 0 0
errors: No known data errors
大伙可以看到,我的logs和cache都是使用的SSD进行存储数据的,这四个盘使用的RAIDZ-1搭建的,(RAIDZ会在下一章节讨论),细心的人可以注意到了,我的SSD的名称不是sdx一样的形式,他们可以在/dev/disk/by-id/下找到对应的设备文件,我不选择sdx形来命名的原因是这些设备不需要保存ZFS的一些实际的数据,在pool在启动的时候创建之际,他们可能没有被加入到pool中,或者根本就丢失了,或者主板一不同的顺序分配那些设备号,这个对于主存储池来说问题不大,但是对于需要SSD的logs和cache,你可能都不能确定哪个设备才是SSD。
创建一般的逻辑卷比如LVM,EXT4,RAID,考虑到需要实施简单,那么需要一下步骤:
# mdadm -C /dev/md0 -l 0 -n 4 /dev/sde /dev/sdf /dev/sdg /dev/sdh
# pvcreate /dev/md0
# vgcreate /dev/md0 tank
# lvcreate -l 100%FREE -n videos tank
# mkfs.ext4 /dev/tank/videos
# mkdir -p /tank/videos
# mount -t ext4 /dev/tank/videos /tank/videos
在ZFS创建上,达到同样的效果,却仅仅只需要一条命令,而不是7条。
结论
这一章节应该能够为理解zpool和VDEVS打下一个好的基础,其他的都可以从这来开始,你已经了解了ZFS存储池怎样来处理大的“问题”。尽管如此,我们还是必须深入理解RAIDZ的各种等级直接的关系与差别,深入日志系统和缓存系统,以及一些池的设置,比如重复数据删除等,这些都会在不同的阶段进行介绍。如今我们已经对ZFS有了一定了了解,接下来,我们将继续深入zpool的核心部分研究,让我们开始吧。