为了评估数据稳定和安全性,需要未雨绸缪,理解zfs文件系统写入方式和镜像区别,特作一下测试:
一、创建一个默认tank pool
careate create –m /mnt/testtank testtank ad0 ad3
-m /mnt/testtank是手动指定挂载点,默认挂载在/下。
可以看出默认是以条带化(raid 0)方式存储,拷贝一个文件进去,看信息如何:
可以看出,信息是平均分为2部分,分别储存在2个设备中。
二、模拟一个硬盘损坏和恢复,看数据稳定性如何
关机,拆掉ad3,开机,查看硬盘信息
ad3已经丢失,系统内数据也无法访问,证实了默认是以raid0方式存储的,一旦丢失其中一个硬盘,数据将全部丢失,这种存储方式风险最大。现在关机,将硬盘装上,再次开机。
数据自动回复正常。
三、为硬盘增加mirror盘,并测试丢失时,数据情况
zpool attach testtank ad1 da0
关机,拆除da0,开机
可以看出da0已经损坏,尝试访问一下数据,数据完全正常,mirror发挥了他的作用。
其他类似的测试具体过程就不再写了,结论就是zfs系统默认是以条带化存储,当一个pool存在多个设备时,多个设备已条带化方式读写,如上图,如果ad1或者da0任意一个磁盘损坏,那么数据将不会丢失,但如果ad3丢失,整个pool数据将全部丢失。raidz1和raidz2类似。所以使用zfs文件系统时,如果pool内混合多种类型磁盘,要注意pool内是否有足够冗余,是否有独立设备,否则哪怕你pool存在n个raidz2,只要有一个独立设备,而且这个设备损坏的话,数据一样灰飞烟灭
同时请注意:zfs的无限扩容是很好的选择,但他只能扩,不能收,一旦磁盘添加进去,就不能再取出。