パーティションの「使用済み」領域を判断する Linux CLI ツールはありますか? (gparted など)

パーティションの「使用済み」領域を判断する Linux CLI ツールはありますか? (gparted など)

私は AOakley の素晴らしいガイドを使用して Linux SD カード パーティションを縮小しています。自動化しようとしていますが、パーティションで使用されているバイト数を判断するためのコマンド ライン ツールがないようです。

たとえば、gparted では、使用済み領域は 6.99 GB のうち 1.88 GB であると表示されます (注意: /dev/sdb の 2 番目のパーティションにマウントされている /dev/loop0 を使用しています)。

df間違っている:

% df /dev/loop0
Filesystem  ... Use%
udev        ... 0%

...そしてfdiskparted使用されたスペースは印刷されません。

パーティション内の使用済み領域を判別するには、コマンドラインから何を使用すればよいですかgparted?

回答: 要約すると、次のようになります。パーティションは で、 、(合計)をext4使用dumpe2fsおよび抽出できます。を組み合わせると と完全に一致します。 は、縮小中に断片化を処理することがわかります。詳細については、のマニュアル ページを参照してください (ただし、マニュアル ページのエディターは GiB と GB について少し苦々しい態度をとっています)。:)free blocksblock countblock sizegpartedresize2fsext4

答え1

dfはほぼ正しいツールですが、デバイス ノードではなく、調べたいファイル システムに属するマウント ポイント (または以下の任意のファイル) を照会する必要があります。使用したノードは、仮想ファイル システム/dev/loop0に属する特別なファイルですudev。そのため、 が取得されますudev

/dev/loop0または/dev/sdb2、 )をどこかにマウントし/dev/loop0(mount でもかまいませんro)、 を呼び出しますdf /the/mountpoint。すると、dfファイルシステムが自身について報告する内容が表示されます。

私はdfほとんどファイルシステム (および後でパーティション) をツールによって報告されるサイズまで縮小できる保証はないため、「適切なツール」を使用する必要はありませんdf。印刷される内容が最初の (または 0 番目の) 推定値になります。

異なるファイルシステムのサイズを変更するには、異なるツールが必要です。理想的な世界では、そのようなツール (または付随するツール) は、最小可能なサイズ、または少なくともサイズ変更が確実に成功する最小サイズを教えてくれます。実際には、次のような状況に遭遇することがあります。

既知のバグ
によって推定されるファイルシステムの最小サイズはresize2fs、特に 1k および 2k のブロックサイズのファイルシステムの場合、正しくない可能性があります。

ソース

gpartedはファイルシステム固有のツールを使用します。 で実行しましたstraceが、 を使用している証拠は見つかりませんでしたdfbtrfs filesystem show …、、dumpe2fs ……を確認しました。

まとめ:

  • 使い方がdf間違っています。
  • いずれにせよ、ファイルシステム固有のツールを使用する方がよいでしょう。gparted問題のファイルシステムを指定していないため、どのツールを使用すべきかをお伝えすることはできません。

関連情報