GNU/Linux >> Belajar Linux >  >> Linux

Kehabisan memori menjalankan fsck pada sistem file besar

Solusi 1:

Kernel 64 bit dan RAM dalam jumlah besar akan memungkinkan fsck selesai dengan baik dan cepat. Bergantian, sekarang ada opsi di e2fsck yang akan memintanya untuk menyimpan semua hasil antara di direktori, bukan di RAM, yang sangat membantu. Buat /etc/e2fsck.conf dengan isi sebagai berikut:

[scratch_files]
directory = /var/cache/e2fsck

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

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

Solusi 2:

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

Opsi konfigurasi "scratch_files" untuk e2fsck tersedia pada 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 sistem file memiliki banyak file, tetapi tidak begitu banyak direktori. Jika situasinya dibalik, opsi "icount" akan sesuai. 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 dari yang diperkirakan oleh Ted. Itu berjalan pada penggunaan CPU 99,9% sebagian besar waktu (pada prosesor lama yang sangat lambat), yang menunjukkan bahwa menyimpan struktur data ini pada disk alih-alih memori bukanlah penyebab utama pelambatan. Mungkin ada hal lain tentang apa yang disimpan di sistem file yang membuat e2fsck sangat lambat. Pada akhirnya, saya telah mengabaikan pemeriksaan sistem file untuk saat ini; sistem file harus diperiksa, tetapi tidak ada kesalahan (sejauh yang saya tahu), jadi saya akan mengatur untuk memeriksanya pada waktu yang lebih nyaman ketika kami mampu mengalami pemadaman selama seminggu.


Linux
  1. Mencari tahu apakah pesan melalui tcp terkirim

  2. Menjalankan 'gcc' pada file sumber C++ di Linux memberikan cc1plus:kehabisan memori yang mengalokasikan ... pesan kesalahan

  3. Apakah mungkin untuk mengalokasikan memori virtual dalam jumlah besar di linux?

  1. Bagaimana cara mengetahui versi Linux yang saya jalankan?

  2. Cari tahu apakah OS berjalan di lingkungan virtual

  3. Linux - Tolong, saya kehabisan inode!

  1. Cara Menemukan Proses Berjalan Teratas berdasarkan Memori dan Penggunaan CPU

  2. Linux – Sistem Menggantung Saat Kehabisan Memori?

  3. Temukan 10 Proses Berjalan Teratas berdasarkan Memori dan Penggunaan CPU