我们使用 ZFS 在 FreeNAS 9.2 上存储文件。我喜欢 ZFS 的数据完整性声明,过去在使用 ext3、XFS 和 ReiserFS 的服务器上,在没有受到不当处理(断电等)的情况下,曾随机丢失过数据。这种情况很少见,但当服务器需要重新启动、fsck 启动并发现大量错误时,后果将不堪设想。
我们还将同一 NAS 用作 XenServer 虚拟机的共享存储目标。起初,我在想,用 ZFS 支持我们的虚拟机是多么好,但现在我又怀疑完整性是否真的能防故障。
如果虚拟机的虚拟磁盘只是一个包含其自身文件系统的大文件(假设默认推荐使用 ext4),那么什么可以防止它损坏之内那个虚拟磁盘?也许网线出现故障,而 iSCSI 不知道它收到了一些要存储的错误字节(在 ZFS 中弹性存储)?我猜想虚拟机和共享存储之间还可能发生其他可能的故障,而“信任”文件系统无法检测到。唯一的解决方案是在虚拟机内也使用纠错文件系统,例如 ZFS 或 btrfs?
答案1
抱歉,没有什么可以阻止这种情况发生在您的客人身上。
保护你的环境!
- 使用不间断电源为您的服务器和网络硬件提供支持。
- 一切可以使用双电源。
- 多条存储路径(在您的情况下是 iSCSI 的 MPIO)。
- 备份。
甚至虚拟机中ZFS 文件系统可能存在问题。
Every 3.0s: zpool status -v Fri Dec 27 12:49:47 2013
pool: vol1
state: ONLINE
status: One or more devices has experienced an error resulting in data
corruption. Applications may be affected.
action: Restore the file in question if possible. Otherwise restore the
entire pool from backup.
see: http://zfsonlinux.org/msg/ZFS-8000-8A
scan: scrub in progress since Fri Dec 27 12:35:06 2013
42.1G scanned out of 46.3G at 48.9M/s, 0h1m to go
0 repaired, 90.80% done
config:
NAME STATE READ WRITE CKSUM
vol1 ONLINE 0 0 167
sdb ONLINE 0 0 448
errors: Permanent errors have been detected in the following files:
<metadata>:<0x67>
<metadata>:<0x6f>
<metadata>:<0x8e>
vol1/ppro:/isam/IM00013.ISI
vol1/ppro:/isam/IM00014.ISI
vol1/ppro:/isam/IM00015.ISI
vol1/ppro:/isam/IM00016.ISI