我在FreeNAS 8.0.4中使用ZFS,并使用iSCSI为Vmware ESXi 5.0提供LUN。
我发布在http://forums.freenas.org/showthread.php?10990-Memory-utilization-and-performance-problem/page4 ,但我相信这里的人可能在ZFS上有更多的专业知识。
FreeNAS没有iSCSI取消映射。 我已经在ZFS iSCSI之间创build/移动/删除虚拟机。 一段时间后,zpool list报告使用了95%的容量。 但是,Vmware显示VMFS只能使用50%的容量。
AFAIK在创build虚拟机时,zvol分配了磁盘空间。 但是,当我们移动/删除虚拟机时,zvol没有更新/不知道更新空闲容量。
[root@data1] ~# zpool list NAME SIZE USED AVAIL CAP HEALTH ALTROOT data1 2.25T 2.07T 185G 95% ONLINE /mnt
现在,我相信由于在zpool list中报告错误的空闲容量,性能受到很大影响。
我应该怎么做,让ZFS知道真正的自由能力。
万分感谢。
zpool状态-v
pool: data1 state: ONLINE scrub: scrub stopped after 10h31m with 0 errors on Wed Feb 6 13:32:53 2013 config: NAME STATE READ WRITE CKSUM data1 ONLINE 0 0 0 raidz1 ONLINE 0 0 0 ada0p2 ONLINE 0 0 0 ada1p2 ONLINE 0 0 0 ada2p2 ONLINE 0 0 0 ada3p2 ONLINE 0 0 0 ada4p2 ONLINE 0 0 0 spares ada5p2 AVAIL errors: No known data errors
zpool列表
NAME SIZE USED AVAIL CAP HEALTH ALTROOT data1 2.25T 2.08T 179G 92% ONLINE /mnt
你让你的zvol太大,你的ZFS实现没有能力去释放释放块!
防止这种情况发生的最好方法是将您提供给VMware的LUN设置不足。 由于我们知道磁盘接近满时ZFS性能会降低,因此最好限制zvol的最大大小。
例如,如果您有200GB zpool存储,请确保您提供给VMware的zvolsless于150GB。
ZFS并不知道在zvol块设备上使用的文件系统,因此VMFS卷上的所有信息都知道它具有50%的可用空间。 ZFS无法知道这一点。 无需重新格式化/重新创build卷或展开zvol,您将无法回收空间。
在你的情况下更好的解决scheme将使用NFS而不是iSCSI来达到此目的。 如果您没有足够小心地监视VM磁盘利用率和增长率,以防止iSCSI发生这种情况,NFS可能更有意义。 我用我的ZFS + VMware设置使用NFS。
另请参阅: 在ZFS中使用精简configuration时,如何确保不会耗尽物理磁盘空间?
和
zVol报告的已用空间不正确。
你已经正确地确定了原因 – 甚至在SCSI UNMAP的情况下,它也可能还会发生,因为现在TRIM和UNMAP的支持matrix很糟糕。 但是,有一个解决scheme没有人涉及。
首先 – 启用压缩(compress = on或compress = lzjb,我不是compress = gzip的粉丝,特别是VM),没有这个就没有这个工作。
如果您正在处理提供给虚拟机(或虚拟机的操作系统驱动器)的驱动器,然后使用文件系统进行格式化,则可以使用Linux的“zerofree”或Windows的“sdelete”写零到所有的空闲块。 由于ZFS在压缩文件系统上处理0的块的方式很奇怪,这将释放 zvol 上的空间 ,使zvol更加符合实际使用的容量。
如果你已经完成了上述工作,那么即使在所有位于LUN之上的虚拟机上的所有驱动器上运行此操作之后(即使在LUN上运行此操作),也不会有效(不太可能),或者仍然存在非常大的差异, – 注意我没有testing过这个,所以没有任何承诺: http : //kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2014849