Apakah sistem file jurnal menjamin terhadap korupsi setelah listrik padam?

28

Saya mengajukan pertanyaan ini atas nama pengguna lain yang mengangkat masalah di ruang obrolan Ubuntu.

Apakah filesystem penjurnalan menjamin bahwa tidak ada korupsi yang akan terjadi jika listrik padam?

Jika jawaban ini tergantung pada sistem file, harap tunjukkan mana yang benar-benar terlindungi dari korupsi dan mana yang tidak.

Nathan Osman
sumber

Jawaban:

21

Tidak ada jaminan. Sistem File Jurnal lebih tangguh dan kurang rentan terhadap korupsi, tetapi tidak kebal.

Semua jurnal adalah daftar operasi yang baru-baru ini dilakukan untuk sistem file. Bagian penting adalah bahwa entri jurnal dibuat sebelum operasi berlangsung. Sebagian besar operasi memiliki beberapa langkah. Menghapus file, misalnya mungkin memerlukan penghapusan entri file dalam daftar isi sistem file dan kemudian menandai sektor-sektor pada drive sebagai bebas. Jika terjadi sesuatu di antara kedua langkah tersebut, sistem file jurnal dapat segera mengetahui dan melakukan pembersihan yang diperlukan untuk menjaga semuanya konsisten. Ini bukan kasus dengan sistem file non-jurnal yang harus melihat seluruh isi volume untuk menemukan kesalahan.

Walaupun penjurnalan ini jauh lebih rentan terhadap korupsi daripada penjurnalan, korupsi masih dapat terjadi. Misalnya, jika hard drive rusak secara mekanis atau jika menulis ke jurnal itu sendiri gagal atau terganggu.

Premis dasar jurnal adalah bahwa menulis entri jurnal jauh lebih cepat, biasanya, daripada transaksi yang sebenarnya dijelaskan. Jadi, periode antara OS memesan (jurnal) menulis dan hard drive yang memenuhinya jauh lebih pendek daripada untuk menulis normal: jendela lebih sempit untuk hal-hal yang salah, tetapi masih ada jendela.

Bacaan lebih lanjut

Andrew Lambert
sumber
Bisakah Anda menjelaskan sedikit tentang mengapa ini benar? Mungkin Anda bisa memberikan contoh bagaimana korupsi akan terjadi dalam skenario tertentu.
Nathan Osman
1
@ George Edison Lihat jawaban saya yang diperluas.
Andrew Lambert
2
Bit terakhir itu salah; tidak ada jendela untuk kesalahan. Karena ia mencatat apa yang akan dilakukan sebelum mulai melakukannya, operasi dapat dimulai kembali setelah listrik mati, tidak peduli pada titik apa itu terjadi selama operasi. Ini masalah pemesanan, bukan waktu.
psusi
@psusi masih ada jendela agar penulisan jurnal tidak terganggu. Menulis jurnal mungkin muncul atom ke OS tetapi mereka masih menulis ke disk.
Andrew Lambert
5
@ Terheran-heran mereka atom karena mereka memiliki nomor urut dan / atau checksum, sehingga entri jurnal ditulis seluruhnya, atau tidak. Jika tidak ditulis seluruhnya, ia hanya diabaikan setelah sistem dinyalakan kembali, dan tidak ada perubahan lebih lanjut yang dilakukan pada fs sehingga tetap konsisten.
psusi
18

Tidak.

Jenis penjurnalan yang paling umum, yang disebut penjurnalan metadata, hanya melindungi integritas sistem file, bukan data. Ini termasuk xfs, dan ext3/ ext4dalam data=orderedmode default .

Jika sistem file non-jurnal mengalami kerusakan, maka akan diperiksa menggunakan fsckpada boot berikutnya. fsckmemindai setiap inode pada sistem file, mencari blok yang ditandai sebagai telah digunakan tetapi tidak dapat dijangkau (yaitu tidak memiliki nama file), dan menandai blok tersebut sebagai tidak terpakai. Melakukan ini membutuhkan waktu lama.

Dengan sistem file penjurnalan metadata, alih-alih melakukan fsck, ia tahu blok mana yang ada di tengah-tengah perubahan, sehingga dapat menandai mereka sebagai bebas tanpa mencari seluruh partisi untuk mereka.

Ada jenis penjurnalan yang kurang umum, yang disebut penjurnalan data, yang ext3artinya jika Anda memasangnya dengan data=journalopsi.

Ia mencoba untuk melindungi semua data Anda dengan menulis tidak hanya daftar operasi logis, tetapi juga seluruh konten dari masing-masing menulis ke jurnal. Tetapi karena itu menulis data Anda dua kali, itu bisa jauh lebih lambat.

Seperti yang telah ditunjukkan orang lain, bahkan ini bukan jaminan, karena hard drive mungkin memberi tahu sistem operasi bahwa ia telah menyimpan data, padahal kenyataannya itu masih dalam cache hard drive.

Untuk informasi lebih lanjut, lihat artikel Sistem File Jurnal Wikipedia dan bagian Mode Data dari dokumentasi ext4 .

Mikel
sumber
1
+1 untuk perbedaan antara korupsi sistem file dan korupsi data. Perbedaan kecil itu cukup konyol dalam praktik.
SplinterReality
Maafkan ketidaktahuan saya, tetapi bukankah data=journalsebagai fitur tidak masuk akal sama sekali?
boehj
Sekali lagi, OS tahu kapan drive cache data dan memaksanya untuk menyiramnya saat diperlukan untuk mempertahankan fs koheren. File data Anda tentu saja, bisa hilang atau rusak jika aplikasi yang menulisnya ketika listrik gagal tidak melakukannya dengan hati-hati, dan itu berlaku apakah Anda menggunakan data = jurnal atau tidak.
psusi
@psusi tidak peduli seberapa hati-hati program ini dalam menulis data, banyak hard drive secara diam-diam merusak data pada BACA stackoverflow.com/q/34141117/3338098
user3338098
@ user3338098, drive yang data yang diam-diam rusak rusak parah dan tidak boleh digunakan, dan merupakan percakapan yang sama sekali berbeda dari korupsi yang disebabkan oleh perangkat lunak yang melakukan hal yang salah.
psusi
8

Filesystem tidak dapat menjamin konsistensi filesystemnya jika terjadi kegagalan daya, karena tidak tahu apa yang akan dilakukan perangkat keras.

Jika hard drive buffer data untuk menulis tetapi memberitahu OS bahwa ia telah menulis data dan tidak mendukung hambatan penulisan yang sesuai, maka penulisan yang tidak berurutan dapat terjadi di mana penulisan sebelumnya tidak mengenai platter, tetapi yang kemudian telah. Lihat jawaban kesalahan server ini untuk lebih jelasnya.

Selain itu, posisi kepala pada HDD magnetik dikontrol dengan magnet elektro. Jika listrik gagal di tengah-tengah penulisan, ada kemungkinan beberapa data untuk terus ditulis sementara kepala bergerak, merusak data pada blok yang sistem file tidak pernah dimaksudkan untuk ditulis.

camh
sumber
Bukankah firmware drive cukup pintar untuk menunda penulisan saat menarik kembali kepala?
Nathan Osman
@ George: Ini akan tergantung pada drive. Ada banyak hal di luar sana dan Anda tidak tahu seberapa baik drive (murah) Anda melakukan banyak hal.
camh
1
Hard drive memberitahu OS jika menggunakan tulis di belakang cache, dan OS mengambil langkah-langkah untuk memastikan mereka memerah dalam urutan yang benar. Drive juga dirancang sehingga ketika daya mati, drive berhenti menulis. Saya telah melihat beberapa kasus di mana sektor yang ditulis pada saat kehilangan daya menjadi rusak karena tidak selesai memperbarui ECC (tetapi dapat dengan mudah ditulis ulang dengan benar), tetapi tidak pernah mendengar ada sektor acak yang korup karena kehilangan daya.
psusi
3

ZFS, yang dekat tapi bukan sistem file penjurnalan, dijamin dengan desain melawan korupsi setelah listrik mati.

Tidak masalah jika tulisan yang sedang berlangsung terputus di tengah karena dalam kasus seperti itu, checksumnya akan pasti salah sehingga blok akan diabaikan. Karena sistem file adalah copy on write, data yang benar sebelumnya (atau meta-data) masih di disk dan akan digunakan sebagai gantinya.

Jlliagre
sumber
2

Jawabannya adalah dalam banyak kasus tidak:

  • Seperti yang sudah mikel mengatakan, sebagian besar sistem file journal hanya dapat file metadata melindungi (informasi seperti nama file, ukuran, perizinannya, dll), tidak file data (isi file). Ini terjadi karena melindungi data file menghasilkan sistem file yang sangat lambat (dalam praktiknya tidak berguna).
  • Karena jurnal juga merupakan jenis file khusus yang disimpan di hard disk, maka dapat rusak setelah listrik mati. Jadi jika jurnal rusak sistem file tidak dapat menyelesaikan transaksi tidak lengkap yang terjadi ketika listrik mati.
sakisk
sumber
Peristiwa apa yang dapat menyebabkan jurnal yang korup? Satu-satunya hal yang bisa saya pikirkan adalah bad sector - apakah ada hal lain?
Nathan Osman
Itu benar, kegagalan perangkat keras adalah kasus biasa.
sakisk