崩溃一致性
崩溃一致性
崩溃一致性
文件系统面对的另一个难题
Crash
: 内存里的一切都瞬间丢失
Crash Consistency: Move the file system from one consistent state (e.g., before the file got appended to) to another atomically (e.g., after the inode, bitmap, and new data block have been written to disk.
崩溃一致性
暗藏杀机的系统调用
复杂数据结构都涉及
multiple writes
write(fd, buf,
4096
);
// append
分配数据块: bwrite(d-bitmap)
写入数据块: bwrite(data)
更新 size, time, index, ...: bwrite(inode)
崩溃一致性
还记得存储器上的计算机系统吗?
所有的写请求都先到达缓存
计算机系统会按照他认为的 “最佳” 顺序写入
例子:HDD 的磁头运动规划
崩溃一致性
后果:乱序执行
磁盘掉电时,写入请求的顺序是没有任何保证的
存储设备本身不提供原子 multi-write
bwrite(inode), bwrite(d-bitmap), bwrite(data)
这会有怎样的后果?
人类在几十年的时间里其实都在 “裸奔”
(早期 SSD 还有更严重的问题)