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
    • 最新
    • 标签
主页 / computer / 问题 / 1772991
Accepted
Chameleon
Chameleon
Asked: 2023-03-10 16:05:24 +0800 CST2023-03-10 16:05:24 +0800 CST 2023-03-10 16:05:24 +0800 CST

btrfs 关于可用空间开销和版本控制的问题

  • 772

我第一次敢于在我的 NAS 中格式化 18TB 磁盘,作为 btrfs。所以我有一些问题和担心,我希望我们的社区能够回答。

文件系统将在客户端计算机上与 smbd 一起使用。这是否遗漏了 btrfs 的一些重要功能?(显然 root 可以通过 ssh 访问 NAS 以在 btrfs 文件系统上进行操作)。

我听说它是​​一个版本控制文件系统。想到 Git。如果我删除了一个文件,我能 100% 地再次找到它吗?

我听说即使所有文件的累积大小为 5TB,由于版本控制,18TB 的可用空间很快就会用完,并且需要 root 命令来释放它(如果我理解正确的话,可能是通过删除以前的快照进行压缩) ). 这适用吗?现在除了文件中的实际数据,还有什么占用了大量空间?这个额外的东西包含什么信息?在空间有限的时候,现在是否可以轻松地完全删除与文件实际数据无关的任何信息?

btrfs
  • 1 1 个回答
  • 23 Views

1 个回答

  • Voted
  1. Best Answer
    user1686
    2023-03-10T16:25:58+08:002023-03-10T16:25:58+08:00

    文件系统将在客户端计算机上与 smbd 一起使用。这是否遗漏了 btrfs 的一些重要功能?(显然 root 可以通过 ssh 访问 NAS 以在 btrfs 文件系统上进行操作)。

    默认情况下,Btrfs 将像任何其他文件系统一样运行。它具有 SMB 服务器可能想要使用的功能,但它们是可选的。

    例如,对于 Samba,您可能希望启用“btrfs”模块以vfs objects =获得使用 reflinks 的服务器端复制支持(即客户端能够要求服务器将远程文件从一个文件夹复制到另一个文件夹而无需下载并重新上传)。

    Samba 还具有“snapper”和“shadow_copy”VFS 模块,用于与 Snapper 制作的 Btrfs 快照集成;它可以使它们在 Windows 客户端上显示为“以前的版本”(例如基于 Windows 的文件服务器上的卷影副本)。

    我听说它是​​一个版本控制文件系统。想到 Git。

    它在某些方面很相似,但实际上并不相同。

    Btrfs 支持类似于 Git 提交的快照,但它并不打算保留所有版本的永久日志——过去的快照总是可以删除以回收空间。(例如,可以将 Snapper 等工具配置为将每日快照保留一个月,但随着时间的推移开始修剪它们。)

    如果我删除了一个文件,我能 100% 地再次找到它吗?

    仅当您在删除该文件之前仍有较早的快照。

    如果不再有对文件的引用,它就消失了——它的磁盘空间被“释放”并且可以重新使用,就像在任何其他文件系统上一样。

    这类似于 Git 行为,如果对象不再引用它们,它们就会被垃圾收集(例如,当您修改提交时,旧的有资格进行 GC;当您删除分支时,所有提交和文件都是唯一的)分支最终会被 GC 并消失)。

    我听说即使所有文件的累积大小为 5TB,由于版本控制,18TB 的可用空间很快就会用完,并且需要 root 命令来释放它(如果我理解正确的话,可能是通过删除以前的快照进行压缩) ). 这适用吗?

    不是默认的,不。除非您有意创建快照,否则不会保留旧版本的文件。

    尽管 Btrfs 是一个“写时复制”文件系统,其中对文件的每次更改都会分配新空间(而不是就地覆盖文件),但这非常临时——一旦提交新写入,这些扇区的旧版本被遗忘并回收相同数量的空间(除非以前的快照仍然持有对它的引用)。

    因此,只有在 1) 创建频繁的快照和2) 具有在快照之间频繁更改的大文件(例如,高度活跃的数据库或 VM,或删除后仍保留在旧快照中的下载)时,您才会用完空间。未更改文件的快照几乎不占用额外空间,而对非快照文件的更新会在存储新版本后立即释放以前使用的磁盘空间。

    请注意,Btrfs 本身不会自动创建快照——您必须特意运行btrfs fi snap或设置 Snapper 或 Timeshift 等工具才能实现,因此这些工具也会负责自动删除旧快照(根据您设置的规则) .


    话虽这么说,Btrfs 的“写时复制”特性确实依赖于一定数量的可用空间来处理甚至删除(因为这些需要写入新的元数据)。通常 Btrfs 会保留一定数量的可用空间,这样即使容量为 100%,您仍然可以删除内容,并且随着时间的推移,它在处理“无空间”情况方面变得越来越好,但从历史上看,它以这种趋势而闻名在击中 ENOSPC 后陷入难以修复的状态。

    此外,虽然 COW 不会占用空间,但它确实有增加频繁更新文件(和元数据)碎片的缺点。也就是说,是的,Linux 上存在“磁盘碎片整理”。

    • 2

相关问题

  • btrfs 损坏的文件系统 - 如何继续

  • 在 btrfs 硬盘之间复制文件时检查 btrfs 错误?

  • BTRFS Balance 占用 100% cpu 和 100% I/O

  • 增加 LXD/LXC Btrfs 循环文件存储池大小

  • 如果我删除 BtrFS 快照中的文件会发生什么?

Sidebar

Stats

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

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Vickel Firefox 不再允许粘贴到 WhatsApp 网页中? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve