Linux写文件断电保存,硬盘写到一半时断电,文件系统里会发生什么?

原标题:硬盘写到一半时断电,文件系统里会发生什么?

转载自 Linux爱好者

来源:知乎

https://www.zhihu.com/question/55711728

【伯乐在线转注:】本文源自知乎问答帖:《硬盘写到一半断电时文件系统发生了什么?》。原题主的问题补充:

断电时文件系统发生了什么?硬盘又发生了什么?下一次开机时写到一半的文件在系统层面还在吗?在底层还在吗?

更进一步的, 文件系统如何保证事务性, 会不会存在某种极端情况导致例如最后几个bit还没写完, 文件系统却认为它成功了的情况?

回答不限任何文件系统,谢谢!

下面是「北极」的回复分享,伯乐在线已获授权:

断电的一瞬间,很多事情是无法确定的:

1.你无法确定你试图向设备驱动发送的写指令是否成功,驱动程序本身一般都有缓存;

2. 即使写指令正常返回,你也无法确定设备实际上是否写成功,因为设备本身可能也有缓存。目前没有设备能保证写指令返回的情况下,所有数据一定成功的保存在介质上(但部分厂商能保证少量数据一定能成功写入),对存储设备的flush操作并非绝对可靠;

3. 哪些成功哪些失败可能是乱序的,换句话说,如果先发送写请求A,再发送写请求B,并且都成功返回,掉电时请求A可能丢失,但B成功(NCQ功能);

4. 机械式磁盘可能会出现丢失半截数据的情况(比如,一个512字节扇区只写入了100字节,也就是题主说的bit级错误),但

你可能感兴趣的:(Linux写文件断电保存)