sys
やproc
などのシステムファイルを使用して、マウント解除されたパーティションの空き領域を見つけることはできますか?
合計スペースを見つける方法は知っていますが、空きスペースについてはわかりません。システムファイルのみを使用することをお勧めします。マウントされていないパーティションの合計スペースには、/proc/partitions
ファイルを使用しています。
そのための一般的な方法はありませんが、ほとんどの場合に機能する方法があります。
その理由、そのための一般的な方法がない理由カーネルはそれを知らない。それを知るには、まずパーティションを分析する必要があります。
パーティションをマウントしないと、カーネルはその存在のみを認識し、それ以上は認識しません。基本的に、それはランダムなデータを持つブロックのラインです。カーネルは、それがどこにあり、どのようにアクセスするかを知っていますが、それをどうするかはわかりません。
ただし、ファイルシステムのコンテンツをマウントせずに分析できるユーザー空間ツールもあります。すべてのファイルシステムには非常に異なるデータ構造があるため、それらを処理するには異なるツールが必要です。
Ext2/3/4の場合は
# dumpe2fs /dev/your_root|grep '^Free blocks'
dumpe2fs 1.42.13 (17-May-2015)
Free blocks: 5721580
これはファイルシステムのタイプに依存しますが、fsck
を使用して、残っている空き容量を調べることができます。空き領域を見つけるには、ファイルシステムの構造を理解するツールが必要です。通常、fsck以外にそれらの多くはありません。
procfsは、特にプロセス関連情報に使用する必要があります。 (厳密にフォローされていませんが、まだ安全面にあるため、非推奨になる可能性があるため、それに依存しないでください)。
sysfsはシステム情報を提供します。これにより、ディスク全体のサイズに関する情報が得られます。
cat /sys/block/sda/size
sdaをパーティション名に置き換えます。
ls /sys/block/sda/
使用可能なパーティションに関する情報を提供しますsda1、sda2 ...
sdaと同じものを使用して、これらのパーティションのサイズを確認できます。
cat /sys/block/sda/sda1/size
上記の監視パーティション名と同じメモ。要件に応じて、sdaをsdb、sdcなどに変更します。
これがあなたの質問に答えることを願っています。
あなたが言うように、「システムファイルのみを使用する」ことができるかどうかはわかりませんが、resize2fs
マウントせずに見積もりを取得します。 manページから:
-M Shrink the file system to minimize its size as much as possible,
given the files stored in the file system.
-P Print an estimate of the number of file system blocks in the
file system if it is shrunk using resize2fs's -M option and then
exit.
そう、 resize2fs -P /dev/PARTITION
は、そのパーティション上のファイルシステムが使用しているブロック数の見積もりを示します。パーティションの合計ブロックは、あなたが言ったように、/proc/partitions
、またはblockdev --getsz /dev/PARTITION
の場合は、少し計算します。推定最小サイズが実際のディスク使用量にどれだけ近いかはわかりませんが、余裕を持たせるために、最小サイズは実際のディスク使用量よりも大きいと思います。マウントしてdu
を実行すると確認できます。