Saya punya file di sistem file XFS yang ukurannya sekitar 200 GB. Itu adalah gambar QCOW2 yang berisi disk virtual mesin virtual yang digerakkan KVM. Ada yang salah (mungkin itu adalah kesalahan qemu-kvm, saya tidak yakin), mesin virtualnya mogok dan sekarang saya memiliki file yang terlihat seperti itu:
191090708 -rwxr--r--. 1 root root 737571587400425984 Oct 10 10:03 973d10e0-a5e3-4a59-9f98-4b9b9f072ade
Jadi, masih menempati 191090708 blok, tetapi ls
menunjukkannya sebagai 656 petabyte.
Terlebih lagi, saya memiliki file lain dengan pra-sejarah yang sama, tetapi pada sistem file lain (bukan XFS, tetapi GFS2):
410855320 -rwxr--r--. 1 root root 7493992262336241664 Dec 13 2014 ac2cb28f-09ac-4ca0-bde1-471e0c7276a0
Ini menempati 410855320 blok, tetapi ls
menunjukkan sebagai ~ 6,6 exabytes.
Bagaimana menurut Anda, apakah aman untuk menghapus file-file ini? Terima kasih!
NB Sangat bagus untuk mengambil foto secara teratur! :) Saya tidak tahu apa yang akan saya lakukan tanpa mereka.
Jawaban:
Saya dapat melihat dua kemungkinan alasan bagi Anda untuk melihat ukuran file tersebut:
File jarang adalah fitur pada beberapa sistem file di mana Anda dapat membuat file dengan lubang di dalamnya. Tidak ada ruang fisik yang dialokasikan untuk lubang. Membaca melintasi lubang akan mengembalikan NUL byte sepanjang jalan.
Jika alasan apa yang Anda lihat adalah file jarang, maka aman untuk menghapusnya seperti halnya file yang tidak jarang.
Jika alasan yang Anda lihat adalah kerusakan sistem file, maka tidak aman untuk menghapus file tanpa pemeriksaan sistem file. Jika sistem file rusak dengan cara di mana banyak file mengklaim menempati ruang yang sama, maka menghapus file mana pun akan menyebabkan blok tersebut dibebaskan. Setelah blok-blok yang dibebaskan digunakan kembali, korupsi menjadi semakin buruk.
Jika Anda telah melihat gejala lain yang membuat Anda berpikir sistem file mungkin rusak, Anda harus memaksakan pemeriksaan penuh sistem file sebelum menghapus file.
Jika tidak ada bukti yang menunjukkan sistem file rusak, dan file tampaknya jarang, saya hanya akan menghapus file setelah saya tidak membutuhkannya lagi.
sumber
Masalahnya adalah cara Anda menghitung ukuran file.
Salah satu caranya adalah mencari offset byte terakhir (seperti ls). Cara lain adalah dengan menjumlahkan blok yang benar-benar dialokasikan (seperti du).
Apa yang Anda lihat jika mungkin file dengan data yang ditulis dengan offset sangat besar. Berarti bagian utama ruang alamat file Anda tidak dialokasikan. Tetapi Anda masih bisa membacanya.
sumber