4 votos

¿Cómo liberar el Almacenamiento Interno moviendo los datos o usando symlink / bind-mount con el Almacenamiento Adoptable?

Galaxy S5 con LineageOS 16 (Android 9).

Estoy teniendo problemas al quedarme sin espacio de almacenamiento, a pesar de que tengo una tarjeta SD externa de 128GB, fusionada con el almacenamiento interno. ¿Hay alguna manera de crear un enlace simbólico de la memoria interna a la tarjeta SD externa, a pesar de que técnicamente se fusionan y no se identifican como ubicaciones de almacenamiento separadas dentro de Android como resultado?

Nunca he hecho symlinks en Android así que agradecería algunos consejos o recursos sobre eso también.

0 votos

Publicar la salida de adb shell df

0 votos

0 votos

Ya está montado en /storage/emulated con 100 GiB de espacio libre (84%) no es necesario hacer un enlace simbólico

5voto

Jack Wade Puntos 231

En primer lugar, los enlaces simbólicos no funcionan en el almacenamiento emulado de Android. Una solución es utilizar soportes de fijación en su lugar. Ver esta respuesta para más detalles.

Pero con Adoptable Storage no necesita :

  • Crear un enlace simbólico a la tarjeta SD externa
  • Mover manualmente los datos a la tarjeta SD externa
  • Montar un directorio desde una tarjeta SD externa

Porque lo que usted ve como /sdcard o /storage/emulated/0 debería estar ya en la tarjeta SD adoptable.

Al formatear la tarjeta SD externa como Almacenamiento adoptable Está montado en /mnt/expand/[UUID] que contiene una jerarquía de archivos muy similar a /data partición, como /data/app , /data/data y /data/media etc. Cuando migrar sus datos al recién creado Almacenamiento Adoptable, los datos de /data/media/ se traslada a /mnt/expand/[UUID]/media/ y esta última está ahora emulada y bind montada en /storage/emulated (que las aplicaciones ven).

Puede comprobarlo ejecutando df o mount en una aplicación de terminal o adb shell .

Sin almacenamiento adoptable:

~$ df --output=source,target
Filesystem                  Mounted on
/dev/block/dm-0             /data
/data/media                 /storage/emulated
/dev/block/vold/public:8,1  /mnt/media_rw/[UUID]

* dm-0 está encriptado FDE userdata partición, vold El volumen público es una tarjeta SD externa o una unidad USB.

Antes de mover los datos:

~$ df --output=source,target
Filesystem                  Mounted on
/dev/block/dm-0             /data
/data/media                 /storage/emulated
/dev/block/dm-1             /mnt/expand/[UUID]

* dm-1 es la tarjeta SD encriptada FDE Adoptable.

Después de mover los datos:

~$ df --output=source,target
Filesystem                  Mounted on
/dev/block/dm-0             /data
/dev/block/dm-1             /mnt/expand/[UUID]
/mnt/expand/[UUID]/media    /storage/emulated

* En realidad /data/media o /mnt/expand/[UUID]/media se emula a /mnt/runtime/[default|read|write]/emulated que se une montado a /storage/emulated .

Sólo puede trasladar las aplicaciones (junto con sus datos) a Adoptable Storage que tienen installLocation ajustado a preferExternal o auto por el desarrollador de la aplicación. En el caso de auto La ubicación de instalación por defecto (establecida con pm set-install-location ) decide dónde se instalará la aplicación. Véase esta respuesta para más detalles.

Si quieres más espacio libre, sustituye los directorios grandes (como /data/media , /data/app y /data/data ) con montajes (o bind-mounts) de particiones (o directorios) en la tarjeta SD externa. Sin embargo (DAC y MAC) los permisos deben ser atendidos, de lo contrario las aplicaciones (o incluso el sistema operativo) puede romper.


RELACIONADO:

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X