Apa yang dilakukan dengan fsck -p (preen) pada ext4?

16

Saya sedang membaca posting blog tentang perbaikan sistem file dan penulis memposting pertanyaan yang bagus ... fsck -pseharusnya memperbaiki kesalahan kecil secara otomatis tanpa campur tangan manusia. Tapi apa sebenarnya yang akan diperbaiki ketika diperintahkan untuk merapikan filesystem? Kesalahan apa yang akan diperbaiki, dan apa yang menyebabkannya berhenti dan memberi tahu pengguna dia harus menjalankan fsck secara interaktif? Apakah ada semacam daftar?

Saya telah Googling di sekitar dan semua yang saya temukan adalah halaman manual, yang tidak benar-benar tahu apa yang -pakan diperbaiki atau apa yang memicu bendera langsung. Saya secara khusus tertarik pada filesystem ext4.

Bart Silverstrim
sumber

Jawaban:

18

Jawaban atas pertanyaan Anda terletak pada e2fsck/problems.cfile kode sumber e2fsprogs . Mencari PR_PREEN_OKbendera harus membantu Anda memulai.

Karena penanganan kesalahan yang lengkap sedikit lebih terlibat, karena banyak kondisi kesalahan yang berbeda yang mungkin terjadi, Anda disarankan untuk melihat lebih dekat pada kode jika Anda khawatir tentang kasus tertentu. Namun, daftar di bawah ini diekstraksi dari komentar ke kondisi kesalahan dan harus memberi Anda gambaran kasar tentang efek mode preen.

Kesalahan / peringatan berikut saat ini ditangani secara otomatis ketika -pbendera ditetapkan:

  • Pindahkan petunjuk
  • Inode jurnal tidak valid
  • Superblock jurnal rusak
  • Bendera has_journal Superblock jelas tetapi memiliki jurnal
  • Bendera superblock needs_recovery diatur tetapi tidak ada jurnal
  • Revisi Filesystem adalah 0, tetapi flag fitur diatur
  • Petunjuk Superblock untuk superblok eksternal
  • deskriptor grup N ditandai tidak diinisialisasi tanpa set fitur.
  • grup N memblokir bitmap yang tidak diinisialisasi tetapi menggunakan bitmap inode.
  • Deskriptor grup N memiliki jumlah inode yang tidak digunakan yang tidak valid.
  • Bitmap blok kelompok terakhir tidak diinisialisasi.
  • Bendera test_fs diatur (dan ext4 tersedia)
  • Waktu pemasangan terakhir ada di masa depan (fudged)
  • Waktu penulisan terakhir ada di masa mendatang (fudged)
  • Blokir checksum grup (pertanyaan kait) tidak valid.
  • Direktori root telah ditetapkan dtime
  • Inode yang dipesan memiliki mode buruk
  • Inode yang dihapus memiliki nol waktu
  • Inode digunakan, tetapi dtime diatur
  • Direktori tanpa panjang
  • Inode memiliki ukuran i_size yang salah
  • Inode memiliki i_block yang salah
  • Superblock buruk dalam grup
  • Deskriptor grup blok buruk dalam grup
  • Blok diklaim tanpa alasan
  • Kesalahan mengalokasikan blok untuk merelokasi metadata
  • Kesalahan mengalokasikan buffer blok selama proses relokasi
  • Merelokasi informasi grup metadata dari X ke Y
  • Memindahkan informasi grup metatdata ke X
  • Blokir kesalahan baca selama proses relokasi
  • Blokir kesalahan tulis selama proses relokasi
  • Bendera tidak stabil yang ditetapkan pada perangkat atau soket inode
  • Ukuran bukan nol untuk perangkat, fifo atau soket inode
  • Revisi Filesystem adalah 0, tetapi flag fitur diatur
  • Inode jurnal tidak digunakan, tetapi berisi data
  • Jurnal memiliki mode buruk
  • Bendera INDEX_FL diatur pada sistem file non-HTREE
  • Bendera INDEX_FL ditetapkan pada non-direktori
  • Simpul root tidak valid di direktori HTREE
  • Versi hash yang tidak didukung dalam direktori HTREE
  • Bendera tidak kompatibel di simpul akar HTREE
  • HTREE terlalu dalam
  • inode tidak valid-> i_extra_isize
  • entri ea tidak valid-> e_name_len
  • entri ea tidak valid-> e_value_offs
  • entri ea tidak valid-> e_value_block
  • entri ea tidak valid-> e_value_size
  • entri ea tidak valid-> e_hash
  • inode hilang EXTENTS_FL, tetapi inode luas
  • Inode seharusnya tidak memiliki set EOFBLOCKS_FL
  • Entri direktori telah dihapus atau inode yang tidak digunakan
  • Filetype direktori tidak disetel
  • Filetype direktori diatur pada sistem file
  • Simpul root HTREE tidak valid
  • Batas HTREE tidak valid
  • Jumlah HTREE tidak valid
  • Simpul interior HTREE memiliki hash yang rusak di dalam tabel
  • Inode ditemukan di grup tempat _INODE_UNINIT disetel
  • Inode ditemukan di grup area inode yang tidak digunakan
  • i_blocks_hi harus nol
  • / Hilang + ditemukan tidak ditemukan
  • Inode tanpa panjang nol yang tidak diikat
  • Inode ref count salah
  • Padding pada akhir bitmap inode tidak diatur.
  • Padding pada akhir bitmap blok tidak disetel.
  • Blok header perbedaan bitmap
  • Blokir tidak digunakan, tetapi ditandai dalam bitmap
  • Blokir digunakan, tetapi tidak ditandai digunakan dalam bitmap
  • Blokir perbedaan bitmap berakhir
  • Header perbedaan bitmap inode
  • Inode tidak digunakan, tetapi ditandai dalam bitmap
  • Inode digunakan, tetapi tidak ditandai digunakan dalam bitmap
  • Perbedaan bitmap inode berakhir
  • Inode gratis menghitung kesalahan grup
  • Direktori menghitung kesalahan grup
  • Inode gratis salah menghitung
  • Blok gratis menghitung kesalahan grup
  • Blok gratis salah menghitung
  • Rentang blok tidak digunakan, tetapi ditandai dalam bitmap
  • Rentang blok yang digunakan, tetapi tidak ditandai digunakan dalam bitmap
  • Rentang inode tidak digunakan, tetapi ditandai dalam bitmap
  • Rentang inode digunakan, tetapi tidak ditandai digunakan dalam bitmap
  • Blok N Grup digunakan tetapi grup ditandai BLOCK_UNINIT
  • Inode Grup N digunakan tetapi grup ditandai INODE_UNINIT
  • Buat ulang jurnal jika E2F_FLAG_JOURNAL_INODE ditandai

Kondisi kesalahan berikut ini menyebabkan proses fsck non-interaktif dibatalkan, bahkan jika -pflag disetel:

  • Blokir bitmap tidak dalam grup
  • Bitmap inode tidak dalam grup
  • Tabel inode tidak dalam grup
  • Ukuran sistem file salah
  • Jumlah inode di superblock salah
  • Hurd tidak mendukung fitur tipe file
  • Jurnal memiliki tipe superblok yang tidak dikenal
  • Tanyakan apakah kita harus menghapus jurnal
  • Jurnal superblock memiliki set flag fitur baca-saja yang tidak diketahui
  • Jurnal superblock memiliki kumpulan flag fitur yang tidak diketahui dan tidak kompatibel
  • Jurnal memiliki nomor versi yang tidak didukung
  • Tanyakan apakah kita harus menjalankan jurnal itu
  • Blok yang dicadangkan tanpa resize_inode
  • Resize_inode tidak diaktifkan, tetapi mengubah ukuran inode adalah bukan nol
  • Ubah ukuran inode tidak valid
  • Waktu pemasangan terakhir ada di masa depan
  • Waktu penulisan terakhir ada di masa depan
  • deskriptor grup N checksum tidak valid.
  • Direktori root bukan inode
  • Blok konflik bitmap dengan beberapa blok fs lainnya
  • Konflik bitmap inode dengan beberapa blok fs lainnya
  • Tabel inode bertentangan dengan beberapa blok fs lainnya
  • Blok bitmap ada di blok yang buruk
  • Bitmap inode berada pada blok yang buruk
  • Nomor blok ilegal di inode
  • Nomor blok tumpang tindih fs metadata
  • Inode memiliki blok ilegal (pertanyaan kait)
  • Terlalu banyak blok buruk dalam inode
  • Nomor blok ilegal di inode blok buruk
  • Inode blok buruk memiliki blok ilegal (pertanyaan kait)
  • Blok buruk digunakan sebagai blok tidak langsung blok buruk
  • Inkonsistensi tidak dapat diperbaiki secepatnya
  • Prompt blok utama salah
  • Menekan pesan prompt
  • Bendera bayangan diatur pada sebuah inode ketika filesystem tidak mendukungnya
  • Bendera kompresi ditetapkan pada inode ketika filesystem tidak mendukungnya
  • Berurusan dengan inode yang merupakan bagian dari daftar yatim yang ditautkan
  • Menangani inode yang merupakan bagian dari daftar tautan yatim yang rusak (pertanyaan latch)
  • Kesalahan membaca blok atribut yang diperluas
  • Blok atribut yang diperluas tidak valid
  • Jumlah referensi atribut yang diperluas salah
  • Beberapa blok EA tidak didukung
  • Kesalahan tabrakan alokasi EA
  • Nama atribut diperluas diperpanjang
  • Nilai atribut diperluas yang buruk
  • Inode terlalu besar (pertanyaan kait)
  • Direktori terlalu besar
  • File biasa terlalu besar
  • Symlink terlalu besar
  • Blok buruk memiliki blok tidak langsung yang bertentangan dengan blok sistem file
  • Pengubahan ukuran inode gagal
  • inode tampaknya merupakan direktori
  • Kesalahan saat membaca pohon sebatas
  • Gagal mengulangi luasan
  • Blok awal yang buruk luasnya
  • Extent berakhir di luar filesystem
  • Bendera EXTENTS_FL ditetapkan pada sistem file non-luas
  • inode memiliki luasan, superblock, tidak ada fitur INCOMPAT_EXTENTS
  • Symlink cepat memiliki set EXTENTS_FL
  • Luasnya rusak
  • Inode memiliki simpul sejauh tidak valid
  • Klon duplikat / blok buruk?
  • Nomor inode salah untuk '.'
  • Entri direktori memiliki nomor inode yang buruk
  • Entri arahan adalah tautan ke '.'
  • Titik masuk direktori ke inode sekarang terletak di blok yang buruk
  • Entri direktori berisi tautan ke direktori
  • Entri direktori berisi tautan ke direktori utama
  • Entri direktori memiliki karakter ilegal dalam namanya
  • Hilang '.' dalam inode direktori
  • Tidak ada '..' dalam inode direktori
  • Entri pertama dalam inode direktori tidak mengandung '.'
  • Entri kedua dalam inode direktori tidak mengandung '..'
  • i_faddr harus nol
  • i_file_acl harus nol
  • i_dir_acl harus nol
  • i_frag harus nol
  • i_fsize harus nol
  • inode memiliki mode buruk
  • direktori rusak
  • nama file terlalu panjang
  • Direktori inode memiliki blok (lubang) yang hilang
  • '.' tidak NULL dihentikan
  • '..' bukan NULL yang dihentikan
  • Inode perangkat karakter ilegal
  • Blok inode perangkat ilegal
  • Gandakan '.' masuk
  • Duplikat entri '..'
  • Rec_len akhir salah
  • Kesalahan membaca blok direktori
  • Kesalahan saat menulis blok direktori
  • Entri direktori untuk '.' besar. Membagi?
  • Inode FIFO ilegal
  • Inode soket ilegal
  • Jenis file direktori salah
  • Nama file direktori adalah nol
  • Symlink tidak valid
  • i_file_acl (blok atribut diperluas) buruk
  • Filesystem berisi file besar, tetapi tidak memiliki flag seperti itu di sb
  • Hapus direktori HTREE yang tidak valid
  • Blok buruk di simpul interior htree
  • Entri direktori duplikat ditemukan
  • Ditemukan nama file yang tidak unik
  • i_blocks_hi harus nol
  • Blok HTREE yang tidak terduga
  • Inode root tidak dialokasikan
  • Tidak ada kamar yang hilang + ditemukan
  • Inode direktori tidak terhubung
  • .. entri salah
  • Lost + ditemukan bukan direktori
  • Inode tidak terikat
  • Superblock rusak
  • Fragmen tidak didukung
  • Kesalahan menentukan ukuran perangkat fisik sistem file
  • Jurnal eksternal memiliki (tidak didukung) banyak sistem file
  • Tidak dapat menemukan jurnal eksternal
  • Jurnal eksternal memiliki superblok yang buruk
  • Superblock memiliki jurnal buruk UUID
  • Kesalahan mengalokasikan bitmap inode
  • Kesalahan mengalokasikan bitmap blok
  • Kesalahan mengalokasikan informasi tautan icount
  • Kesalahan mengalokasikan array blok direktori
  • Kesalahan saat memindai inode
  • Kesalahan saat mengulangi blok
  • Kesalahan saat menyimpan informasi jumlah inode
  • Kesalahan saat menyimpan informasi blokir direktori
  • Kesalahan saat membaca inode (untuk kliring)
  • Kesalahan mengalokasikan struktur refcount
  • Kesalahan membaca blok Atribut Diperpanjang saat memperbaiki refcount
  • Galat saat menulis blok Atribut Diperpanjang saat memperbaiki refcount
  • Kesalahan mengalokasikan struktur alokasi wilayah EA
  • Kesalahan saat memindai inode
  • Kesalahan mengalokasikan bitmap inode
  • Kesalahan internal: tidak dapat menemukan dir_info
  • Kesalahan saat mengalokasikan struktur icount
  • Terjadi kesalahan saat mengulang blok direktori
  • Kesalahan saat membatalkan alokasi inode
  • Kesalahan saat menyesuaikan refcount EA
  • Kesalahan mengalokasikan bitmap inode
  • Kesalahan saat membuat direktori root
  • Inode root bukan direktori; batal
  • Tidak dapat melanjutkan tanpa inode root.
  • Kesalahan internal: tidak dapat menemukan dir_info
  • Kesalahan pemrograman: titik akhir bitmap tidak cocok
  • Kesalahan internal: fudging akhir bitmap
  • Kesalahan menyalin dalam bitmap inode pengganti
  • Kesalahan menyalin di bitmap blok pengganti
Nuh
sumber
Nuh jika Anda tahu ini, Apakah mungkin untuk membuat / menyuntikkan semua kesalahan ini (atau mana yang mungkin)? Saya mencoba menyelidiki penyebab kesalahan ini dan kemungkinan solusi dari kesalahan ini.
AnkurTank