ブロックデバイスで使用されているハードディスク容量を検出する方法は?

ブロックデバイスで使用されているハードディスク容量を検出する方法は?

/dev/sda生のブロックデバイス(例:)を見て、ドライブでどのくらいのスペースが使用されているかを理解したいと思います。

ハードドライブにどのタイプのファイルシステムがあるのか​​わからず、この問題を解決する方法もありません。ハードドライブは明らかに「空になる」ことはできませんが、私が知っているのは、「空のスペース」が複数のゼロで表されることです(出力のように/dev/zeroASCII文字ではありません0)。

ブロックデバイスをスキャンした後にゼロ値で満たされたブロック数を示す出力を取得するにはどうすればよいですか?

答え1

私が知っているのは、「空のスペース」がゼロの束で表されることだけです。

これは間違っています。多くのディスクはすべてゼロで始まりますが、そのままではありません。ほとんどのオペレーティングシステムは、廃止されたディスクセクタをゼロにしません。セクタが再び使用されるまで、最後に含まれている内容をそのまま残します。

TRIMはすべてゼロのブロックを生成するため、SSDデバイスにはゼロより多くのセクタがある可能性がありますが、これは未使用のセクタが何らかの方法でゼロにクリアされることを保証しません。十分に長いことだけを保証します。 。

ファイルシステムで未使用領域を検出する唯一の方法は、ファイルシステム構造を分析することです。未使用領域は、ファイルシステムで使用されていない領域です。

関連情報