2 votes

Comment un système de fichiers VirutalBox de 10 Go peut-il stocker 11 Go de données ?

Je suis vraiment confus par cela. Pour faire quelques expériences avec GlusterFS, j'ai créé deux machines virtuelles avec VirtualBox, exécutant Ubuntu 12.04, chacune avec 10 Go de stockage. J'ai écrit un script qui a créé beaucoup de petits fichiers dans beaucoup de dossiers. Chaque fichier était 100k de données aléatoires générées par :

dd if=/dev/zero of=#{name} bs=1 count=0 seek=100K

En copiant les fichiers d'une machine à l'autre, le destinataire manque d'espace. Ce qui aurait dû être impossible, puisqu'ils sont tous deux de la même taille et que je n'y ai rien stocké. En essayant de comprendre ce qui ne va pas, j'ai trouvé une situation vraiment confuse. Tout ceci se passe sur la machine source.

Selon df, je n'utilise que 26% de l'espace :

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

selon du, l'ensemble de la structure des fichiers que j'ai créés prend 772M :

root@revisionist:~# du -h files/
...
4.0K    files/3x/ey/hs
8.0K    files/3x/ey
508K    files/3x
772M    files/

ce qui est manifestement faux, car ce seul dossier contient un seul fichier de 100K :

root@revisionist:~# ls -lh files/3x/ey/hs
total 0
-rw-r--r-- 1 root root 100K May 19 11:30 3xeyhst4lnkzg5abzeasiw.txt

Si je cible ce répertoire et ce fichier avec du, les données sont clairement fausses :

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

Cela m'a conduit à trouver l'option --apparent-size qui est documentée comme suit :

--taille apparente

imprimer les tailles apparentes, plutôt que l'utilisation du disque ; bien que la taille apparente soit généralement plus petite, elle peut être plus grande en raison des trous dans les fichiers (`sparse'), de la fragmentation interne, des blocs indirects, etc.

et en effet, cela semble mieux :

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

mais lorsque je l'exécute pour l'ensemble de la structure, je me retrouve avec un résultat surprenant :

root@revisionist:~# du -h --apparent-size files
...
104K    files/3x/ey/hs
108K    files/3x/ey
6.8M    files/3x
11G files

Comment ça peut être 11G ? Qu'est-ce qui se passe ? Il s'agit d'un arrondi ? mais alors pourquoi cela ne tient-il pas sur l'autre machine ?

4voto

Shane Madden Points 112034

Si vous cherchez la taille totale du répertoire, vous devriez utiliser -s .

Voir ce que du -sh files vous donne ?

De plus, comment avez-vous créé les fichiers, et ont-ils vraiment un contenu ? Les différences entre les tailles indiquées peuvent signifier que les fichiers sont peu nombreux.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X