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 fsck
atau setara moral dari fsck xfs_repair
,. The ext4
fileystsm 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 fsck
lakukan, dan xfs_repair
persis 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_repair
pada setiap boot, hanya untuk memutar ulang jurnal.
fsck
bukan 'pedantic'. Saya mengubah sebuahext3
LVM
partisi menjadiext4
dan mulai mendapatkan kesalahan 'ext4_mb_generate_buddy' karena, seperti yang saya mengerti, menjadi bug dalamext4
kode yang menyebabkan ketidakcocokan dalam salinan bitmap pada disk dan memori dalam-bit pada partisi 'LVM' yang dikonversi. Sejauh yang saya tahufsck
, tidak ada korupsi terjadi. Solusinya adalah dengan mematikanUNINIT_BG
opsi atau memindahkan data dan menginisialisasi ulang partisi sebagaiext4
; Saya mengambil kursus terakhir. Tapi saya masih berpikir beberapa menit menunggufsck
bernilai tidak kehilangan data!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.
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.
sumber
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.sync
. Biarkan saya coba lagi. Prosedur untuk menulis ke disk tanpa hambatan adalah menulis ke jurnalsync
, 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 baiksync
, dan dengan dukungan disk yang tepat, mereka dapat dengan aman mendapatkan kembali sebagian besar kinerja yang disinkronkan dengan sinkronisasi.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.
sumber