Snapshot预留的工作原理
适用场景
- ONTAP 9
问题解答
快照保留如何工作
既然快照会消耗磁盘空间,为什么要为它们预留空间呢?为什么不让它们随意使用所需的空间呢?为了理解这个问题,请设想一下,如果文件管理器在磁盘已满时创建了快照,会发生什么情况。从活动文件系统中删除文件不会产生任何可用空间,因为活动文件系统中的所有内容都会被新创建的快照引用。文件管理器必须先删除快照,然后才能创建任何新文件。
默认情况下,快照预留空间为磁盘空间的 20%。有关如何调整快照预留空间的信息,请参阅更改快照预留空间。
考虑一下,如果在活动文件系统已满且快照预留空间仍有剩余的情况下,文件管理器创建快照,会发生什么情况。df 输出可能会显示:
Filesystem kbytes used avail capacity
/ 3000000 3000000 0 100%
/.snapshot 1000000 500000 500000 50%
如果您删除 100 MB 的文件,这些文件的数据将不再属于活动文件系统,因此这些空间将计入快照。新的 df 输出如下:
Filesystem kbytes used avail capacity
/ 3000000 2900000 100000 97%
/.snapshot 1000000 600000 400000 60%
请注意,文件管理器会将活动文件系统中的 100 MB 空间重新分配给快照预留空间。由于快照预留了空间,因此从活动文件系统中删除文件会释放空间用于新文件。
即使设置了快照预留空间,管理快照磁盘空间消耗的工作仍然至关重要。没有办法阻止快照消耗的磁盘空间超过为其预留的空间。想象一下,如果活动文件系统中的所有文件都被删除,示例文件系统中会发生什么情况。删除之前, df 的输出为:
Filesystem kbytes used avail capacity
/ 3000000 3000000 0 100%
/.snapshot 1000000 500000 500000 50%
删除文件系统中的所有数据后,df 命令会生成以下内容:
Filesystem kbytes used avail capacity
/ 3000000 2500000 500000 83%
/.snapshot 1000000 3500000 0 350%
活动文件系统中的全部 3 GB 空间都已移入快照,加上之前快照中的 500 MB,总计 3.5 GB 的快照数据。这比为快照预留的空间多 2.5 GB。由于活动文件系统无法使用该空间,因此即使该空间实际上没有任何文件,也会显示为已被活动文件系统使用。
每当快照消耗的快照预留空间超过 100% 时,系统就面临被填满的风险。在这种情况下,您只能在移除足够多的快照后才能创建文件。例如,如果在上述示例中向活动文件系统添加了 500 MB 的数据,则df
命令将生成以下信息:
Filesystem kbytes used avail capacity
/ 3000000 3000000 0 100%
/.snapshot 1000000 3500000 0 350%
一旦文件管理器创建新的快照,系统中的每个块都会被某个快照引用,因此无论您从活动文件系统中删除多少文件,都仍然没有空间添加更多文件。恢复这种情况的唯一方法是删除足够多的快照以释放更多磁盘空间。有关如何使用 snap list 命令确定要删除哪个快照的信息,请参阅显示快照统计信息。
多个相同快照的磁盘消耗
示例:某个快照包含一个 1 MB 的文件,该文件自文件管理器创建该快照以来未发生任何更改。如果从活动文件系统中删除该文件,则该快照将占用 1 MB 的磁盘空间。
该 1 MB 文件的同一版本可能被多个不同的快照引用:hourly.0、hourly.1 和 hourly.2。如果这些快照都包含自文件管理器创建这些快照以来未更改的 1 MB 文件,则即使所有三个快照都包含该文件,快照也只会占用 1 MB 的磁盘空间。
df 命令如何显示快照
要提供有关快照磁盘利用率的信息,df
文件管理器上的命令将快照视为与活动文件系统不同的分区。以下是df
命令:
toaster> df
Filesystem kbytes used avail capacity
/ 3000000 2000000 1000000 65%
/.snapshot 1000000 500000 500000 50%
注意:本例中的数字已四舍五入,以使示例更易于理解。
文件管理器有 4 GB 的磁盘空间,其中 1 GB(即 25%)预留给快照(稍后将更详细地介绍为快照预留空间的概念)。这样,剩余 3 GB 空间用于活动文件系统,而其中 2 GB 的文件系统正在使用中。需要注意的是,/.snapshot
行计数仅存在于快照中的数据。由于活动文件系统中也存在的数据无论如何都需要存储在磁盘上,因此如果文件管理器将空间分配给快照,则会产生误导。在本例中,实际使用了为快照预留的 1 GB 空间的一半。
追加信息
不适用