我真的很困惑。 为了用GlusterFS做一些实验,我创build了两个运行Ubuntu 12.04的VirtualBox的虚拟机,每个虚拟机都有10GB的存储空间。 我写了一个脚本,在很多文件夹中创build了很多小文件。 每个文件是100k随机数据生成的:
dd if=/dev/zero of=#{name} bs=1 count=0 seek=100K
将文件从一台机器复制到另一台时,收件人空间不足。 这应该是不可能的,因为它们都是相同的大小,我没有存储任何东西。 试图找出什么是错的我发现一个非常混乱的情况。 这一切都在源机器上。
根据DF,我只使用了26%的空间:
root@revisionist:~# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/revisionist-root 9.2G 2.3G 6.5G 26% / udev 237M 4.0K 237M 1% /dev tmpfs 50M 292K 49M 1% /run none 5.0M 0 5.0M 0% /run/lock none 246M 0 246M 0% /run/shm /dev/sda1 228M 48M 169M 22% /boot
根据杜,我创build的文件的整个结构需要772M:
root@revisionist:~# du -h files/ ... 4.0K files/3x/ey/hs 8.0K files/3x/ey 508K files/3x 772M files/
这显然是错误的,因为该文件夹包含一个单一的100K文件:
root@revisionist:~# ls -lh files/3x/ey/hs total 0 -rw-r--r-- 1 root root 100K May 19 11:30 3xeyhst4lnkzg5abzeasiw.txt
如果我将目标和文件定位到du,数据显然是错误的:
root@revisionist:~# du -h files/3x/ey/hs/ 4.0K files/3x/ey/hs/ root@revisionist:~# du -h files/3x/ey/hs/3xeyhst4lnkzg5abzeasiw.txt 0 files/3x/ey/hs/3xeyhst4lnkzg5abzeasiw.txt
这使我find了选项–apparent大小这是logging为:
–apparent大小
打印明显大小,而不是磁盘使用情况; 虽然表观大小通常较小,但由于(稀疏)文件中的空洞,内部碎片,间接块等等,可能会更大
事实上这看起来更好:
root@revisionist:~# du -h --apparent-size files/3x/ey/hs/3xeyhst4lnkzg5abzeasiw.txt 100K files/3x/ey/hs/3xeyhst4lnkzg5abzeasiw.txt root@revisionist:~# du -h --apparent-size files/3x/ey/hs 104K files/3x/ey/hs
但是当我运行整个结构的时候,我得到了一个令人惊讶的结果:
root@revisionist:~# du -h --apparent-size files ... 104K files/3x/ey/hs 108K files/3x/ey 6.8M files/3x 11G files
怎么可能是11G? 这是怎么回事? 刚刚四舍五入? 但为什么它不能适应另一台机器?
如果你正在寻找目录的总大小,你应该使用-s 。
看看什么du -sh files给你?
另外,你是如何创build这些文件,他们真的有内容? 报告大小之间的差异可能意味着文件稀疏。