Tengo un Sony Xperia Z5 Compact y me resultaba extraño que el administrador de almacenamiento mostrara que el sistema estaba llenando 20 GB de los 32 GB de almacenamiento interno, así que profundicé un poco más en esto.
Descubrí que la partición de datos es p42 en la rom interna usando el fdisk de TWRP, que informa correctamente que tiene 23 GB (aunque no he encontrado cómo obtener la salida del terminal TWRP aquí). Sin embargo, al usar fdisk con el dispositivo completamente iniciado, a través del shell ADB, obtengo esto:
suzuran:/ # fdisk -l /dev/block/mmcblk0
Disk /dev/block/mmcblk0: 31.2 GB, 31272730624 bytes
255 heads, 63 sectors/track, 3802 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/block/mmcblk0p1 1 3803 30539775+ ee EFI GPT
no muestra la tabla de particiones completa...
Sin embargo, cuando intento leer la partición, no da errores:
suzuran:/ # dd if=/dev/block/mmcblk0p42 of=/dev/null
48365568+0 records in
48365568+0 records out
24763170816 bytes transferred in 246.927 secs (100285391 bytes/sec)
Leer todo el almacenamiento tampoco da errores:
suzuran:/ # dd if=/dev/block/mmcblk0 of=/dev/null
61079552+0 records in
61079552+0 records out
31272730624 bytes transferred in 365.211 secs (85629213 bytes/sec)
Pero cuando se monta, ya sea arrancado o dentro de TWRP (también lo monté manualmente), muestra solo un tamaño de 8 GB:
suzuran:/ # df
Filesystem 1K-blocks Used Available Use% Mounted on
[ other skipped mounts ]
/dev/block/mmcblk0p43 5215496 1188900 4026596 23% /system
/dev/block/mmcblk0p42 8641912 6071544 2570368 71% /data
/dev/block/mmcblk0p41 197472 188 197284 1% /cache
/dev/block/mmcblk0p3 81872 57808 24064 71% /firmware
/dev/block/mmcblk0p31 28144 164 27980 1% /persist
/dev/block/mmcblk0p39 14327 160 14167 2% /idd
/dev/block/loop0 92656 980 91676 2% /su
Estoy usando LineageOS, pero en la rom de stock de Sony tuve el mismo problema, solo que no tenía las herramientas para verificar esto más a fondo.
¿Alguien ha tenido este problema antes o puede ayudarme con esto?
Editar: acabo de encontrar el comando 'blockdev':
suzuran:/ # blockdev --getsize64 /dev/block/bootdevice/by-name/userdata
24763170816
que da el tamaño correcto de la partición. ¿Qué está pasando con el comando 'montar'? ¿Podría esto estar relacionado con el kernel? Si es así, ¿por qué sucede también en TWRP?
Después de "jugar" un poco con el dispositivo, logré rastrear el problema hasta los datos de la partición ext4. Arrancó en TWRP, terminal, hizo una copia de seguridad de los archivos en la partición, desmontó, luego:
mke2fs -t ext4 /dev/block/bootdevice/by-name/userdata
¡Y voilá! 23 GB de almacenamiento de datos disponibles. Restauré los archivos respaldados al nuevo sistema de archivos ext4 y ahora todo funciona, aunque siento que es un poco más lento. No obstante, está solucionado.