ZFS 的 COW 与 snapshot 与 btrfs send/receive

共 20 题
#

1. ZFS ARC(Adaptive Replacement Cache)相对 LRU 在命中率与内存的工程价值?

A ARC 只缓存顺序读
B ARC 与 LRU 完全相同
C ARC 用 MRU/MFU 与 ghost 列表自适应分配缓存,避免 LRU 被扫描流量污染,显著提升命中率 ✓ 正确答案
D ARC 不占用内存
#

2. ZIL 与 SLOG,ZFS 如何用 intent log 保证同步写与 fsync 语义,单独 SLOG 设备为何能显著降低同步写延迟?

A 同步写先落 ZIL 日志,SLOG 作为独立低延迟设备承载日志,降低 fsync 延迟 ✓ 正确答案
B ZIL 是写缓存,掉电后数据丢失
C 同步写必须等数据写入主池才返回
D SLOG 只能存放读缓存
#

3. ZFS send/receive 在 ZFS 全量与增量传输的工程应用?

A send/receive 只能全量传输
B 增量 send 基于 COW 快照差异只传变化块,用于高效备份与灾备同步 ✓ 正确答案
C 增量 send 需要应用层 diff
D send/receive 不支持跨系统
#

4. btrfs send 的 stream 版本演进在 Linux kernel 4.x to 6.x 的协议演进?

A send stream 版本从不变化
B 版本只影响性能不影响指令
C 新版本仅降低精度
D 从 4.x 到 6.x 逐步增加新指令(如克隆、COW 复用、子卷支持),接收端需匹配版本 ✓ 正确答案
#

5. ZFS RAID-Z 与传统 RAID5 的差异,为什么 RAID-Z 没有写洞(write hole),条带与校验更新策略如何设计?

A RAID-Z 与 RAID5 完全一样
B RAID-Z 通过 COW 全条带写入避免读改写,从设计上消除写洞 ✓ 正确答案
C RAID-Z 反而更容易产生写洞
D RAID-Z 不支持校验
#

6. ZFS 的 COW(Copy-on-Write)snapshot 在 zfs snapshot vs zfs clone 的工程价值?

A snapshot 可写,clone 只读
B clone 会复制全部数据
C 两者完全相同
D snapshot 只读用于回滚/备份,clone 可写用于低成本派生,二者都基于 COW 共享块 ✓ 正确答案
#

7. ZFS 的 Merkle tree / checksum 在 silent corruption 检测的工程价值?

A 校验和只用于性能
B ZFS 不做校验,无法检测静默损坏
C ZFS 对每块计算校验和并形成树状校验结构,读取时端到端校验,检测并配合冗余自愈损坏 ✓ 正确答案
D Merkle tree 与数据完整性无关
#

8. ZFS 的"transaction group"(txg)在写入与带宽的工程价值?

A txg 把一段时间的写入合并成一个事务组批量提交,提高写入带宽并保证一致性 ✓ 正确答案
B txg 只用于读
C 每次写都单独提交
D txg 与带宽无关
#

9. ZFS 的 COW 与 snapshot 如何实现零拷贝快照与回滚,快照空间占用为何随后续写入增长,删除快照为何可能瞬时慢?

A 快照创建会复制全部数据
B 快照空间永不增长
C 快照创建零拷贝,空间随后续写入增长,删除时需清理共享块引用可能瞬时慢 ✓ 正确答案
D 删除快照总是瞬间完成
#

10. ZFS dedup 在内存与 zfs_special 类的工程边界?

A dedup 完全免费,无内存开销
B special 类与 dedup 无关
C dedup 依赖 DDT 需大量内存,special 类设备可承载 DDT 等小块以缓解内存与主池压力 ✓ 正确答案
D dedup 只用于读
#

11. ZFS 的 COW,写时复制如何保证一致性快照?

A COW 原地覆盖数据
B 快照需要冻结所有写入才能一致
C COW 写新块后原子更新指针,创建快照只需记录元数据树根,捕获完全一致的状态 ✓ 正确答案
D 快照与数据一致性无关
#

12. 大量快照累积如何影响写性能与删除性能,COW 链式快照的引用计数与删除开销如何?

A 快照只占极小空间,无删除开销
B 大量快照保留旧块占用空间,删除需清理共享块引用计数可能瞬时慢 ✓ 正确答案
C 快照不影响写性能
D 删除快照总是 O(1)
#

13. reflink/COW 复制,btrfs 的 cp --reflink 为何零拷贝,与快照共享 extent 的关系及写入时的分裂如何?

A reflink 会复制全部数据,成本高
B reflink 与快照无关
C reflink 只支持目录
D reflink 让新文件共享原文件 extent 零拷贝,写入时 COW 分裂被共享的 extent ✓ 正确答案
#

14. btrfs 的碎片与 balance,长期随机写为何碎片化,balance/defrag 如何整理数据与元数据,代价是什么?

A btrfs 从不碎片化
B balance 会改变文件内容
C defrag 只整理元数据
D COW 导致碎片化,balance 重写并归拢数据块,代价是大量 IO 与空间余量 ✓ 正确答案
#

15. btrfs send/receive 相对 ZFS send/receive 在流编码(streamed primitives)的工程差异?

A 两者完全相同
B btrfs 用可移植的流式指令集,ZFS 用接近原生块级的流,前者更灵活后者更贴合 ZFS ✓ 正确答案
C btrfs send 只能用于 ZFS
D ZFS send 不能跨系统
#

16. btrfs subvolume 与 snapshot 在 btrfs receive 的工程价值?

A subvolume 与 snapshot 无关
B subvolume 是管理单元,receive 把 send 流恢复为 subvolume,支持增量备份与回滚 ✓ 正确答案
C receive 无法恢复 subvolume
D 增量 receive 需要全量基线
#

17. ZFS 的存储池与 vdev,RAID-Z 与数据校验如何配合?

A ZFS 无校验机制
B vdev 与冗余无关
C pool 由 vdev 组成,RAID-Z 提供冗余并配合块校验和实现检测与自愈 ✓ 正确答案
D pool 只能容纳一个磁盘
#

18. ZFS 的校验与修复,校验和与自愈(scrub)如何工作?

A ZFS 只能检测无法修复
B scrub 与校验无关
C 校验和检测损坏,scrub 主动巡检,配合冗余数据重建实现自愈 ✓ 正确答案
D ZFS 无冗余能力
#

19. ZFS 的 ARC 缓存与预读?

A ARC 缓存高频数据块,预读主动提前读顺序数据,共同提升读性能 ✓ 正确答案
B 预读会降低吞吐
C ARC 只用于写
D ARC 与命中率无关
#

20. ZFS 的 L2ARC,SSD 二级读缓存如何扩展 ARC,容量与内存索引成本如何取舍?

A L2ARC 完全免费无内存开销
B L2ARC 只用于写缓存
C L2ARC 容量与内存无关
D L2ARC 用 SSD 扩展 ARC,但每块需内存索引,容量受内存约束需权衡 ✓ 正确答案