2 votos

Árbol fsroot inválido, ¿qué significa realmente y la integridad de los archivos?

Mac Pro modelo 5,1 (mediados de 2012, Xeon de 6 núcleos a 3,33 Ghz) con 32 GB de RAM de serie y la tarjeta de vídeo de serie. Estoy ejecutando High Sierra totalmente actualizado.

Tengo un disco duro Seagate de 4 TB (3,5") bastante nuevo que uso estrictamente para datos; no arranca, no tiene sistema operativo. Lo uso para mi carpeta de inicio de 1,5 TB, ya que es demasiado grande para mi unidad de arranque SSD. Cuando lo instalé a finales del año pasado, lo formateé como APFS y utilicé CCC (Carbon Copy Cloner) para clonar mi antiguo disco en él.

Por lo que sé, ha funcionado bien sin problemas. Mientras estaba en la Utilidad de Discos ejecuté Disk First Aid en este disco duro y encontró lo siguiente:

Checking the APFS volume superblock.
Checking the object map.
Checking the fsroot tree. 
error: inode_val: object (oid 0x3): invalid nchildren (-1) 
fsroot tree is invalid. 
The volume /dev/rdisk3s1 could not be verified completely. 
File system check exit code is 0. 
Restoring the original state found as unmounted. 
Operation successful.

La Utilidad de Discos te da la marca verde de "completo", y no tienes idea de que hay un problema a menos que hagas clic en "ver detalles". Según la documentación de fsck_apfs , código de salida 0 significa que no hay errores.

enter image description here

Ya he mirado en herramientas de terceros y no hay ninguna que pueda reparar unidades APFS. También he intentado fsck a través de la terminal, pero eso da como resultado exactamente el mismo error y los mismos mensajes. Parece que no hay manera de arreglar un fsroot inválido, excepto para reformatear la unidad.

Compré otra unidad de 4 TB, la formateé como HFS y utilicé CCC para clonar la unidad APFS "mala" y volver a utilizar la máquina. La nueva unidad HFS pasa Disk First Aid sin errores.

  • ¿Qué significa el error "nchildren inválido"?

  • ¿Cómo sé que CCC ha copiado todos mis archivos sin corrupción? Dado que aparentemente funcionaba sin problemas, excepto por el error de First Aid, no tengo ni idea de si falta algún archivo o está dañado.

  • ¿Hay otra forma de arreglar esta unidad? No hay utilidades de terceros que puedan reparar, pero tal vez a través del modo de depuración encontrar los archivos que causaron el error y restaurar o borrar esos?

EDITAR :

Ejecutar fsck_apfs de nuevo en modo de depuración -d . El disco fue desmontado y no es el disco de arranque, sin embargo, tuvo que utilizar sudo para superar los errores de denegación de permisos.

Mac-Pro:~ ••••••••$ sudo fsck_apfs -d /dev/disk3s1
Password: ••••••••
** Checking volume.
** Checking the container superblock.
** Checking the space manager.
** Checking the object map.
** Checking the APFS volume superblock.
** Checking the object map.
** Checking the fsroot tree.
error: inode_val: object (oid 0x3): invalid nchildren (-1)
obj-id:        3 type: Inode      
private-id: 3 parent-id: 1 cr/mtime: 1638063393117254350/1663519361466993480 
gen-count: 32501214 nchildren: -1 
def-prot-class: 0 
uid/gid/mode: 0/0/0x41a4 bsd_flags: 0x0 internal_flags: 0x8000 name: NO-NAME
   fsroot tree is invalid.
** The volume /dev/disk3s1 could not be verified completely.

FWIW: Tengo la unidad APFS original de 4 TB con el árbol fsroot inválido en mis manos sin tocar por si necesito hacer una solución de problemas y/o recuperación adicional.

3voto

Jose Chavez Puntos 645

El significado del mensaje de error de comprobación del sistema de archivos que aparece a continuación:

error: inode_val: object (oid 0x3): invalid nchildren (-1)

es la siguiente:

inodo_val

Cada objeto (archivo, directorio, enlace, lo que sea) del sistema de archivos se representa como una estructura de datos conocida como "inodo". El inodo contiene metadatos sobre el objeto, como por ejemplo cuándo se creó, cuándo se modificó por última vez, qué tamaño tiene, quién es su propietario, etc.

Un "inode_val" es simplemente el valor (contenido) del inodo.

oid

Cada objeto tiene un número único para su identificación. Esto también se conoce como "número de inodo". En este caso el número de inodo es el 3.

Esto es importante para usted, ya que la cifra es muy baja. Esto suele significar que fue uno de los primeros archivos o directorios creados en el sistema de archivos.

Los primeros números de inodo se asignan de la siguiente manera:

  0 = invalid (can't happen)
  1 = the parent of the "/" (root) directory - doesn't really exist
  2 = the root of the file system ("/")
  3 = the private directory ("private-dir")
  6 = directory for snapshot metadata
  7 = holder for purgeable files (not an actual directory)

En una configuración por defecto, root del sistema de archivos ("/") tiene el id. de objeto 2.

En tu caso el objeto tiene el inodo número 3. Esto significa que el directorio inodo representa el directorio especial "private-dir". No hay que confundirlo con "/private" o algo parecido.

El directorio "private-dir" no es visible desde el espacio de usuario, es decir, los programas que usted ejecuta en su ordenador no pueden ver este directorio.

Es utilizado por las implementaciones del sistema de archivos para contener datos que no pueden ser representados de otra manera en la estructura estándar del sistema de archivos, pero que necesitan ser almacenados en el disco. No es utilizado por Apple.

En esencia, si, por ejemplo, se hiciera una implementación de APFS en Linux, y se necesitara almacenar alguna información especial extra sobre archivos y directorios que se utiliza en Linux, pero no en MacOS, podrían almacenarla aquí. De esta manera, se almacena de forma segura en el disco, y el software de Apple sabrá que no debe meterse con él.

os niños

Los inodos que representan directorios tienen un campo llamado "nchildren". Otros tipos de inodos no tienen este campo, en su lugar tienen un nombre de campo "nlinks". Así que, básicamente, la existencia de "nchildren" significa que este inodo en particular es un directorio.

El significado de "nchildren" es registrar el número de entradas en el directorio. Por ejemplo, si nchildren tuviera el valor 8, significaría que hay 8 archivos o subdirectorios en ese directorio.

En tu caso el valor es -1. Este número no es válido, ya que no tiene sentido tener archivos o carpetas con valor negativo de 1 en un directorio. El sistema operativo simplemente considerará ese valor como inválido y lo tratará igual que si tuviera el valor 0.

Para resumir esto no hay absolutamente nada malo en tu sistema de archivos. Es sólo un sistema de archivos que no fue creado por la herramienta estándar de Apple para crear sistemas de archivos.

Probablemente hay un pequeño error en CCC que hizo que se creara el inodo con nchildren listado como -1 en lugar de 0. La herramienta fsck de Apple señala esto como un error, pero por lo demás afirma que el sistema de archivos es bueno. En la práctica no hay ningún problema.

No has perdido ningún archivo o carpeta, no va a haber problemas de rendimiento o estabilidad en el futuro. Todo está bien.

1voto

Oskar Puntos 1242

Hacer una copia de seguridad de los archivos (o utilizar un software de recuperación de archivos) y luego borrar la unidad funciona en casos complicados en los que un autodiagnóstico o un autorrescate superan el tiempo que se puede dedicar a los errores de hardware o de integridad del sistema de archivos.

Con APFS y las instantáneas, cada una de ellas puede duplicar el tiempo necesario para la comprobación y, finalmente, es posible que sólo tenga que tener copias de seguridad (en más de un disco) y estar dispuesto a seguir adelante y centrarse en integridad de los archivos no esperaban sistemas de archivos a prueba de bombas y un fsck que puede superar todos los errores sin pérdida de datos.

Gran parte del blog anterior está en perfecta consonancia con mi perspectiva y la de varios compañeros, y aunque nos deleitamos con algunos de los avances que ha hecho Apple, hay algunas cosas que ciertamente hemos perdido a medida que avanza la complejidad en los sistemas informáticos. A veces, vas a tener que borrar un disco para saber si está defectuoso o la contabilidad se estropeó de forma irrecuperable.

0voto

Scott Gowell Puntos 356

Aquí hay una captura de pantalla de un usuario de alto nivel en el foro de Apple :

enter image description here

Básicamente desde que el código de salida es 0 (presumiblemente la razón de la marca de verificación verde y "operación exitosa"), ignorar el error... nada que ver aquí, nunca debería haber hecho clic en "ver detalles", y seguir adelante.

Es todo tan decepcionante y descuidado.


En cuanto a usar APFS en discos giratorios convencionales... no lo hagas. Ese parece ser el consenso.

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