
BTRFSファイルシステムで使用されているすべてのブロックで未使用領域を回復するには?
部分的に使用されるブロックが多く、各ブロックが10〜50%活用されると仮定すると、各ブロックの空き領域の90〜50%が回収されるようにこれらのブロックをデフラグするにはどうすればよいですか。
可能であれば、データも圧縮されます。
答え1
BTRFSには、データを含むファイルシステム内のすべてのブロックの未使用領域を簡単に回収する方法があります。 ...btrfsの残高。
使用法に関する公式文書を見るには、公式文書にアクセスして「未使用のブロック圧縮「ここ:https://btrfs.readthedocs.io/en/stable/Balance.html#filter-types
構文は基本的に次のとおりです。
btrfs balance start -dusage=<percentageUsed/chunk> <btrfs mount path>
たとえば、
btrfs balance start -dusage=10 /mnt/btrfs
上記の場合、btrfsインストールパス/ mnt / btrfsにあるすべてのブロックを検索して、最大10%まで使用されたブロックのみを見つけます。
その後、データは部分的に使用されている他のブロックに再配置され、使用されたブロックの割合が10%以上に増加します。これにより、ファイルシステムを圧縮し、さらに重要なことは、ブロックごとに未使用またはロックされた「空き容量」を確保することです!
基本的に空き容量の最適化
その後、上記の内容を最大50%までの割合を増やしてスクリプトに配置できます。上記のリンクの公式文書では利点が少ないため、50%以上をお勧めしません。
たとえば、
#!/usr/bin/env bash
function free_chunks_up_to_50percent {
local path=$1
for USAGE in {10..50..10}
do
echo "usage percentage= ${USAGE}"
echo "path= ${path}"
btrfs balance start -v -dusage=${USAGE} ${path}
done
}
free_chunks_up_to_50percent $1
btrfs-reclaim-unused-space.sh
たとえば、上記のスクリプトがbtrfsインストールパスを呼び出すスクリプトファイルの場合は、上記のスクリプトを実行して/mnt/btrfs
そこのスペースを回復します。
sh ./btrfs-reclaim-unused-space.sh /mnt/btrfs
SSDの場合、BTRFS RAIDでも非常に高速です。
BTRFS RAIDのマシンディスクの場合、RAIDアレイ(すべてのタイプのBTRFS RAID)のサイズによっては多少時間がかかる場合があります。特にRAIDが多くのIOを実行している場合は、まだ時々実行する価値があります。たとえば、急流のダウンロード数が多いです。