La partición de datos con 23 GB solo muestra 8 GB cuando está montada

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?

Respuestas (1)

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.