![日志里的数据什么时候写入磁盘?](https://linux22.com/image/1287705/%E6%97%A5%E5%BF%97%E9%87%8C%E7%9A%84%E6%95%B0%E6%8D%AE%E4%BB%80%E4%B9%88%E6%97%B6%E5%80%99%E5%86%99%E5%85%A5%E7%A3%81%E7%9B%98%EF%BC%9F.png)
(1)提到“使用日志时,文件首先被写入日志,然后日志在准备好后将文件写入磁盘。一旦成功写入磁盘,它将从日志中删除,然后被打出,操作完成。”
因此,当我创建一个文件时,它会先写入日志,然后再写入磁盘。如果我创建一个 1MB 的文件,实际上会将 2MB 的数据写入磁盘,将 1MB 的数据写入日志,然后再将另一 MB 的数据写入磁盘。这实际上可能会缩短磁盘的使用寿命。我的问题是日志中的数据何时传输到磁盘?如果不立即完成,则无法对磁盘中的数据进行后续读取。此外,当数据写入日志或磁盘时,对用户来说写入是否已完成?
另外,有提到由于日志记录,一些文件系统中的碎片整理较少。磁盘碎片整理与日志有何关系?
(1)http://www.howtogeek.com/howto/33552/htg-explains-which-linux-file-system-should-you-choose/
答案1
日志中的数据何时传输到磁盘?
取决于两个主要因素:使用的文件系统和物理存储设备。西弗斯用途写屏障。EXT3用途写入屏障(如果启用)。EXT4有默认设置障碍. 传统硬盘使用缓存。固态硬盘可能有或可能没有缓存归根结底,是操作系统、文件系统和底层硬件架构和规格的组合决定了数据何时持久保存在存储设备上。
当数据写入日志或磁盘时,对于用户来说写入是否完成?
这也取决于所使用的应用程序和操作系统。Linux 具有fsync
应用程序和文件系统使用系统调用来将缓存数据刷新到物理设备。并非所有应用程序都使用系统调用fsync
来明确将缓存数据刷新到存储。您可以随时发出sync
命令手动刷新文件系统缓冲区。
磁盘碎片整理与日志有何关系?
磁盘碎片影响表现,尤其是在处理块不连续的大文件时。有不同的技术可以缓解碎片化。例如,XFS 和其他文件系统使用刷新时分配技术来最小化碎片。
答案2
有关日志信息的一些更好的链接是:
后者解释了三种日志策略:写回、有序和数据;其中有序通常是默认的:
有序模式仅记录元数据,但在记录元数据之前写入数据。通过这种方式,可以保证恢复后数据和文件系统的一致性。
因此,除非您将日志记录策略设置为数据模式(也称为日志模式),其中元数据和数据都经过日志记录,否则您的磁盘不会因日志记录而受到太大影响。
日志本身分配在磁盘的固定区域,因此不会增加碎片。一些文件系统变体也会让它增长和缩小,因此可能会出现一些碎片。
在日志文件系统上,fsck 通常会自动运行日志,如果文件系统是干净的,则会跳过执行完整的文件系统检查。
答案3
没有证据表明磁盘寿命与活动水平相关。未使用但旋转的磁盘的使用寿命通常与频繁使用的磁盘一样长。
无论如何,实际文件数据通常不会被记录。这是没有必要的。通常只有维护文件系统完整性所必需的元数据才会被记录。