一步将 btrfs 文件系统大小调整为最小大小

一步将 btrfs 文件系统大小调整为最小大小

如何一步将 btrfs 文件系统的大小调整为尽可能小的大小?

我只想要dd尽可能少的数据,并且想要使用,dd因为btrfs send快照越多,速度就越慢。

btrfs filesystem resizemax争论,但没有min争论。

如果我尝试调整大小超过可用空间,我会收到如下消息:

ERROR: unable to resize '/media/backup-alt': No space left on device

我一直在逐步减小大小(例如传递参数-128G -64G-32G...),但这是一个耗时的解决方案收敛。

有没有办法一步缩小到最小?

答案1

到目前为止,我遇到的最好的解决方案是获得最小的可用空间(用于-b字节):

sudo btrfs filesystem usage -b /mountpoint
   Free (estimated):              71890542592 (min: 71890542592)

然后按金额的负数调整大小min

sudo btrfs filesystem resize -71890542592 /mountpoint

或者,如果最小可用字节数和未分配字节数之间存在很大差异,您可以选择使用 (未分配 * 0.9),因为按确切的未分配字节数调整大小似乎会失败。

然后,您可以反复缩小少量,直到调整大小失败:

while sudo btrfs filesystem resize -200M /mountpoint; do true; done

这并不完全是一个步骤,但至少大部分是自动化的。循环本身可能是一个步骤,但进行小幅增量调整大小可能会花费更长的时间,而不是最初缩小一大块。

答案2

解决问题的一个更简单的解决方案是使用partclone.btrfsif dd,它是一个分区克隆和映像工具,可以自动跳过受支持的文件系统(包括 BTRFS)的未使用块,因此无需调整大小。

https://www.partclone.org(GPL-2.0)

相关内容