
1つのステップで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
あるいは、最小空きバイト数と未割り当てバイト数の間に大きな違いがある場合、割り当てられていないバイトの正確な数だけサイズを変更することは失敗するように見えるため、(unallocated * 0.9)を使用することを選択できます。
その後、サイズ変更が失敗するまで繰り返し少しずつ縮小できます。
while sudo btrfs filesystem resize -200M /mountpoint; do true; done
正確には一歩ではありませんが、少なくともほとんどは自動化されています。ループ自体は 1 つのステップにすることができますが、小さな増分サイズ変更を実行すると、最初に大きな塊を縮小するよりも時間がかかります。
答え2
問題に対するより簡単な解決策は、サポートされているファイルシステム(BTRFSを含む)に対して未使用のブロックを自動的にスキップするため、サイズ変更を必要としないパーティション複製およびイメージングツールであるpartclone.btrfs
ifを使用することです。dd
https://www.partclone.org(GPL-2.0)