在我们开始之前,是的,我知道设置不是最优的,但是我们正在制定一个计划,从头开始设置所有内容。我是从一个不再在这里工作的兼职学生那里继承来的。 这是一个关于潜在解决方案的问题。

不过,我们有一个非常紧急的故障,需要在重建NAS之前修复。

设置: RAIDZ2中有2台服务器、1台Windows服务器2012R2(称为vmhost)和1台FreeBSD(称为NAS),具有8个300GB磁盘。 NAS向带ISCSI的vmhost公开2个lun。

vmhost正在运行存储在这些iscsi磁盘上的几个vm(duh)。

问题是: 有1个虚拟机在hyper-v中有2年前的快照(或检查点)(不要问为什么),这导致快照文件与实际磁盘文件(vhdx磁盘)一样大。

我们的NAS空间不足,这使得我们的虚拟机速度慢或无响应。

有一件事我不明白(但可能很容易解释),Windows报告说,该iscsi磁盘上有将近4TB的数据,而我没有安装超过300*6(+2奇偶校验)GB的hdd。 这只是ZFS部分的良好压缩吗?

Screenshot of size in windows

建议的解决方案: 将虚拟机的磁盘移动到其他磁盘,并在虚拟机配置中更正映射,然后只需在Hyper-V中按"删除检查点",让Hyper-V将快照合并到磁盘,然后将其移回iscsi磁盘。

问题是: 如果vhdx磁盘是1tb,快照文件是1tb,那么3tb磁盘是否足够作为合并磁盘? 它真的会解锁1TB吗?(vhdx的大小是固定的)或者它不会做很多事情(因为它显然没有报告正确的大小)?

更大的问题: 既然大小没有任何方向的意义,我能相信什么数字? 如果按数字计算,我总共有超过4TB的数据,占用1800GB的空间。 zfs是否如此聪明,以至于is可以看到快照中的某些数据可能与磁盘上的数据相同,而不使用额外的空间?

zfs list

zpool list

hyper-v

windows explorer

最佳回复

一般来说,zfs可以很容易地实现vm磁盘的1.2:1压缩。它也很聪明,不会在磁盘上保存任何零块。数据库压缩得更好。一般来说,如果4tb的虚拟磁盘可以很好地压缩到1.8t的物理空间,我也不会感到惊讶。

如果您使用zfs制作快照,它将是cow快照。一开始,zfs会知道数据是相同的,只需将相同的数据存储在磁盘上一次。当某个副本被写入某个块时,该块将被复制并存储在另一个位置(即copy-on-write,cow),然后其中一个副本将被更改。从现在起,即使将副本还原为具有相同的数据,一般情况下也不会合并它们。

即使不是以快照开头,也可以合并碰巧相同的任何块。你可以告诉它检查数据区域是否有一些重复的块,你猜,只存储一次。此功能称为重复数据消除,但我看不到您正在使用它,因为您在zpool列表中有重复数据消除1.00x。另外,请注意,此功能会消耗大量内存。

首先,我将引导可疑的windows虚拟机一些磁盘备份软件,这些软件通过逐扇区复制进行备份,并从该虚拟机内部对虚拟磁盘进行完整备份(即,备份windows看到的内容)。或/和备份虚拟磁盘映像。这样至少不会丢失您肯定可以访问的数据。那就照你说的做。

还有一个旁注。我在你的截图上看到一个叫做"虚拟备份"的东西。不要这样做备份。不要依赖相同的逻辑结构。如果堆栈中的某些罕见错误(zfs池上的基本磁盘上的ntfs上的虚拟磁盘上的ntfs)破坏了磁盘结构,那么您将丢失该备份以及它必须保护的数据,而且不可能从这种双重蛋糕中进行数据的鉴证恢复。通常最好将备份存储到一个最简单的、独立于主存储器的结构中,即一个单独的磁盘、一个没有高级卷管理的裸分区表、最简单的文件系统。在任何情况下都更容易访问和恢复。