让我的文件系统以 ext4 形式挂载data=journal
。我不完全了解在这种情况下文件系统断电时会发生什么。所以我有以下问题:
- 在什么情况下断电会导致硬盘(无论SSD还是HDD)上已经存储的数据损坏(改变)?
- 什么情况下断电写入的数据会不一致?(我的意思是会写入一些内容但不等于初始数据)
- 如果在日志重放期间发生断电,会发生什么情况
fschk
?
答案1
我相信这个问题并不特定于 Linux 或 ext4,而是一般文件系统所特有的。
除非有文件正在写入磁盘,否则断电不会破坏任何数据。
这基本上意味着,当一个程序打开一个文件时,它可以通过多种不同的方式来进行。
它可以从中读取,也可以从头开始写入(覆盖所有内容)以及附加到文件(写入文件末尾)。
现在,诀窍在于一个文件有 2 个段。它们是:
- 目录,
- 数据。
在硬盘的起始处,写入一个表,其中包含文件在硬盘上的位置。在指定位置,数据以 0 和 1 的形式写入硬盘上。
读回文件显然首先要获取其位置,然后从实际位置获取 0 和 1 的数量以形成内存中的实际文件。
当硬盘写入文件时,它首先将数据写入磁盘,查看新的起点和终点(起点通常是相同的,但如果数据被分割并且使用了第二个块,则记录其起点和终点)并将它们写入分区表。
如果在写入文件时断电,索引显然与数据不一致。这会导致在尝试访问文件时出现读取错误的现象。你看到它在那里,但仍然无法访问它。
由于读取文件实际上并不会改变磁盘的内容,因此断电不会产生任何影响。