# 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 无冗余能力
# 20. ZFS 的 L2ARC,SSD 二级读缓存如何扩展 ARC,容量与内存索引成本如何取舍? A L2ARC 完全免费无内存开销 B L2ARC 只用于写缓存 C L2ARC 容量与内存无关 D L2ARC 用 SSD 扩展 ARC,但每块需内存索引,容量受内存约束需权衡 ✓ 正确答案