“btrfs filesystem show” 中设备的“已使用”值过高会造成问题吗?是否应该执行平衡操作?

“btrfs filesystem show” 中设备的“已使用”值过高会造成问题吗?是否应该执行平衡操作?

我有一台配备 Samsung 840 500 GB SSD 的笔记本电脑,并且安装了 openSUSE 12.3,并使用 btrfs 作为文件系统。

几天前,我第一次从网络浏览器收到一条消息,称它无法保存书签文件。此后不久,我的计算机变得不稳定,无法再次正常启动。启动到实时系统并删除一些早期的快照(由 snapper 自动拍摄)修复了问题,以便我能够再次启动。

根据 df、btrfs filesystem show 和 btrfs filesystem df / 的报告,在崩溃之前,文件系统大约已满 70%。

我的印象是,当 df 和 btrfs 文件系统 df 一致认为文件系统有足够的剩余空间时,那么一切都应该没问题。 btrfs 文件系统的输出显示删除快照是:

Label: none  uuid: 9eeb0c9b-c419-49f1-8476-ea0f19d262b4
    Total devices 1 FS bytes used 252.33GB
    devid    1 size 449.61GB used 449.61GB path /dev/dm-1

使用的 FS 字节数低于崩溃之前(这符合预期,因为根据我的理解,快照已计入总数中),而使用的设备字节数 (449.61GB) 仍然显示为已满。

所以我的问题是,当使用的设备字节接近设备的总大小时是否应该被视为有问题?为了安全起见,我目前正在运行平衡操作,但我的印象是,使用的设备字节仅真正代表了到目前为止 btrfs 已声明的设备数量,并且 FS 字节使用值才是真正的衡量标准目前实际使用了多少。

由于平衡操作非常耗时,并且会使像三星 840 这样的基于 TLC NAND 的 SSD 遭受大量磨损,因此这一点很重要,并且这是 btrfs 的一个相当大的问题,需要定期进行此类操作才能保持稳定。

答案1

答案是“是”。给出了问题的公正描述这里

本质上,完整的设备意味着 btrfs 无法再分配更多“块”,并且可能处于无法分配更多元数据的位置。

如果 FS 字节使用值较低(如我的情况),则平衡操作可以解决问题。例如:

btrfs filesystem balance start -dusage=20 /

此命令将重新平衡(因此希望也回收一些设备空间)使用 20% 或更少的所有块。数字越大(0-100%),完成的工作就越多。

看来这可能会在未来的某个时间在后台处理,但据我所知,从 linux 3.14 开始,这仍然需要手动完成。

相关内容