APFS: l'albero di fsroot non è valido dopo il backup di Time Machine - come ripristinare ed evitare in futuro?


6

Sistema

MacBook Pro, fine 2013, 1 TB SSD (nuovo di zecca, recentemente sostituito da Apple), APFS (no journaling, case insensitive), High Sierra 10.13.2, Time Machine per rete HDD.

Quello che è successo

  • Mac ha smesso di funzionare, no space left on device.
  • Riavvio non riuscito.
  • Ho provato ad avviare in modalità di ripristino con Command-R ed eseguire First Aid da Disk Utility - non è riuscito, perché a quanto pare il sistema di ripristino risiede anche sullo stesso disco, il che sembra rendere impossibile fsck su APFS.
  • Ho cercato di eliminare manualmente alcuni file tramite rm, ottenutono space left on device
  • Ho cercato di troncare alcuni file manualmente tramite cat /dev/null > somefile, ottenutono space left on device
  • Avviato in modalità di ripristino con Shift-Command-R (scarica il sistema da Internet) ed eseguiva nuovamente First Aid . Questa volta con successo limitato:

    ** Checking volume.
    ** Checking the container superblock.
    ** Checking the EFI jumpstart record.
    ** Checking the space manager.
    ** Checking the object map.
    ** Checking the APFS volume superblock.
    ** Checking the object map.
    error: invalid dstream.size (10730881024), is greater than dstream.alloced_size (71151616)
    error: xf : INO_EXT_TYPE_DSTREAM : invalid dstream
    error: inode_val: object (oid 0x16309a1): invalid xfields
    ** Checking the fsroot tree.
       fsroot tree is invalid.
    ** The volume /dev/rdisk2s1 could not be verified completely.
    

Quindi a quanto pare l'albero fsroot non è valido. Ho cercato, ma non sono riuscito a trovare alcun consiglio utile su come risolvere questo problema (tranne ovviamente, riformattare e ripristinare dal backup, che vorrei evitare).

Informazioni aggiuntive sullo sfondo

Sul sistema è presente una VM Windows Parallels con un hard disk virtuale da 100 GB (sì, un file di grandi dimensioni), che è stato recentemente utilizzato (quindi è stato necessario un backup). L'ultima volta che ho usato il computer, circa 20 GB erano ancora liberi su SSD macOS. Per un giorno circa, i backup di Time Machine non sono stati completati, ma non è stato visualizzato alcun messaggio di errore. Quando si è verificato il problema, avevo lasciato la macchina accesa durante la notte per completare un backup incrementale di Time Machine. La connessione qui è che Time Machine sta apparentemente usando snapshot APFS. Ho il sospetto che questa sia la causa principale del perché questo casino è accaduto.

Domande

  1. C'è un modo per risolvere questo problema (senza riformattare e ripristinare dal backup)?
  2. Qual è il modo migliore per evitarlo in futuro (soprattutto per quanto riguarda Time Machine)?

Grazie.

Aggiornare

Quando si esegue fsck_apfscon il flag di debug -d, l'output contiene alcune informazioni in più:

** Checking volume.
** Checking the container superblock.
** Checking the EFI jumpstart record.
** Checking the space manager.
** Checking the object map.
** Checking the APFS volume superblock.
** Checking the object map.
error: invalid dstream.size (10730881024), is greater than dstream.alloced_size (71151616)
error: xf : INO_EXT_TYPE_DSTREAM : invalid dstream
error: inode_val: object (oid 0x16309a1): invalid xfields
obj-id: 23267745 type: Inode      
private-id: 23267745 parent-id: 12896552 cr/mtime: 1515089959653928186/1515090145416398252 
def-prot-class: 0 
uid/gid/mode: 0/0/0x8180 bsd_flags: 0x0 internal_flags: 0x8280 name: NO-NAME
** Checking the fsroot tree.
   fsroot tree is invalid.
** The volume /dev/disk2 could not be verified completely.

Hai mai trovato una soluzione per questo? Ricevo lo stesso errore con lo stesso disco di Parallels VM. Parallels non inizia ora con me.
Mike Wills,

Sfortunatamente no. Ho dovuto ripristinare il contenuto del mio disco dal backup.
Hendrik,

Sto riscontrando gli stessi problemi a causa di foto locali e di un disco che si riempie. Ma questa non è una VM ma un vero Mac con un SSD locale. Ma il mio fsck non riporta errori. Fondamentalmente, la combinazione APFS di TimeMachine è fragile. macOS High Sierra.
gctwnl

Risposte:


4

Ho appena riscontrato un problema simile. Probabilmente avresti scoperto che il problema era in uno dei file per la macchina virtuale Parallels - almeno quello era il colpevole nel mio caso. Il tuo fsck_apfs -d /disk/<disk>assegno è tornato:

obj-id: 23267745 type: Inode

Se avessi aperto il terminale avresti potuto ottenere il percorso del file (o dei file) usando quell'inode usando il seguente comando:

find / -inum 23267745

Da lì avresti saputo quali file dovevano essere ripristinati invece di eseguire un ripristino completo.

Nel mio caso il file VM era disponibile solo nell'istantanea poiché escludo le VM da TimeMachine. Ho ripristinato solo quel file da un'istantanea precedente e sono andato oltre tramite fsck_apfs: ha attraversato il disco per controllare le istantanee e poi bombardato sullo stesso file nella seconda istantanea. Fortunatamente le istantanee vengono conservate per un massimo di 24 ore, quindi dovrebbe essere chiarita dopo quel punto.

Il tuo chilometraggio può tuttavia variare in quanto potrebbe essere "semplice" come un file o solo la punta dell'iceberg.


Vecchio argomento, lo so, ma ora ho la stessa situazione. Inoltre le mie macchine virtuali non si avviano più e non è possibile copiarle. Cosa intendi con "ripristinato solo quel file da un'istantanea precedente"? Usi Time Machine? O qualcos'altro? Escludo anche le mie macchine virtuali da Time Machine. Grazie!
Henry Rusted,

@HenryRusted Ci scusiamo per il ritardo nella risposta ... Sembra che APFS esegua snapshot accessibili tramite tmutil (prova: tmutil listlocalsnapshots /). Anche se escludo le macchine virtuali da TimeMachine sembra che sia stato ancora preso nell'istantanea. Non ricordo il comando esatto che ho usato dal terminale in modalità di ripristino per ripristinare il file dall'istantanea.
CWoods,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.