Dimensioni del file molto strane (oltre 600 PB) su un piccolo filesystem


21

Avevo un file su un filesystem XFS la cui dimensione era di circa 200 GB. Era un'immagine QCOW2 contenente un disco virtuale di una macchina virtuale guidata da KVM. Qualcosa è andato storto (forse era un problema tecnico di qemu-kvm, non ne sono sicuro), la macchina virtuale si era arrestata in modo anomalo e ora ho un file simile al seguente:

191090708 -rwxr--r--. 1 root root 737571587400425984 Oct 10 10:03 973d10e0-a5e3-4a59-9f98-4b9b9f072ade

Quindi, occupa ancora 191090708 blocchi, ma lo lsmostra come 656 petabyte.

Inoltre, ho un altro file con la stessa preistoria, ma su un altro file system (non XFS, ma GFS2):

410855320 -rwxr--r--. 1 root root 7493992262336241664 Dec 13  2014 ac2cb28f-09ac-4ca0-bde1-471e0c7276a0

Occupa 410855320 blocchi, ma lo lsmostra come ~ 6,6 exabyte.

Cosa ne pensi, è sicuro rimuovere questi file? Grazie!

PS È così bello avere delle istantanee fatte regolarmente! :) Non so cosa farei senza di loro.


Grazie mille per le tue risposte. Certo, conosco i file sparsi, ma la domanda più importante per me è la seguente: è sicuro rimuovere questi file? Come vedo ora, c'è la possibilità di perdere alcuni dati se i filesystem sono danneggiati. Non posso essere sicuro che i filesystem siano a posto, perché non è consigliabile smontarli e controllarli, ma la prima occorrenza è avvenuta 4 mesi fa, la seconda - 14 mesi fa, quindi spero di vedere che ci sono stati filesystem corruzione se ce ne fosse. Cosa pensi?
Volodymyr Melnyk,

Risposte:


31

Riesco a vedere due possibili motivi per vedere queste dimensioni di file:

  • File sparsi
  • Corruzione del file system

I file sparsi sono una funzionalità di alcuni file system in cui è possibile creare un file con buchi. Non viene assegnato spazio fisico per i fori. La lettura attraverso i fori restituirà byte NUL fino in fondo.

Se il motivo di ciò che vedi sono i file sparsi, è sicuro eliminarli come lo sarebbero con un file non sparse.

Se il motivo di ciò che vedi è la corruzione del file system, non è sicuro eliminare i file senza un controllo del file system. Se un file system è corrotto in modo tale che più file dichiarino di occupare lo stesso spazio, l'eliminazione di entrambi i file causerebbe la liberazione di quei blocchi. Una volta riutilizzati quei blocchi liberati, la corruzione peggiora.

Se hai riscontrato altri sintomi che ti fanno pensare che il file system possa essere danneggiato, devi forzare un controllo completo del file system prima di eliminare i file.

Se non ci sono prove che suggeriscono che il file system sia corrotto e che i file sembrano essere sparsi, eliminerei i file una volta che non ne avrò più bisogno.


6

Il problema è il modo in cui si calcola una dimensione del file.

In un modo è guardare l'offset dell'ultimo byte (come ls). L'altro modo è quello di sommare blocchi realmente allocati (come du).

Quello che vedi se probabilmente un file con dati scritti con offset molto grande. Ciò significa che le parti principali dello spazio degli indirizzi dei file non sono allocate. Ma puoi ancora leggerlo.


Grazie. Cosa ne pensi, non andrà in crash nulla se rimuovo solo questi file?
Volodymyr Melnyk,

1
Google "file sparse" per i dettagli.
Kondybas,
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.