Buf*_*lls 6 linux filesystems backup btrfs snapshot
通过做这个,
# btrfs subvolume snapshot /mnt/1 /mnt/1/snapshot
# tree /mnt/1
/mnt/1
??? a
??? snapshot
? ??? a
? ??? subv
??? subv
??? b
3 directories, 3 files
Run Code Online (Sandbox Code Playgroud)
我们可以在 btrfs 上从 /mnt/1 创建快照。
我的问题是:使用 snapshot 比使用 rsync 来简单备份文件系统有什么优势?
快照可以看作是复制的一种特殊情况,但与复制不同。
我不太熟悉 Btrfs 的具体细节,但以下适用于 ZFS,Btrfs 从中汲取了很多灵感。显然Btrfs 快照实际上是读/写的,这使得它们更类似于ZFS 文件系统克隆,但这并没有改变它们与文件副本的关系。
快照是文件系统状态的只读、时间点副本。
这是有效的,因为 Btrfs 和 ZFS 都是所谓的写时复制文件系统。每当更改数据块时,更改的数据都会写入磁盘上与原始副本不同的位置。这样做的主要好处是它大大提高了可靠性:因为需要覆盖的数据很少,导致数据丢失的问题的可能性大大降低。但是,还有其他优点。其中一项优势是您可以高效地进行文件系统级快照。一个主要的缺点是,当您的存储填满时,它往往会大大增加存储碎片,因为块分配器很难在任何地方找到物理存储副本。事实上,建议将 ZFS 池使用率保持在 80% 以下,大概不是因为这个确切原因。
快照基本上告诉文件系统代码“仍然需要这些块”。因此,它们不会被回收并可能被新数据覆盖。但是,它们仍然引用相同的旧数据块。
现在,这与简单地使用 rsync、cp、cat 或其他方式制作副本有何不同?这是不同的,因为在数据实际更改之前,不会制作数据的额外物理副本。
这就像立体声上的硬链接;访问不同名称的文件时,将使用数据的相同物理磁盘副本。不同之处在于,对于硬链接,对同名文件的更改会传播到所有其他副本,因为它们确实引用了相同的数据块。通过写时复制和快照,更改的块仅显示在更改的位置。(对于只读快照,这意味着在文件的“当前”版本中。)您还只需要重写实际已更改的块;剩下的块就留在原地。例如,对于包含 VM 磁盘映像的快照文件等操作,这可能会对存储在磁盘上的数据量产生巨大影响。
所以,回顾一下:
| 归档时间: |
|
| 查看次数: |
15556 次 |
| 最近记录: |