1

我正在阅读一些操作系统概念并偶然发现了这一点。

据我了解,当你拍摄快照时,

写入时复制将记录文件系统的当前状态(元数据)。这将导致系统稍微停止(几乎是瞬时的)。

如果文件系统收到对未修改文件的读取请求,我们正在读取快照元数据并将我们重定向到原始副本。

当文件系统收到写请求时会发生什么?它会更新原始文件系统和复制的文件系统吗?

4

1 回答 1

0

这在很大程度上取决于您所谈论的快照类型。

如果您谈论的是写入时复制文件系统(如 Btrfs 或 ZFS)中内置的快照类型,那么在快照上写入请求“正常工作”作为文件系统工作方式的副作用:当写入新数据时,它们被写入新位置,并写入新的元数据以反映这一点。但是新数据和元数据都只写入一个快照,而不是另一个。写入新数据和新元数据后,写入的快照会释放旧副本——但另一个快照仍在使用该副本,因此它们实际上并没有被释放。最终结果是这些数据不再在两个快照之间共享。我使用术语“快照”和“其他快照”是因为在这种系统中,一旦拍摄了快照,快照和原始快照就处于同等地位。

如果您谈论的是 LVM 快照之类的东西,那么文件系统实际上完全不知道发生了什么。就它而言,它正在写入常规块设备。在这种情况下,LVM 必须管理哪些底层块仍然在快照和快照的源之间共享,哪些已经分叉。快照存储已分叉的块的副本(因为它们被写入快照或原始设备中)。

于 2013-06-12T20:51:32.840 回答