AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 423587
Accepted
Storm
Storm
Asked: 2018-02-13 04:26:04 +0800 CST2018-02-13 04:26:04 +0800 CST 2018-02-13 04:26:04 +0800 CST

BtrFS 快照会杀死我的 SSD 吗?

  • 772

据我所知,BtrFS 快照实际上并不复制数据。我想,每次更改快照数据时都会执行实际复制。

那么,启用快照的 SSD 上的 BtrFS 分区是否会使 SSD 内存的磨损加倍?一次写入新数据,第二次写入将差异记录到快照。

我已经使用带有快照的/BtrFS 作为分区的文件系统已经有相当长的一段时间了,而且有好几次它确实对我有帮助。但现在我要在 SSD 上安装系统。

btrfs ssd
  • 1 1 个回答
  • 2450 Views

1 个回答

  • Voted
  1. Best Answer
    Austin Hemmelgarn
    2018-02-13T12:12:22+08:002018-02-13T12:12:22+08:00

    TL;博士

    不,它不会减少 SSD 的寿命,就像使用没有快照的 BTRFS 一样。

    解释

    有几种不同的方法可以在软件中实现快照:

    1. 您存储所有被快照的数据的精确副本。这不是很有效(在空间和时间方面),但它是存储数据真实历史副本的唯一选项,并且实现起来非常简单。由于效率问题,它没有广泛用于快照,但这本质上是卷的完整备份。

    2. 您存储数据的当前状态和历史状态之间差异的副本。此方法在读取数据时存在性能问题,因为系统必须在请求的时间计算请求数据的状态。这可以通过以下两种方式之一进行分层:

      一个。每个快照存储数据的当前状态与拍摄快照时数据的状态之间的差异。这是节省空间的,但不节省时间(因为写出更改的时间与快照数量成线性关系)。快照的读取性能很差,但对于当前数据来说还不错。这种方法并没有被广泛使用,因为它实现起来有些棘手,而且写入性能非常糟糕,你还不如只存储一个完整的副本。

      湾。拍摄的第一个快照存档了当时数据的状态,随后的快照仅存储自该副本以来的差异,当前状态是一种特殊情况,会随着用户更新而改变。如果您只修改现有数据而不添加或删除任何数据,这只会节省空间,但比 2a 更节省时间。大多数快照和当前数据的读取性能都很差,但对于第一个快照来说还不错。这就是增量备份的工作方式,并且在一个特殊的安排中,每个差异都与以前的版本是版本控制软件所做的,但它并没有被广泛用于快照,因为下一个选项几乎在所有方面都更好。

    3. 快照是通过写时复制 (COW) 语义实现的。这是最节省空间的选项,并且平均比方法 2 的两种变体更节省时间。使用 COW 快照,任何给定的数据都存储一次,并且包含该数据的每个快照都会引用它。这解决了选项 1 和 2 的大部分问题。也有两种方法可以处理 COW 快照:

      一个。当当前版本中给定的一条数据发生变化时,将旧数据复制到快照中,然后更新新数据。这会导致在拍摄快照后对某个位置的第一次写入出现性能问题,但随后的写入很好,并且性能在其他方面是合理的。这就是 LVM 实现快照的方式,因为它很容易附加到尚未使用 COW 语义的现有数据集。

      湾。当当前版本中的给定数据发生更改时,在当前版本中创建该位置的新副本并将更改的数据存储在那里。这避免了选项 3a 的首次写入性能问题,但在删除快照时会导致性能损失(因为您必须验证每一位数据的引用以确定是否可以删除它)。这就是 ZFS 和 BTRFS 实现快照的方式(尽管 BTRFS 在某些非常特殊的情况下使用方法 3a)。

    因为 BTRFS 使用方法 3b,在处理元数据时使用快照唯一增加的开销,这应该占 BTRFS 写入的实际数据的很小百分比(并且元数据更新无论如何都会发生,它们只是稍微小一点,没有快照)。

    • 0

相关问题

  • 如何启用 btrfs zstd 压缩

  • btrfs 增量快照:在发送的数据中查找 UUID

  • btrfs 增量快照同步:使用 rsync 引导

  • 如何通过文件系统级 RAID 仅对数据进行一次 dm-crypt 加密?

  • 如何在 btrfs 文件系统碎片整理中设置非默认 zstd 压缩级别?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve