在运行的 Linux 机器上,文件系统中的缓存内容应该写入磁盘。
因此,似乎使用任一命令都可以在发出命令时实现数据的“磁盘上稳定”表示。
显然fsfreeze
,被描述为“另外”暂停进一步的“新访问”。
现在这个问题寻求信息,如果为了获得一致的磁盘映像(即用于备份复制磁盘文件系统数据),使用sync和fsfreeze之间是否有任何区别。
我认为要回答这个问题,可能有必要考虑所使用的文件系统,因为不同的文件系统有不同的方式来确保(或不)将中间状态原子提交到磁盘。
个人测试表明,文件fsfreeze
系统btrfs
确实总是以无响应的控制台结束,需要硬重置。另一方面,同步并没有(无意讽刺)冻结系统。
答案1
因此,似乎使用任一命令都可以在发出命令时实现数据的“磁盘上稳定”表示。
是的,但就sync
的情况而言,“磁盘上稳定”状态可能非常短暂 -sync
发出后所做的任何更改都可能使文件系统再次不一致。
fsfreeze
用途FIFREEZE
没有超时。正如您所发现的,这可能会导致系统冻结,因为受影响的文件系统上无法进行写入操作,并且写入操作会在多种情况下发出(例如写你的 shell 的历史)。有紧急解冻组合键, SysRqj, 您可以使用(除非它已被禁用)。
要点FIFREEZE
是,当它生效时,您可以读取冻结文件系统底层的存储并构建一致的存储映像 -IE其中数据和元数据完全同步。
只有sync
,并且在完成时进行的更改sync
将在磁盘上,但复制底层存储不一定会产生一致的图像,因为后续写入可能已经开始命中存储。复制这样的映像应该允许您检索您关心的所有数据,并且在许多情况下,任何部分写入的更改都不会阻止文件系统恢复;但您不能保证映像无需修复即可按原样使用,即使在已记录、日记或写时复制文件系统上也是如此。