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
- C'è un modo per risolvere questo problema (senza riformattare e ripristinare dal backup)?
- Qual è il modo migliore per evitarlo in futuro (soprattutto per quanto riguarda Time Machine)?
Grazie.
Aggiornare
Quando si esegue fsck_apfs
con 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.