statx() 子秒精度时间戳与 APFS(Apple File System)

共 20 题
#

1. statx() 的 STATX_ATTR(FS_NODUMP_FL、FS_IMMUTABLE_FL 等)flags 字段?

A stx_attributes 只包含权限位,与 inode flags 无关
B stx_attributes 中每一位都保证有效,可无条件使用
C 文件属性标志属于传统 ioctl 专属,statx 无法提供
D 必须结合 stx_attributes_mask 判断哪些位真实有效,STATX_ATTR_IMMUTABLE 对应不可修改属性 ✓ 正确答案
#

2. APFS 的崩溃一致性,为何不用传统日志,checkpoint 与 COW 元数据树如何保证断电后状态一致?

A APFS 依赖传统 journal 重放日志来恢复一致性
B APFS 通过 COW 元数据树与 checkpoint 原子更新,断电后从最新有效 checkpoint 恢复 ✓ 正确答案
C APFS 崩溃后必须运行 fsck 深度扫描才能恢复
D APFS 的元数据原地覆盖,断电可能损坏 inode
#

3. statx() 与 statx_timestamp 的 nanoseconds 字段在 NFSv4.2 协议的兼容?

A NFSv4.2 不支持纳秒时间戳,statx 的 nsec 恒为 0
B NFSv4.2 以 nsec 精度传输时间戳,但底层文件系统精度可能更低,nsec 可能为 0 ✓ 正确答案
C statx 的纳秒字段在 NFS 上会被截断为秒
D NFSv4.2 时间戳与本地文件系统完全一致,无精度差异
#

4. APFS 的 clone(写时拷贝文件)API 在 macOS(10.12+ 公开)的工程价值?

A clonefile 是传统硬链接,修改共享 inode
B clonefile 必须复制全部数据,只是命名更友好
C clonefile 通过 COW 共享数据块,创建 O(1) 且零拷贝,写入时才分裂 ✓ 正确答案
D clonefile 只能用于空文件
#

5. Linux 4.11+ statx() 相对 stat() 在纳秒级时间戳(stx_atime, stx_mtime, stx_ctime, stx_btime)的工程价值?

A statx 与 stat 时间戳完全相同,无差别
B statx 提供纳秒精度并新增 stx_btime 创建时间,更利于精确变更检测 ✓ 正确答案
C statx 反而把时间戳降级为秒级
D statx 不支持 btime
#

6. statx 的 mask 参数如何让调用方只请求需要的字段(如 STATX_BASIC_STATS),相比 stat 每次全量返回有何性能意义?

A mask 让调用方只请求需要的字段,可减少内核与网络文件系统的额外属性查询 ✓ 正确答案
B mask 只影响返回格式,不影响内核工作
C mask 必须请求全部字段,否则返回错误
D stat 与 statx 的 mask 语义相同
#

7. statx() 支持 STATX_BTIME(创建时间)的 backup time 与 crtime 在 ext4 的协同?

A btime 只在 NTFS 上有效
B btime 是独立生成的随机值,与 crtime 无关
C ext4 不支持 crtime,btime 恒为 0
D ext4 的 i_crtime 是 statx stx_btime 的数据来源,备份工具利用 btime 做更可靠的变更追踪 ✓ 正确答案
#

8. statx() 在 NFS / SMB / FUSE / 9P 与传统 stat() 兼容的工程边界?

A 所有文件系统都完整支持 statx 的全部字段
B 内核会为未实现 statx 的文件系统提供 fallback,调用方须通过 stx_mask 校验字段是否可用 ✓ 正确答案
C statx 在 FUSE 上完全不可用
D statx 的字段缺失时直接返回错误
#

9. APFS snapshot 与 Time Machine 备份的工程价值?

A 快照创建必须复制全部数据,成本高
B Time Machine 只能做全量备份
C APFS 快照创建后无法回滚
D APFS 快照基于 COW 即时创建,Time Machine 结合本地快照与增量同步实现高效备份与回滚 ✓ 正确答案
#

10. APFS Space Sharing 在同一物理卷的多卷(Container)共享空间的工程价值?

A 每个 Volume 独立固定分区,相互不能借用空间
B 各卷之间不能共享空间
C Space Sharing 只用于临时文件
D Container 内多个 Volume 共享空间,可设 reserve/limit 约束,容量管理更灵活 ✓ 正确答案
#

11. statx 与 stat 的差异,子秒精度时间戳与扩展属性如何?

A statx 提供纳秒时间戳、btime 与 stx_attributes 扩展属性,且通过 mask 按需请求 ✓ 正确答案
B stat 比 statx 精度更高
C 两者完全等价
D statx 无法提供文件属性
#

12. APFS 的克隆与快照,COW 与空间共享如何实现?

A 克隆与快照都基于 COW,前者针对文件副本,后者针对卷级时间点,均通过共享数据块节省空间 ✓ 正确答案
B 克隆会复制全部数据
C 快照会复制全部数据
D 克隆与快照不共享数据块
#

13. 文件系统时间戳的 2038 问题,为什么 32 位 time_t 会在 2038 年溢出,ext4/APFS 的纳秒时间戳如何规避?

A 64 位时间戳也会在 2038 年溢出
B 2038 问题只影响 APFS,不影响 ext4
C 纳秒字段与 2038 问题无关
D 32 位有符号 time_t 在 2038 年溢出,ext4/APFS 用 64 位时间戳加纳秒规避 ✓ 正确答案
#

14. macOS 上 fsync 与 F_FULLFSYNC 的差异,为何 fsync 不保证落盘,APFS 下何时必须用 F_FULLFSYNC?

A 两者完全等价
B fsync 比 F_FULLFSYNC 更严格
C fsync 不保证物理落盘,F_FULLFSYNC 强制刷到介质,严格持久性场景必须用 F_FULLFSYNC ✓ 正确答案
D F_FULLFSYNC 只用于网络文件系统
#

15. statx 的 stx_mask 返回位如何指示字段有效性(如 STATX_BTIME、STATX_MNT_ID 可能缺失),迁移代码为何必须校验?

A stx_mask 无实际作用
B 未请求的字段也会被填充
C stx_mask 恒等于请求的 mask
D 调用方必须校验 stx_mask 中请求字段是否置位,否则可能误用缺失(常为 0)的字段 ✓ 正确答案
#

16. APFS encryption(per-volume)与 macOS FileVault 的关系?

A FileVault 基于 APFS 的 per-volume 加密实现,加密发生在 APFS 层对上层透明 ✓ 正确答案
B 两者无关
C FileVault 是独立于 APFS 的应用层加密
D APFS 不支持加密
#

17. APFS 相对 HFS+ 的 crash consistency 改进?

A APFS 改用 COW 元数据树与 checkpoint,恢复更快更可靠,取代 HFS+ 的日志机制 ✓ 正确答案
B APFS 从不用 checkpoint
C APFS 与 HFS+ 完全一致
D APFS 恢复比 HFS+ 更慢
#

18. APFS 的快照与克隆,写时复制(COW)的机制如何?

A COW 创建时立即复制全部数据
B COW 让快照/克隆共享数据块,创建 O(1) 零成本,写入时才分裂 ✓ 正确答案
C COW 与数据块共享无关
D COW 只用于克隆不用于快照
#

19. 文件系统时间戳,纳秒精度与 statx 的扩展如何?

A 纳秒时间戳只是统计口径,无实际作用
B statx 不支持纳秒
C 现代文件系统存储纳秒时间戳,statx 规范暴露纳秒字段并新增 btime,利于精确变更检测 ✓ 正确答案
D 纳秒时间戳只有在 64 位系统才有意义
#

20. APFS 容器内卷的空间预留(reserve)与上限(limit),如何限制单卷占用,超出时行为如何?

A reserve 保证最小可用空间,limit 限制最大占用,超限写入返回 ENOSPC ✓ 正确答案
B 两者都只影响性能不影响容量
C APFS 卷无法共享空间
D reserve 是上限,limit 是下限