|
|
|
|
|
|
|
|
|
|
|
|
注意,尽管 fsync() 将所有数据从宿主冲刷到驱动器(即「永久存储设备」),该驱动器自身可能在相当长的时间内都并不会将数据在物理意义上写入盘片,并且可能不依先后顺序写入。具体而言,如果驱动器断电、操作系统崩溃,应用程序的数据可能只被部分写入,或完全没有写入。磁盘还可能重新排序数据,导致后来的写入还存在,而早先的写入则丢失。
这并不只是理论上的罕见场景,而是很容易在现实工作的负荷或驱动器断电故障中复现。
对于要求保证更高数据完整性的应用程序,Mac OS X 提供了 F_FULLFSYNC 这一 fcntl 命令。F_FULLFSYNC 要求驱动器冲刷所有缓冲区数据,写入永久存储。
[ 节选翻译;粗体均为笔者所加 ]
下篇:https://sspai.com/prime/story/mac-ssd-cheating-3