Copy-on-write and Redirect-on-write
写入时复制和写入时重定向
快照是什么意思?
在计算机系统中,快照是系统在特定时间点的状态。这个术语是为了类比摄影而创造的。它可以指系统状态的实际副本或某些系统提供的功能。
快照类型:-
-- 写入快照时复制
-- 写入时重定向 快照
写入快照时复制
考虑一个写时复制系统,它在用新信息覆盖任何块之前复制它们(即写时复制)。换句话说,如果要修改受保护实体中的块,系统会在用新信息覆盖该块之前将该块复制到单独的快照区域。此方法每次写入需要 3 次 I/O 操作:一次读取和两次写入。在覆盖块之前,必须读取其先前的值,然后将其写入不同的位置,然后写入新信息。如果一个进程尝试在将来的某个时刻读取快照,它会通过快照系统来访问它,该系统知道自拍摄快照以来哪些块发生了更改。如果某个块未被修改,快照系统将从原始受保护实体中读取该块。如果它已被修改,快照系统知道该块的先前版本存储在哪里,并将从那里读取它。每个块的决策过程也会带来一些计算开销。
写入时重定向 快照
写入重定向系统使用指针来表示所有受保护的实体。如果一个块需要修改,存储系统仅将该块的指针重定向到另一个块并将数据写入那里(即,它在写入时重定向)。快照系统知道组成给定快照的所有块在哪里;换句话说,它有一个指针列表,并且知道这些指针所引用的块的位置。如果一个进程尝试访问给定的快照,它只需使用这些指针来访问它们最初所在的块。其中一些块已被替换并且现在由其他指针表示的事实与快照过程无关。在写重定向系统中读取快照的计算开销为零。写重定向系统使用指针来表示所有受保护的实体。如果一个块需要修改,存储系统仅将该块的指针重定向到另一个块并将数据写入那里(即,它在写入时重定向)。快照系统知道组成给定快照的所有块在哪里;换句话说,它有一个指针列表,并且知道这些指针所引用的块的位置。如果一个进程尝试访问给定的快照,它只需使用这些指针来访问它们最初所在的块。其中一些块已被替换并且现在由其他指针表示的事实与快照过程无关。在写入重定向系统中读取快照的计算开销为零。
写入时重定向系统在修改受保护块时使用 I/O 操作数量的 1/3,并且读取快照时不使用额外的计算开销。因此,写时复制系统会对受保护实体的性能产生很大影响。创建的快照越多、存储的时间越长,对受保护实体的性能影响就越大。这就是为什么写时复制快照通常仅用作备份的临时源;它们被创建、备份,然后立即删除。然而,写入时重定向快照通常每小时甚至每隔几分钟创建一次,并存储数天甚至数月,仅因空间原因而被删除。(快照存储的时间越长,需要更多的额外空间来保存更改块的先前版本。)
摘抄自网络,便于检索查找。