Operating system 写入时在快照复制中发生写入请求时会发生什么情况?

Operating system 写入时在快照复制中发生写入请求时会发生什么情况?,operating-system,filesystems,snapshot,copy-on-write,Operating System,Filesystems,Snapshot,Copy On Write,我正在阅读一些操作系统概念,并偶然发现了这一点 据我所知,当你拍快照时 写时复制将记录文件系统的当前状态(元数据)。 这将导致系统稍微停止(几乎是瞬间停止) 如果文件系统收到对未修改文件的读取请求,则我们正在读取快照元数据,它会将我们重定向到原始副本 当文件系统收到写请求时会发生什么?它是否同时更新原始和复制的文件系统?这在很大程度上取决于您所说的快照类型 如果您谈论的是内置到Btrfs或ZFS等写时拷贝文件系统中的快照类型,那么快照上的写请求“只起作用”,这是文件系统工作方式的一个副作用:当写

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

据我所知,当你拍快照时

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

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


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

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

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

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