4 votos

APFS: La instantánea no es válida

Ejecutar fsck_apfs informa de un error al comprobar mi disco principal:

root@bix ~ # fsck_apfs -n -l /dev/disk1s1
** Checking the container superblock.
** Checking the EFI jumpstart record.
** Checking the space manager.
** Checking the space manager free queue trees.
** Checking the object map.
** Checking volume.
** Checking the APFS volume superblock.
** The volume Macintosh HD - Data was formatted by hfs_convert (748.1.46) and last modified by apfs_kext (1412.81.1).
** Checking the object map.
** Checking the snapshot metadata tree.
** Checking the snapshot metadata.
** Checking snapshot 1 of 2 (com.apple.apfs.purgatory.84779e)
error: sibling_map_val object (oid 0x2c6200000000168): invalid length (20)
   Snapshot is invalid.
** The volume /dev/disk1s1 could not be verified completely.

La salida es la misma tanto en el modo de recuperación como en el modo seguro (sin montar el disco).

La búsqueda en Internet de "sibling_map_val object" sólo arroja un código de desensamblador de Hopper, lo que me hace pensar que se trata de un error inusual. Sin embargo, mucha gente menciona la salida "Snapshot is invalid".

¿Hay alguna manera de forzar la eliminación de la instantánea? El sistema no informa de que exista ninguna:

root@bix ~ # tmutil listlocalsnapshots /
Snapshots for volume group containing disk /:

El problema de root es que mi disco principal sigue llenándose, a pesar de que borro cientos de GB de archivos. Daisy Disk informa de que no se puede acceder a los archivos ocultos del sistema (incluso a pesar de actualizar los permisos a través de la versión de la utilidad que no es de App-Store). Sospecho que hay alguna instantánea local corrupta en el "com.apple.apfs.purgatory.84779e" que se menciona en la salida de fsck, pero no veo ninguna forma de eliminarla.

He probado a desactivar/activar las copias de seguridad de Time Machine y la indexación de Spotlight sin éxito. El reinicio siempre acaba recuperando unos 5 GB, pero luego baja rápidamente a unos 2 GB de espacio libre y ronda por ahí hasta que el sistema empieza a quejarse de que no hay suficiente memoria del sistema para que mis aplicaciones permanezcan abiertas. Y como no puedo liberar suficiente espacio, Time Machine se queja de que no tiene suficiente espacio para crear una instantánea local, por lo que no se hace una copia de seguridad de mi disco (y por tanto no puedo borrar todo el sistema de archivos y restaurar desde Time Machine). Estoy atascado con un disco que sigue llenándose.

2voto

OJW Puntos 111

error: sibling_map_val

Vamos a desglosar esto. En primer lugar, según Especificación APFS (PDF):

Los enlaces duros que hacen referencia al mismo inodo se denominan hermanos. Cada hermano tiene su propio identificador que se utiliza en lugar del número de nodo compartido cuando los hermanos deben ser distinguidos. ... Los enlaces entre hermanos y los mapas de hermanos se utilizan para convertir los identificadores de hermanos en números de inodo. Los registros de enlaces entre hermanos le permiten encontrar todos los enlaces duros cuyo objetivo es un inodo determinado. Los registros de mapas de hermanos le permiten encontrar el inodo de destino de un enlace duro dado.

Así que el sibling_map es como una hoja de cálculo con un par de columnas, una key que hace referencia a un archivo real en el sistema de archivos, y un value que tiene el ID de objeto de un "archivo" vinculado. En este caso, el valor de su ID no tiene la longitud correcta, lo que indica que está corrupto.

Además, esos datos corruptos parecen estar en una instantánea incompleta, por lo que la solución es borrar esa instantánea, lo que puede ser bastante difícil.

Posibles soluciones (de menos a más destructivas)

Borrar la instantánea local

Sí, lo has mencionado, pero es un primer paso importante. En primer lugar, asegúrese de desactivar TimeMachine .

¿Hay alguna manera de forzar la eliminación de la instantánea?

Sí, y también puedes hacer un script de ello porque es un problema frecuente. El 99% de las veces es la instantánea más antigua o la que dice dateless

tmutil listlocalsnapshots / ... La salida de ese comando tiene el siguiente aspecto:

Snapshots for volume group containing disk /:
com.apple.TimeMachine.2020-04-01-122516.local
com.apple.TimeMachine.2020-04-01-132348.local
com.apple.TimeMachine.2020-04-01-143800.local
com.apple.TimeMachine.2020-04-01-153811.local
com.apple.TimeMachine.2020-04-01-183757.local
com.apple.TimeMachine.2020-04-01-193758.local
com.apple.TimeMachine.2020-04-01-203828.local

Sólo tienes que copiar la marca de tiempo de cada línea que quieras eliminar y pegarla en el siguiente comando. De nuevo, normalmente borrar sólo la más antigua (la de arriba) resolverá los problemas relacionados.

sudo tmutil deletelocalsnapshots 2020-04-01-090758

Si tiene éxito, no obtendrá ninguna respuesta (salida 0) en el terminal.

2. Eliminar la instantánea infractora

ADVERTENCIA: No debes proceder si no tienes una copia de seguridad completa de tu disco. Podría perder algunos datos. Podría perder todos sus datos.

Arrancar en modo de usuario único (reiniciar en modo recovery e introducir los comandos en la terminal como usuario Root) y tratar de encontrar la ubicación de la instantánea. Algo así como:

find / com.apple.apfs.purgatory.84779e # Totally untested

Una vez que lo encuentres, rm ese archivo. Si no puede localizar el archivo, vaya al paso 3.

3. Realice una reinstalación segura

Mientras está en el modo de recuperación, salga del terminal y realice una reinstalación del sistema operativo. Esto es "seguro" en el sentido de que sólo se recrean los archivos del sistema. Su $HOME se dejará en su sitio, así que si todo va bien, no deberías tener que recuperar tu disco duro desde una copia de seguridad.

Una vez que haya terminado, ejecute fsck_apfs de nuevo para verificar que el problema se ha resuelto. Si no es así...

4. Realice una reinstalación completa

Todavía en modo de recuperación, abra la Utilidad de Discos y elimine la partición en la que está instalado el SO. Al hacer esto se borrará toda su información. Vuelva a crear la partición (considere la posibilidad de utilizar HFS+ si tiene problemas frecuentes con APFS) tal y como estaba antes. Salga de la Utilidad de Discos y vuelva al modo de recuperación.

Antes de hacer una reinstalación, utilice fsck_apfs en la nueva partición para comprobar que no se produce ningún error que contenga la palabra physical . Cualquier error en este punto probablemente indica un problema con el propio disco duro, y puede ser necesario reemplazarlo. Algunos ejemplos de estos errores son:

  • Unable to mark physical extent range
  • found physical extent corruption

Intente reparar, por supuesto, pero si no tiene éxito, considere la posibilidad de sustituir la unidad.

A continuación, proceda a una instalación tal como lo hizo en el paso 3, seguido de la ejecución de una recuperación de su copia de seguridad más reciente.

Buena suerte.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple 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