250GB ext4パーティションを200GBに縮小したいです。resize2fs.
ツールdf
によると、パーティションが約40%ほど冷たいことがわかりました。それで、少なくともパーティションをそのレベルに縮小できると思いました。
ただし、Shrink partitionを使用しようとするとresize2fs
失敗します。これは、縮小パーティションのサイズが「最小値より小さい」ことを意味します。
これは、パーティションに以前に削除されたファイルのトレースがまだ残っているため、resize2fs
そのファイルがまだパーティションにあると考えて折りたたむと、そのデータが失われてパーティションの縮小を拒否する可能性があるためです。
だから私の質問は次のようになります
resize2fs
パーティションを縮小するために、パーティションが実際に60%空であることをどのように知ることができますか?- 使用されたブロックなどを再割り当てする方法はありますか?
メモ:私は経験豊富なXubuntuユーザーです。
答え1
resize2fs
削除したデータには興味がありません。これは、ファイルシステムを200GiBに縮小することを拒否した場合、サイズ変更されたファイルシステム構造を保存したり、サイズ変更操作自体を実行するためにさらに多くのスペースが必要だと思うためです。あなたは見ることができます詳しくはこちら(Cを読むことができると仮定)。
- inode の数を考慮すると、ファイルシステムには必要な数のグループ記述子を格納するのに十分なスペースが必要です。
- ファイルにデータを保存するには十分なスペースが必要です。
- サイズ変更操作には、サイズ変更が正常に完了するには、バックグラウンド操作に追加のinodeテーブルが必要です。
- 各インデックスノードグループには、考慮すべきいくつかのオーバーヘッドが発生します(データがグループ間でどのように分割されるかに影響を与え、より多くのグループが必要なため、より多くのオーバーヘッドが発生する可能性があります)。
- 必要に応じて、範囲ツリーが大きくなるようにスペースを予約する必要があります。これにより、かなりのオーバーヘッドが発生する可能性があります(特にファイルシステムセクションに消去する必要があるデータが多い場合は、サイズを変更するとき)。
また、いくつかのパージオーバーヘッドを追加します(ファイルシステムツールは非常に安全な傾向があります)。
を実行すると、ファイルシステムがどれだけ小さくなるかを確認できますresize2fs -P
。resize2fs -M
自動的にできるだけ小さくします。
答え2
私の場合、ブロックデバイスが使用されていたが報告されていない理由でファイルシステムをアンマウントしてから、それを使用していたlibvirt-lxc VMをシャットダウンした後、エラーメッセージが変更され、最終的にサイズ変更できることが問題でした。