4

多くの KVM qcow2 ファイルを含むフォルダーがありますが、それらはすべてスパース ファイルです。ここで、フォルダーの合計サイズを取得する必要があります。qcow2 ファイルのサイズは、見かけのサイズ (実際のサイズではありません) としてカウントする必要があります。

例えば:

イメージ: c9f38caf104b4d338cc1bbdd640dca89.qcow2 ファイル形式: qcow2 仮想サイズ: 100G (107374182400 バイト) ディスク サイズ: 3.3M cluster_size: 65536

画像は 100G として扱われるべきですが、3.3M として扱われるべきではありません

もともと私は statvfs() を使用していますが、フォルダーの実際のサイズしか返すことができません。次に、「du --apparent-size」に切り替えますが、10000 個以上のファイルがあり、計算に 5 分近くかかることを考えると遅すぎます。

qcow2の仮想サイズをカウントするフォルダーのサイズを取得できる高速な方法を知っている人はいますか? ありがとうございました

4

3 に答える 3

3

stat()ディレクトリ内のすべてのファイルを ingせずに、この情報を見つける方法はありません。1 つのディレクトリにこれほど多くのファイルがあると、処理が遅くなります。stat()すべてのファイルの inode を取得する必要があります。

キャッシュが原因で、メモリを追加すると役立つ場合があります。

于 2012-12-20T19:59:00.580 に答える
0

次のようなものを使用できます。

find images/ -name "*.qcow2" -exec qemu-img info {} \; | grep virtual | cut -d"(" -f2 | awk '{ SUM += $1} END { print SUM }'

于 2012-12-20T14:59:58.827 に答える