![一步将 btrfs 文件系统大小调整为最小大小](https://linux22.com/image/127833/%E4%B8%80%E6%AD%A5%E5%B0%86%20btrfs%20%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E5%A4%A7%E5%B0%8F%E8%B0%83%E6%95%B4%E4%B8%BA%E6%9C%80%E5%B0%8F%E5%A4%A7%E5%B0%8F.png)
如何一步将 btrfs 文件系统的大小调整为尽可能小的大小?
我只想要dd
尽可能少的数据,并且想要使用,dd
因为btrfs send
快照越多,速度就越慢。
btrfs filesystem resize
有max
争论,但没有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.btrfs
if dd
,它是一个分区克隆和映像工具,可以自动跳过受支持的文件系统(包括 BTRFS)的未使用块,因此无需调整大小。
https://www.partclone.org(GPL-2.0)