Kehabisan memori menjalankan fsck pada sistem file besar

13

Saya merawat kotak linux Debian lama (menjalankan etch) dengan hanya 512 MB RAM, tetapi banyak penyimpanan eksternal terpasang. Satu sistem file ext3 berukuran 2,7 TB, dan fsck tidak dapat memeriksanya, karena kehabisan memori, dengan kesalahan seperti ini:

   Kesalahan mengalokasikan susunan blok direktori: Alokasi memori gagal
   e2fsck: dibatalkan

Saya telah menambahkan partisi swap 4 GB dan masih belum selesai, tetapi ini adalah kernel 32-bit, jadi saya tidak berharap menambahkan lagi akan membantu.

Selain mem-boot kernel 64-bit, adakah cara lain untuk mendapatkan fsck untuk menyelesaikan pemeriksaannya?

TimB
sumber

Jawaban:

12

Kernel 64 bit dan RAM dalam jumlah besar akan memungkinkan fsck untuk menyelesaikan dengan baik dan cepat. Sebagai alternatif, sekarang ada opsi di e2fsck yang akan memerintahkannya untuk menyimpan semua hasil antara itu di direktori alih-alih dalam RAM, yang sangat membantu. Buat /etc/e2fsck.confdengan konten berikut:

[scratch_files]
directory = /var/cache/e2fsck

(Dan, tentu saja, pastikan direktori itu ada, dan ada di partisi dengan ruang kosong yang cukup besar). e2fsck akan menjalankan SLLOOOOWWWWWWW, tetapi setidaknya itu akan selesai.

Tentu saja, ini tidak akan bekerja dengan root FS, tetapi jika Anda memiliki swap maka Anda sudah melewati pemasangan FS root.

womble
sumber
6

Saya akhirnya mencoba apa yang disarankan womble; berikut adalah beberapa perincian yang mungkin berguna jika, seperti saya, Anda belum pernah melihat fungsi baru ini di e2fsck sebelumnya.

Opsi konfigurasi "scratch_files" untuk e2fsck menjadi tersedia kapan saja dalam periode versi 1.40.x. (Dalam kasus kami, kami harus memutakhirkan ke distribusi Debian terbaru untuk mendapatkan fungsi ini.)

Selain opsi "direktori = / var / cache / e2fsk" yang disarankan, ada beberapa opsi konfigurasi lebih lanjut untuk menyempurnakan cara penyimpanan file awal digunakan. Saya menggunakan "dirinfo = false", karena filesystem memiliki banyak file, tetapi tidak banyak direktori. Jika situasinya terbalik, opsi "icount" akan tepat. Semua opsi ini didokumentasikan di halaman manual untuk e2fsck.conf.

BTW, Ted T'so menulis tentang opsi ini di utas ini .

Saya menemukan bahwa e2fsck berjalan sangat lambat, lebih banyak dari yang diperkirakan oleh Ted. Itu berjalan pada utilisasi CPU 99,9% sebagian besar waktu (pada prosesor lama yang sangat lambat), yang menunjukkan bahwa menyimpan struktur data ini pada disk bukan memori bukan penyebab utama perlambatan. Mungkin ada hal lain tentang apa yang disimpan dalam sistem file yang membuat e2fsck sangat lambat. Pada akhirnya, saya telah meninggalkan pemeriksaan filesystem untuk saat ini; filesystem akan diperiksa, tetapi tidak ada kesalahan (sejauh yang saya tahu), jadi saya akan mengatur untuk memeriksanya pada waktu yang lebih nyaman ketika kita bisa mengalami pemadaman selama seminggu.

TimB
sumber
Saya ingin tahu apakah btrf lebih baik dalam hal itu. alat ext4 jelas tidak dibangun untuk skala. Saya baru-baru ini mengalami masalah ini dengan RAM 2GB
user1133275