Paksa fsck.ext4 di reboot, tapi benar-benar "kuat"

21

Salah satu server Ubuntu 10.04 saya memberi saya masalah. Ketika saya menjalankannya fsck.ext4 -n /dev/sda5memberitahu saya ada kesalahan dalam jumlah inode gratis, jumlah blok gratis, dan banyak lagi.

Saya telah mencoba:

touch /forcefsck

Juga mencoba:

shutdown -rF now

dan masih, setelah reboot, saya melihat kesalahan.

Saya juga baru memeriksa netbook eeePC saya, Ubuntu 10.10, dan memiliki masalah yang sama!

Bagaimana saya bisa memaksakan "fsck" filesystem "" "paksa" yang saya perbaiki dengan benar pada sistem reboot?

Klarifikasi: Saya menjalankan fsck.ext4 -nkarena itu adalah sistem file yang dipasang, untuk memeriksa apakah ada kesalahan. Ini memberitahu saya bahwa ada. Saya pikir fsck otomatis setiap 30 mount selama proses boot-up adalah tepatnya untuk mengatasi kesalahan pada sistem file root. Tapi itu tidak berhasil dalam kasus saya. Saya bisa reboot dengan LiveCD dan memperbaiki kesalahan, dan kemudian reboot lagi, tapi itu beberapa downtime yang serius untuk server langsung. A reboot, auto fsck, lalu melanjutkan booting jauh lebih berkelanjutan di server langsung, dan saya percaya seharusnya perilaku yang tepat.

Info tambahan: Ini adalah output. Sepertinya sesuatu yang akan diperbaiki autofsck, bukan?

root@server:~# fsck.ext4 -n /dev/sda5
e2fsck 1.41.11 (14-Mar-2010)
Warning!  /dev/sda5 is mounted.
Warning: skipping journal recovery because doing a read-only filesystem check.
/dev/sda5 contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Free blocks count wrong (1849368, counted=1948909).
Fix? no

Free inodes count wrong (545504, counted=552134).
Fix? no


/dev/sda5: ********** WARNING: Filesystem still has errors **********

/dev/sda5: 116752/662256 files (0.2% non-contiguous), 795324/2644692 blocks
UrkoM
sumber
apa versi server Ubuntu yang Anda gunakan?
crncosta
10,04. Saya akan mengedit pertanyaan saya.
UrkoM
Saya tidak berpikir Anda benar-benar dapat melakukan itu, bahkan Anda mungkin lebih baik melakukan pemeriksaan secara manual.
RolandiXor
1
Maaf tapi saya masih butuh info lebih lanjut. Apakah Anda melakukan fsck pada sistem file yang di-mount? dapatkah Anda mem-boot dari LiveCD dan memeriksa lagi (dengan / dev / sda5 Anda dilepas)?
crncosta
Mungkinkah itu bukan sistem file tetapi hard drive rusak? Dalam hal ini diharapkan bahwa ext4 tidak memperbaiki kesalahan dan hanya ada beberapa bad sector.
Stefano Palazzo

Jawaban:

10

Dari halaman manual e2fsck:

"Perhatikan bahwa secara umum tidak aman untuk menjalankan e2fsck pada sistem file yang terpasang. Satu-satunya pengecualian adalah jika opsi -n ditentukan, dan opsi -c, -l, atau -L tidak ditentukan. Namun, bahkan jika itu aman untuk melakukannya, hasil yang dicetak oleh e2fsck tidak valid jika filesystem di-mount. Jika e2fsck bertanya apakah Anda harus memeriksa sistem file yang di-mount, satu-satunya jawaban yang benar adalah '' tidak ''. Hanya ahli yang benar-benar tahu apa yang mereka lakukan harus mempertimbangkan menjawab pertanyaan ini dengan cara lain apa pun. "

Jadi jika Anda memeriksa FS yang dipasang dengan fsck bahkan menggunakan opsi -n hasilnya mungkin tidak valid sama sekali. Jangan periksa sistem file yang terpasang. Gunakan Live-CD / Live-USB.

Jika Anda tidak memeriksa sistem file saat sedang di-mount, saya tidak mengerti mengapa Anda perlu menggunakan touch /forcefsckAnda hanya bisa meng-unmount dan memperbaikinya. Tetapi jika itu masalahnya dan setelah perbaikan, FS Anda masih memiliki kesalahan maka Anda dapat mempertimbangkan untuk menggunakan:

e2fsck -cy /dev/sda5

Itu akan memperbaiki masalah terkait hard drive yang disebut blok buruk yang mungkin Anda miliki (ini akan memakan waktu lama).

Jika Anda ingin memeriksa sistem file yang terpasang, saya tidak tahu bagaimana melanjutkannya tetapi saya pikir Anda harus membuat pertanyaan lain.

Nyamiou The Galeanthrope
sumber
Anda benar, sistem file sudah terpasang. Dan tentu saja saya perlu melakukan fsck ketika dilepas. Tapi saya menjalankan fsck -n untuk memeriksa saat dipasang, tanpa membuat perubahan, dan itu memberitahu saya ada kesalahan. Dan bukankah fsck pada reboot memperbaikinya ???
UrkoM
Saya baru saja memperhatikan apa yang Anda katakan dalam kalimat pertama: mengapa fsck -n tidak valid pada sistem file yang di-mount? Bagaimana saya bisa memeriksa apakah sistem file yang dipasang memiliki kesalahan dengan cara yang dapat diandalkan?
UrkoM
Anda dapat memeriksa halaman manual e2fsck yang mengatakan: "Perhatikan bahwa secara umum tidak aman untuk menjalankan e2fsck pada sistem file yang di-mount. Satu-satunya pengecualian adalah jika opsi -n ditentukan, dan opsi -c, -l, atau -L adalah tidak ditentukan. Namun, bahkan jika itu aman untuk dilakukan, hasil yang dicetak oleh e2fsck tidak valid jika sistem file sudah terpasang. Jika e2fsck bertanya apakah Anda harus memeriksa sistem file yang dipasang, satu-satunya jawaban yang benar adalah '' tidak. Hanya ahli yang benar-benar tahu apa yang mereka lakukan harus mempertimbangkan menjawab pertanyaan ini dengan cara lain. "
Nyamiou The Galeanthrope
Saya tidak tahu cara memeriksa sistem file yang dipasang mungkin Anda harus membuat pertanyaan lain.
Nyamiou The Galeanthrope
Bisakah Anda menambahkan dua komentar terakhir ke jawaban Anda? Maka saya akan menerimanya. Saya tidak tahu itu, jadi itu sebabnya ... Saya pikir itu karena fsck -n tidak memproses jurnal, sehingga keadaan sistem file tidak konsisten tanpa melihat perubahan terbaru yang disimpan di sana.
UrkoM
24

Saya tahu ini adalah utas yang benar-benar lama, tetapi saya baru-baru ini harus menyelesaikan masalah ini jadi saya ingin memposting cara memaksa OS untuk memperbaiki masalah yang ditemukan dengan fsck selama bootup (untuk 12,04).

Anda perlu menjalankan perintah sudo touch /forcefsck. Ini akan menyebabkannya melakukan fsck pada boot berikutnya. Anda dapat melihat hasil dari fsck di /var/log/boot.log.

Namun, Anda tidak dijamin bahwa fsck akan memperbaiki apa pun yang ditemukannya. Untuk melakukan ini, Anda perlu mengedit file / etc / default / rcS. Ada baris di akhir file itu:

FSCKFIX=no

Ini perlu diubah sebagai berikut:

FSCKFIX=yes

Ini akan memiliki efek yang sama seperti menjalankan fsck dengan opsi -y yang akan memaksa semua perbaikan yang mungkin dilaksanakan dan tidak akan meminta interaksi pengguna.

Ini akan memungkinkan Anda untuk menjalankan fsck seperti yang diminta OP tanpa harus menggunakan booting dari live disk yang tidak selalu memungkinkan terutama jika Anda menggunakan sistem jarak jauh.

Brian
sumber
1
Mengedit entri ini pada instance EC2 Ubuntu saya bersama dengan sudo touch /forcefsckdan sudo shutdown -rperintah berhasil menyelesaikan masalah sistem file dan peringatan centang saat masuk. Mudah dan tidak mengganggu - tepuk tangan.
c.gutierrez
Pertanyaan yang sama ditanyakan pada Server Fault, dan jawaban ini juga yang bekerja untuk saya, pada sistem Ubuntu 14.04. Hanya melakukan sudo touch /forcefsckdan kemudian reboot tidak; pengeditan rcSdiperlukan.
Teemu Leisti
12
sudo touch /forcefsck
sudo reboot

Anda mendapat kesalahan ketik - Anda menyentuh / forcefcsk. "C" dan "s" ditukar. fsck adalah kependekan dari FileSystemChecK.

Dan Benamy
sumber
Ini tidak akan berfungsi untuk saya karena filesystem root sudah di-mount hanya karena kesalahan yang saya perbaiki fsck! Masalah ayam dan telur yang hanya bisa diselesaikan melalui liveCD atau menarik drive ke komputer lain.
HDave
3

Anda tidak dapat memaksa fsck pada / yang akan diperbaiki karena partisi sedang digunakan. Coba jalankan pemeriksaan dari partisi lain atau live cd.

charlie-tca
sumber
2
Sangat benar, tetapi fsck otomatis saat booting harus terjadi sebelum partisi sedang digunakan, tepatnya untuk dapat memperbaiki kesalahan pada "/". Kalau tidak, apa gunanya?
UrkoM
3
Saya percaya cek itu terjadi sebelum digunakan, namun, ini lebih merupakan cek penasehat. Terserah Anda untuk memutuskan bagaimana cara memperbaiki kesalahan. Pemeriksaan yang mudah adalah ketika melihat / etc / fstab. Tanda "/" akan mendapat centang berbeda dari partisi lainnya.
charlie-tca
Apakah itu terjadi sebelum root digerakkan? yaitu. Disk Ram Awal.
mckenzm
1

Anda dapat melakukan revisi secara otomatis dengan cara berikut:

Tune2fs -c 5 -i 10 / dev / sda1

-cadalah jumlah maksimum pemasangan sebelum berjalan fsckdan -ijumlah maksimum hari sebelum berjalan fsck.

Dalam hal ini akan dilakukan setiap 5 gunung atau setiap 10 hari, mana yang lebih dulu.

Saya memiliki dua komputer, satu dengan Linux SuSE 13.2 dan yang lainnya dengan Linux Mint 18.0 dan keduanya berfungsi dengan baik.

hk3jld
sumber
Apa saja bentuk dan komentar dalam formulir otomatis sebagai berikut: Tune2fs -c 5 -i 10 / dev / sda1 Di mana: -c adalah jumlah maksimum mount sebelum menjalankan fsck Di mana: -i adalah jumlah hari maksimum sebelum menjalankan fsck Dalam hal ini akan dilakukan setiap 5 gunung atau setiap 10 hari, mana yang lebih dulu. Saya memiliki dua komputer, satu dengan Linux SuSE 13.2 dan yang lainnya dengan Linux MInt 18.0 dan keduanya bekerja dengan sempurna.
hk3jld
Apa saja bentuk dan komentar dalam formulir otomatis sebagai berikut: Tune2fs -c 5 -i 10 / dev / sda1 Di mana: -c adalah jumlah maksimum mount sebelum menjalankan fsck Di mana: -i adalah jumlah hari maksimum sebelum menjalankan fsck Dalam hal ini akan dilakukan setiap 5 gunung atau setiap 10 hari, mana yang lebih dulu. Saya memiliki dua komputer, satu dengan Linux SuSE 13.2 dan yang lainnya dengan Linux MInt 18.0 dan keduanya bekerja dengan sempurna. Saya tidak tahu bahasa Inggris tetapi saya menggunakan penerjemah, saya harap pelatihannya baik
hk3jld
1
Apakah ini berfungsi di Ubuntu juga?
George Udosen
0

touch /forcefscksendiri tidak memastikan sistem saya berjalan fsckpada boot berikutnya. Saya juga perlu menjalankan:

sudo tune2fs -c 1 /dev/<my partition>

misalnya

sudo tune2fs -c 1 /dev/sda1

Penjelasan lebih lanjut yang saya temukan ada di sini: Cara Memaksa fsck untuk memeriksa sistem file setelah reboot

Jam ZHONG
sumber