2012-12-19 8 views
4

많은 KVM qcow2 파일이 들어있는 폴더가 있습니다. 모두 스파 스 파일입니다. 이제 폴더의 전체 크기를 가져와야합니다. qcow2 파일 크기는 실제 크기가 아닌 겉보기 크기로 계산되어야합니다. 예스파 스 파일의 겉보기 크기를 포함한 폴더 크기를 얻는 방법은 무엇입니까? (du가 너무 느립니다.)

:

이미지 : c9f38caf104b4d338cc1bbdd640dca89.qcow2 파일 포맷 : qcow2 가상 크기 : 100G (107374182400 바이트) 디스크 크기 : 3.3M이 CLUSTER_SIZE : 65536

이미지로 처리한다 100G하지만 3.3M이 아님

원래 statvfs()를 사용하지만 폴더의 실제 크기 만 반환 할 수 있습니다. 그리고 나서 나는 'du --apparent-size'로 바꾼다. 그러나 나는 10000+ 개의 파일을 가지고 있고, caculate하기 위해 거의 5 분이 걸린다.

누구나 qcow2의 가상 크기를 계산하는 폴더의 크기를 얻을 수있는 빠른 방법을 알고 있습니까? 이 정보를 찾을 수있는 방법이 stat() 디렉토리에있는 모든 파일을 보내고 않고있다

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

답변

3

없습니다 : 당신은

+0

예, 드디어 진실을 깨달았습니다. –

0

이 같은 것을 사용할 수 있습니다 감사합니다. 하나의 디렉토리에 많은 파일이 있으면 속도가 느립니다. stat()은 모든 단일 파일의 inode를 검색해야합니다.

메모리를 추가하면 캐싱으로 인해 도움이 될 수 있습니다.

+0

예, 작동하지만 여전히 느립니다. 그 이유는 du와 같고 둘 다 파일 시스템을 걷고 있기 때문입니다. statvfs와 같은 폴더의 크기를 읽을 수있는 방법이 필요하고 가상 크기를 계산할 수 있습니다. –

+0

@zx_wing 대부분의 유닉스/리눅스 파일 시스템은 해당 정보를 저장하지 않으므로 읽을 수 없습니다. 나무를 걷는 것이 필요합니다. *와 같은 통계는 파일 시스템 수준에서 유지되므로 해당 파일 시스템에서 트리가 유일한 경우 statvfs 라우트는 해당 정보를 제공해야하지만 트리가 파일 시스템의 일부이거나 또는 여러 파일 시스템에 걸쳐 있으므로 계산해야합니다. – twalberg