fsck tidak akan fsck (tidak dapat mengatur bendera superblock)


12

Setelah shutdown yang tidak bersih pada perangkat berbasis kartu SD, saya membawa kartu SD ke fscksistem file root. Ini menyebabkan variasi pada hal-hal berikut:

e2fsck 1.43.1 (08-Jun-2016)
/dev/sdc2: recovering journal
Superblock needs_recovery flag is clear, but journal has data.
Run journal anyway<y>? no
Clear journal<y>? no
e2fsck: unable to set superblock flags on /dev/sdc2

Di sini saya sudah menjawab "tidak" kedua kali tetapi tidak ada urutan ya / tidak yang tidak langsung mengarah ke hasil yang sama.

Sistem file dapat dipasang dan pada inspeksi biasa tampak oke; itu juga berfungsi dengan baik di perangkat, dan itulah sistem file root (sebenarnya ternyata tidak terlalu baik, lihat komentar; tldr beberapa direktori yang rusak diperbaiki).

Saya ddpartisi (8 GB) ke file, dan mencoba fsck itu. Menariknya:

e2fsck 1.43.1 (08-Jun-2016)
plush.rootfs: recovering journal
Clearing orphaned inode 18290 (uid=0, gid=0, mode=0100644, size=34096)
Clearing orphaned inode 18270 (uid=0, gid=0, mode=0100644, size=38916)
Clearing orphaned inode 18250 (uid=0, gid=0, mode=0100644, size=1128076)
Clearing orphaned inode 11411 (uid=0, gid=0, mode=0100644, size=293108)
Setting free inodes count to 406127 (was 408580)
Setting free blocks count to 1305622 (was 1347486)
plush.rootfs: clean, 60209/466336 files, 604906/1910528 blocks (check after next mount)

Setelah fscklulus bersih, gambar bisa dipasang, dan fsck -fsetelah itu berlalu juga.

Tetapi filesystem pada kartu dari mana gambar copy blok mentah dibuat masih memiliki masalah yang sama - kecuali bahwa systemd-fsckyang terjadi saat boot log filesystem sebagai "bersih". Namun selanjutnya, shutdown yang tepat, mengeluarkan kartu, dan mencoba fscklagi dari kotak lain menyajikan kesalahan yang sama.

Setiap kali dokumen asli dipasang pada komputer lain, syslog mencatat:

kernel: EXT4-fs (sdc2): 4 orphan inodes deleted
kernel: EXT4-fs (sdc2): recovery complete

Karena saya memiliki semuanya didukung, saya terbuka untuk mencoba apa pun di sini. Saya dapat dengan mudah melupakan hal ini dan mengembalikan partisi dari gambar yang tampaknya sudah diperbaiki, tetapi itu tidak tampak seperti solusi yang sangat memuaskan, karena itu berarti mengasumsikan fsck gagal dalam memecahkan masalah yang tampak kecil.

Saya menduga ini akan berubah menjadi pertanyaan "permintaan untuk dokumentasi resmi" mengenai hal-hal seperti kebutuhan recovery_flag (atau sekadar pertanyaan "Apa artinya ini?"), Jadi saran apa pun yang disarankan sangat dihargai.


Ada yang ada di kernel log tentang kesalahan perangkat? Ini bukan pertama kalinya kartu SD tiba-tiba menjadi hanya-baca.
Mark Plotnick

@MarkPlotnick Tidak, dan dapat ditulis. Hal terakhir dalam log dari sebelum masalah adalah systemd restart (perangkat tidak memiliki kepala dan menjadi tidak responsif setelah lama apt upgrade). Setelah itu log boot normal - dan systemd-fsck mengatakan "clean" (saya akan mengeditnya), tetapi mencoba fsck di luar konteks itu masih gagal.
goldilocks

Fsck Anda pada salinan menghapus 4 inode, tetapi memperbaiki jumlah inode gratis dengan menguranginya sebanyak 2453 inode! Itu luar biasa. Pastikan perangkat mendapatkan daya yang cukup.
meuh

@meuh saya perhatikan setiap kali itu terpasang pada kotak besar syslog mengacu pada 4 inode (diedit di atas). Beberapa hal di fs ternyata menjadi kacau (modul kernel yang diperbarui! \ O /) jadi saya telah membakar kartu baru dan akan bertahan dengan yang lama kalau-kalau saya memiliki kesempatan untuk menggali lebih dalam ini. Ini bukan hal yang baru - kartu bin bargain murah kelas 10, dalam penggunaan (tugas ringan) 24/7 selama mungkin beberapa tahun jadi ... Saya tidak berpikir ada cara untuk memverifikasi kartu SD sudah pasti tidak berfungsi , tapi saya kira bisa jadi itu. Kekuatannya harus oke tapi mungkin rapuh dalam kondisi tertentu.
goldilocks

2
Tidakkah itu menyedot ketika alat yang seharusnya memperbaiki masalah Anda, tidak berfungsi karena sifat masalahnya? Kesimpulan: Alat ini buruk dan harus diperbaiki.
Marc.2377

Jawaban:


11

Saya hanya mengalami masalah yang sama. Setelah men-debug masalah dengan e2fsckpengelola, kami menyadari bahwa kartu SD rusak. Itu menerima penulisan tanpa kesalahan, tetapi itu sebenarnya tidak menulis data ke kartu. Kartu SD hanya efektif dibaca.

Sepertinya kartu telah masuk ke semacam mode gagal aman, di mana data masih bisa dibaca, tetapi tidak ada yang ditulis.

The e2fsckpesan unable to set superblock flagsberarti itu mencoba untuk menulis ke superblok untuk menandai jurnal sebagai diproses, yang terjadi tanpa kesalahan, tetapi ketika ia pergi untuk membaca superblock kembali lagi masih menunjukkan bahwa jurnal perlu diputar. Dengan kata lain, perubahan yang ditulis ke superblok tidak disimpan pada media penyimpanan.

Kartu yang saya gunakan yang memiliki masalah ini adalah microSD Samsung Evo 16GB, yang saya sebutkan kalau-kalau itu adalah masalah umum dengan kartu-kartu ini.

Saya dapat menguji ini dengan menggunakan dduntuk menulis 4096 byte dari /dev/zeroke kartu di blok 0, kemudian saya membaca kembali dari kartu dan bukannya mendapatkan semua nol seperti yang seharusnya, saya masih mendapatkan superblock ext4 asli tidak berubah.

Saya sekarang sedang dalam proses memindahkan data ke kartu baru dan kemudian melihat apakah saya bisa mendapatkan pengganti dari Samsung, yang tampaknya menawarkan garansi 10 tahun pada kartu SD.

UPDATE: Samsung mengganti kartu 16GB dengan kartu 32GB dalam seri Evo yang sama, jadi saya kira saya tidak bisa mengeluh terlalu banyak!


"di mana data masih bisa dibaca, tetapi tidak ada yang ditulis" -> Fs dapat ditulis.
goldilocks

@goldilocks: Kedengarannya seperti superblok fs Anda mungkin belum dapat ditulisi. Juga, fs saya nampak dapat ditulis berkat caching, hanya setelah meng-unmount dan meng-remount saya perhatikan ada perubahan yang hilang.
Malvineous

Itu bukan ilusi karena caching.
goldilocks

7

Saya tahu ini adalah utas lama, tapi, saya pikir saya akan menawarkan beberapa wawasan.

Ini tampaknya menjadi cara kartu sd mati secara alami. Jumlah siklus baca / tulis yang dapat diterima kartu sd jauh lebih rendah daripada sebagian besar media lain yang dianggap 'baca / tulis'. Ketika itu telah habis, kartu akan masuk ke mode hanya baca, tetapi tidak akan memberi tahu Anda tentang itu. Banyak hal akan berpikir mereka menulis ke kartu berkat caching OS, dll, tetapi tidak ada yang pernah menempel.

Cara yang bagus untuk membunuh kartu sd adalah memasangnya sebagai partisi swap atau sesuatu yang sangat baca / tulis intensif. Anda akan terkejut betapa cepatnya Anda dapat membunuh kartu dengan cara itu. Saya telah menemukan bahwa menjalankan knoppix off dari kartu sd atau usb thumb drive hanya akan bertahan satu atau dua bulan, tergantung pada kualitas kartu dan intensitas penggunaan knoppix. (Sejak itu saya beralih ke menjalankan knoppix off dari drive SSD usb yang telah berlangsung beberapa tahun sekarang).

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.