如果sync=disabled
设置了,我理解 ZIL 不会写入磁盘,而是将更改直接写入磁盘。除了从应用程序的角度来看可能由于数据不一致而导致的数据不一致之外,特别是在网络情况下,在存储恢复在线后,据称已提交的数据并未写入,因此不会写入,还有其他数据损坏风险吗?更具体地说,如果我有之前拍摄的数据快照,那么这些数据是否有损坏的风险?
例如,假设我有一些自助服务终端机器运行在 iSCSI 卷上,我每天都会将其恢复到快照。进一步假设我已禁用同步,并且服务器在写入过程中崩溃(可能正在更新某些文件系统结构)。如果我运行操作,是否可以保证zfs rollback
我回滚到的快照仍然一致,并且同一池中的任何其他卷(例如,sync=always
)不会被破坏?
如果重要的话,我正在运行 Solaris 11.3 或 11.4。
答案1
简而言之,即使您已禁用 ZIL,快照也不会因未来的写入而损坏。此外,您对一个数据集所做的任何操作都不会影响任何其他数据集(除了从父数据集继承到子数据集的属性,但这不会影响数据本身)。如果发生宇宙射线或导致数据被覆盖的重大错误(我从未听说过),旧数据可能会被损坏,但这两种情况都可以通过校验和失败检测到。
当然,如果在拍摄快照时禁用同步,则可能会出现应用程序级损坏(与崩溃并重新启动时的情况相同)。但这与拍摄快照后的写入无关。