pengembangan-web-mp-pd.com

Mengapa Anda tidak bisa fsck partisi yang dipasang?

Sudah diketahui umum bahwa Anda tidak boleh fsck partisi yang dipasang. Saya dapat memahami bagaimana ini dapat dengan mudah menyebabkan korupsi jika filesystemnya ditulis ke oleh fsck (misalnya, opsi -a digunakan), tetapi mengapa pemeriksaan read-only tidak dapat dijalankan pada disk yang terpasang ?

43
mike

Dari:

http://linux.die.net/man/8/fsck.ext

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

28
MathewC

Masalah mendasarnya adalah bahwa pemeriksa sistem file (biasanya) bukan bagian dari sistem file. Sebaliknya itu adalah program terpisah yang membaca dan menulis ke disk yang sama dengan kode sistem file di kernel. Akibatnya, jika Anda menjalankan fsck pada sistem file yang aktif, Anda memiliki dua entitas berbeda yang membaca (dan berpotensi memodifikasi) data yang sama (disk), tetapi mereka tidak saling berkoordinasi dengan cara apa pun. Hasilnya, seperti yang telah ditunjukkan oleh orang lain, adalah bahwa sebagian besar checker berharap bahwa tidak ada orang lain yang mengubah metadata sistem file saat mereka berjalan. Mereka akan bingung dan/atau melaporkan kesalahan palsu jika sistem file kernel mengubah sesuatu yang tidak diharapkan oleh pemeriksa.

Ada beberapa sistem file dengan checker yang secara eksplisit dirancang untuk dijalankan "on-line" (mis., Ketika sistem file aktif). Versi FFS/UFS yang lebih baru melakukan ini dengan menjalankan fsck terhadap snapshot sistem file terbaru (replika read-only, point-in-time, copy-on-write). Jika menemukan masalah, seperti inkonsistensi dalam alokasi bit-peta, itu mengoreksi mereka melalui system call, bukan dengan menulis ke disk mentah. Ini memungkinkannya berkoordinasi dengan sistem file yang aktif.

WAFL NetApp juga memiliki alat pengecekan online. Mungkin ada yang lain.

31
Keith Smith

Menjalankan fsck pada partisi yang dipasang baca-tulis akan konyol, bahkan dengan fsck dalam mode baca-saja. Filesystem akan berubah di bawah fsck, dan di dalam memori data yang cache fsck dari filesystem akan menjadi tidak valid (dan dengan demikian fsck akan melihat inkonsistensi). Anda dapat menjalankan fsck pada sistem file yang dipasang hanya baca dalam mode baca-saja dan mendapatkan hasil yang valid. Menjalankan fsck dalam mode baca/tulis pada sistem file yang dipasang hanya baca, jika fsck membuat perubahan pada sistem file selama menjalankannya, akan menyebabkan kernel melihat struktur sistem file berubah secara tak terduga di bawahnya. Itu juga akan buruk.

11
Evan Anderson

Terlepas dari kenyataan bahwa itu mungkin akan membunuh throughput I/O Anda, jika filesystem sedang dimodifikasi saat sedang fsck maka tidak ada cara fsck bisa melacak perubahan dan melaporkan ketidaknyamanan.

Beberapa filesystem seperti XFS memungkinkan Anda melakukan pemeriksaan untuk konsistensi sementara filesystem di-mount baca-tulis, dengan peringatan bahwa kesalahan palsu kemungkinan akan dilaporkan. xfs_check merekomendasikan sistem file dilepas atau dipasang hanya-baca sebelum melakukan pemeriksaan.

9
Kamil Kisiel

Nah, maksud dari fsck adalah untuk melaporkan ketidakkonsistenan sistem file, yang dilanggar oleh invarian.

Namun banyak dari pemeriksaan ini melibatkan lebih dari satu FS struktur. Jika seseorang memodifikasi FS (menulis data), struktur ini mungkin sementara tidak sinkron. fsck akan melihat ini sebagai inkonsistensi, meskipun sebenarnya bukan masalah. fsck tidak memiliki cara untuk mengetahui apakah inkonsistensi hanya sementara, atau masalah permanen yang perlu diperbaiki. Jadi ini tidak mungkin bekerja (Kecuali a FS dirancang khusus untuk memungkinkan pemeriksaan online. Ada yang melakukannya, tetapi ext3 tidak).

6
sleske

Anda bisa. fsck -n/dev/sda1 akan melakukan hal itu, setidaknya pada ext3. Saya baru saja mengujinya :)

3
Sven