Pentingnya fsck saat boot dengan filesystem Journalled?

10

Saya perhatikan bahwa XFS tidak mengimplementasikan fsck pada boot sistem dan salah satu alasan yang disebut-sebut dalam sistem file jurnal membantu memastikan sistem file dalam keadaan konsisten setelah shutdown yang tidak bersih; pada mount berikutnya (mis. setelah reboot) jurnal diputar ulang.

Apakah fsck masih diperlukan setelah shutdown yang tidak bersih dan mengapa?


sumber

Jawaban:

4

Saya menjawab ini dalam konteks umum "filesystem journalled".

Saya berpikir bahwa jika Anda melakukan sejumlah "shutdowns najis" (dengan menarik kabel daya atau sesuatu ) cepat atau lambat Anda akan mendapatkan status sistem file yang akan memerlukan fsckatau setara moral dari fsck xfs_repair,. The ext4fileystsm di laptop saya untuk sebagian besar hanya replay jurnal pada setiap reboot, shutdowns bersih termasuk, tapi setiap sekali-sekali, itu tidak penuh pada fsck.

Tetapi tanyakan pada diri Anda apa yang dicapai "memutar ulang jurnal". Memutar ulang jurnal hanya memastikan bahwa blokir disk dari seluruh sistem file cocok dengan urutan yang diminta oleh jurnal. Memutar ulang jurnal berarti kecil fsck, atau sebagian penuh fsck.

Saya pikir ada beberapa sulap verbal yang terjadi: memutar ulang jurnal merupakan bagian dari apa yang tradisional fscklakukan, dan xfs_repairpersis seperti apa program yang sama e2fs.fsck(atau sistem file lainnya fsck). Orang-orang XFS hanya percaya atau pengalaman mereka menyebabkan mereka tidak berjalan xfs_repairpada setiap boot, hanya untuk memutar ulang jurnal.

Bruce Ediger
sumber
3
Kecuali ada bug dalam kode penjurnalan atau drive disk, tidak ada jumlah shutdown yang tidak bersih dapat meninggalkan disk dalam keadaan yang membutuhkan fsck. ext [34] masih mempertahankan fsck otomatis yang bertele-tele setelah begitu banyak mount sebagian sebagai akumulasi dari ext2 dikombinasikan dengan, yah ... sikap pedantic dari "berjaga-jaga". Setidaknya dalam versi terbaru Ubuntu, ini telah dinonaktifkan secara default.
psusi
Dari pengalaman saya, otomatis fsckbukan 'pedantic'. Saya mengubah sebuah ext3 LVMpartisi menjadi ext4dan mulai mendapatkan kesalahan 'ext4_mb_generate_buddy' karena, seperti yang saya mengerti, menjadi bug dalam ext4kode yang menyebabkan ketidakcocokan dalam salinan bitmap pada disk dan memori dalam-bit pada partisi 'LVM' yang dikonversi. Sejauh yang saya tahu fsck, tidak ada korupsi terjadi. Solusinya adalah dengan mematikan UNINIT_BGopsi atau memindahkan data dan menginisialisasi ulang partisi sebagai ext4; Saya mengambil kursus terakhir. Tapi saya masih berpikir beberapa menit menunggu fsckbernilai tidak kehilangan data!
StarNamer
1
Ada banyak informasi yang hilang dari jawaban ini maka undian dan jawab yang lain.
symcbean
4

membantu memastikan sistem file dalam keadaan konsisten setelah shutdown yang tidak bersih

Hal pertama yang perlu diperhatikan adalah bahwa XFS, reiser dan sebagian besar konfigurasi ext hanya mengimplementasikan penjurnalan meta-data, yang semuanya tentang menghindari fsck. Jurnal tidak selalu diputar ulang saat start up - jurnal ini dapat dibuang jika tidak lengkap.

Ada beberapa sistem yang mendukung penjurnalan data lengkap - tetapi dalam praktiknya tingkat kepastian pemberian ini hanya penjurnalan meta-data sangat kecil dalam skenario dunia nyata.

Jadi 'keadaan tidak konsisten', dan masalah yang diperbaiki oleh fsck, adalah ketidakcocokan antara meta-data dan file itu sendiri. Untuk menghindari hal ini, OS menuliskan perubahan meta data yang diusulkan ke jurnal, lalu menulis data aktual ke disk, lalu menerapkan perubahan data meta yang direplikasi dalam jurnal ke disk. Satu-satunya masalah dengan ini adalah bahwa pengontrol disk akan buffer dan berpotensi menyusun ulang permintaan. Untuk menghindari hal ini, kebanyakan filesystem jurnal menerapkan hambatan: mereka memisahkan setiap operasi dan menunggu disk untuk mengakui bahwa ia telah menyelesaikan operasi. Tetapi banyak disk modern benar-benar mengakui penyelesaian penulisan sebelum data dilakukan. Karenanya, segala sesuatunya bisa berantakan.

Apakah fsck masih diperlukan setelah shutdown yang tidak bersih dan mengapa

Sebagian besar filesystem mempertahankan jumlah mount - setelah jumlah ini tercapai, fsck penuh akan terpicu pada upaya berikutnya untuk me-mount disk. Alasannya adalah bahwa data disk dapat rusak bahkan ketika itu tidak ditulis secara eksplisit, bahkan tanpa bug dalam perangkat lunak. Komentar psusi di atas salah.

symcbean
sumber
Anda mengacaukan pemesanan dengan hambatan. Disk tidak melaporkan penulisan sebagai selesai sebelum mereka mencapai disk kecuali Anda mengaktifkan cache tulis, yang dinonaktifkan secara default di disk tingkat konsumen, jadi dengan mereka, fs hanya perlu menunggu satu penulisan selesai sebelum sebelum menerbitkan berikutnya . Untuk perangkat keras dengan cache tulis, hambatan digunakan untuk mencegah penyusunan ulang dan memaksa disk mem-flush cache tulisnya, sehingga menjaga agar fs tidak rusak.
psusi
1
psusi - apa yang telah Anda merokok? "Disk tidak melaporkan menulis sebagai selesai sebelum ..." - ya mereka lakukan. "aktifkan cache tulis, yang dinonaktifkan secara default" - bukan pada disk apa pun yang pernah saya konfigurasi. "Hambatan digunakan untuk mencegah pemesanan ulang" - tetapi Anda mengatakan saya "menyatukan pesanan dengan penghalang"
symcbean
Tidak, mereka tidak. Jika Anda tidak mengaktifkan cache tulis disk ( hdparm -W), maka disk tersebut tidak menyelesaikan permintaan tulis hingga berada pada medium. Menurut Anda mengapa opsi itu ada? Hambatan mencegah pemesanan ulang saat beberapa permintaan dikeluarkan. Tanpa hambatan, fs tidak akan mengeluarkan lebih banyak permintaan sampai yang sebelumnya selesai, sehingga menjaga pemesanan tanpa hambatan ... asalkan cache tulis disk tidak diaktifkan. Tujuan dari penghalang adalah untuk memungkinkan Anda mengaktifkan cache tulis, tanpa merusak fs pada crash.
psusi
Ups, saya agak bingung di sana dan lupa sync. Biarkan saya coba lagi. Prosedur untuk menulis ke disk tanpa hambatan adalah menulis ke jurnal sync, sehingga membuang semua cache tulis, lalu menulis data yang sebenarnya. Ini memastikan jurnal selalu dapat digunakan untuk memulihkan fs setelah crash, tetapi sinkronisasi memperlambat dan setengahnya mengalahkan tujuan cache tulis. Dengan demikian hambatan ditambahkan sebagai pengganti yang lebih baik sync, dan dengan dukungan disk yang tepat, mereka dapat dengan aman mendapatkan kembali sebagian besar kinerja yang disinkronkan dengan sinkronisasi.
psusi
2

Tidak perlu fsck filesystem jurnal hanya karena shutdown yang tidak bersih.

The seluruh alasan untuk bertahan hukuman kinerja runtime dari journal metadata adalah untuk memastikan bahwa sistem berkas dapat dibuat 100% konsisten lagi dengan secara otomatis memutar log metadata pada berikutnya me-mount, jika filesystem tidak bersih unmount.

Peran fsck hanyalah untuk memastikan konsistensi metadata, jadi itu berlebihan untuk menjalankan fsck hanya karena sistem file tidak di-unmount dengan benar.

Sistem file jurnal bisa rusak karena alasan lain, - kegagalan perangkat keras, bug driver, kesalahan admin, dll. - jadi alat fsck tentu diperlukan. Tidak ada alasan untuk memohon mereka hanya karena shutdown yang tidak bersih.

Eric Sandeen
sumber
bagaimana dengan memanggil mereka setiap 'n' reboot? berguna? atau hanya menunggu masalah untuk dilaporkan dan kemudian jalankan fsck?
simpleuser