Sur un décodeur Android Nougat (7.1.1), du
y df
de mon /data
sont très différentes :
$ adb shell du -sh /data
1.0G /data
$ adb shell df -H /data
Filesystem Size Used Avail Use% Mounted on
/dev/block/sda9 10G 10G 469M 96% /data
Je ne pense pas que d'autres éléments soient montés sous les /data
:
$ adb shell mount | grep "\/data"
/dev/block/sda9 on /data type ext4 (rw,seclabel,nosuid,nodev,relatime,discard,noauto_da_alloc,data=ordered)
$ adb shell mount | grep "sda9"
/dev/block/sda9 on /data type ext4 (rw,seclabel,nosuid,nodev,relatime,discard,noauto_da_alloc,data=ordered)
lsof
m'indique qu'il existe des dizaines de processus contenant des centaines de petits fichiers supprimés du type
init 1 root 3w CHR 1,11 0t0 14517 /dev/__kmsg__ (deleted)
ueventd 391 root 3w CHR 1,11 0t0 14593 /dev/__kmsg__ (deleted)
. . .
main 756 root mem unknown /dev/ashmem/dalvik-large object space allocation (deleted)
main 756 root mem unknown /dev/ashmem/dalvik-large object space allocation (deleted)
. . .
omm.times 3934 system mem unknown /dev/ashmem/dalvik-mark sweep sweep array free buffer (deleted)
omm.times 3934 system mem unknown /dev/ashmem/dalvik-mark sweep sweep array free buffer (deleted)
L'utilisation busybox
Les résultats sont différents ( df
montre une utilisation beaucoup plus faible), mais il y a toujours un écart important entre les deux systèmes. du
y df
:
$ adb shell busybox du -sh /data
389.4M /data
$ adb shell busybox df -h /data
Filesystem Size Used Available Use% Mounted on
/dev/block/bootdevice/by-name/userdata
9.7G 8.6G 1.1G 89% /data
Et en utilisant toybox
les résultats sont similaires à busybox
:
$ adb shell toybox du -sh /data
389M /data
$ adb shell toybox df -h /data
Filesystem Size Used Avail Use% Mounted on
/dev/block/sda9 10G 8.6G 1.1G 89% /data
Il est important de noter que ces chiffres restent similaires après un redémarrage .
Par ailleurs, je tiens à signaler que je ne peux pas effectuer de mise à jour OTA de l'Android de cet appareil en raison d'un manque d'espace disque, même si l'image OTA ne pèse qu'environ 1 Go. Ce fait m'amène à penser que les résultats de l'étude de df
sont exacts en termes d'espace disque réellement disponible.
Toutes les commandes adb sont exécutées en tant que Root, c'est-à-dire que j'ai fait adb root
avant de les exécuter. Mais au risque de rendre cette question trop verbeuse, voici tout ce qui est exécuté à l'invite adb :
$ adb shell
Z:/ # whoami
root
Z:/ # du -sh /data
389M /data
Z:/ # df -h /data
Filesystem Size Used Avail Use% Mounted on
/dev/block/sda9 10G 8.6G 1.1G 89% /data
10.197.12.14:/ # busybox du -sh /data
389.4M /data
Z:/ # busybox df -h /data
Filesystem Size Used Available Use% Mounted on
/dev/block/bootdevice/by-name/userdata
9.7G 8.6G 1.1G 89% /data
Z:/ # toybox du -sh /data
389M /data
Z:/ # toybox df -h /data
Filesystem Size Used Avail Use% Mounted on
/dev/block/sda9 10G 8.6G 1.1G 89% /data
Z:/ #
Un utilisateur dans les commentaires a demandé ce qui suit :
Z:/ # while read num; do (( sum += num )); done <<< $(find /data -type f -exec stat -c%b {} +); expr $sum / 2048
393
Je comprends que du
signale de l'espace libre en analysant les nœuds accessibles, ce qui pourrait signifier que mon système de fichiers est corrompu. Cependant, malheureusement, il s'agit d'appareils sur le terrain, et je ne veux pas avoir à (et ne pense pas pouvoir) exécuter fsck
o e2fsck
.
Qu'est-ce qui peut expliquer l'énorme différence entre du
y df
sur ce dispositif, et comment ce problème peut-il être résolu ? Je me ferai un plaisir de vous fournir d'autres journaux.