daftar file ext4 sangat lambat dalam satu direktori tertentu yang berisi banyak file sebelumnya


16

Latar Belakang

Saya mengalami kesalahan kecil logrotate ... Logrotate akan memutar log yang diarsipkan dengan salah langkah menyebabkan pertumbuhan kuadrat file di my /var/log/. Dan ketika saya tahu ada sesuatu yang salah, /var/log/sudah berisi beberapa juta file ...

Saya berhasil (setelah beberapa hairloss dan menemukan / sed / grep magic) menghapus semua file yang menyinggung dan memperbaiki konfigurasi logrotate saya. Dan pikir semuanya baik-baik saja ...

Masalah

Setiap kali saya ls/ du -hsatau daftar isi /var/log/(yang sekarang berisi 80mb arsip / log dan paling banyak beberapa ratus file) proses melakukan itu hang selama satu atau dua menit. Saya percaya ini entah bagaimana terkait dengan kesalahan logrotate tapi saya tidak yakin, itu bisa menjadi sesuatu yang lain. Lagi pula saya bingung ke mana harus mulai debugging atau mencari perbaikan untuk ini. Tolong bantu: 3

Info lain

uname -a
Linux xxx 3.3.8-gentoo #18 SMP Sat Sep 21 22:44:40 CEST 2013 x86_64 Intel(R) 
Core(TM)2 CPU 4400 @ 2.00GHz GenuineIntel GNU/Linux

cat /proc/meminfo 
MemTotal:        2051552 kB
MemFree:           75612 kB
Buffers:            9016 kB
Cached:          1740608 kB
SwapCached:            0 kB

CFQ IO scheduler + SLUB allocator 

Saya pikir ini: Berapa banyak file dalam direktori yang terlalu banyak? (Mengunduh data dari internet) terkait tetapi saya tidak memiliki file yang tersisa lagi.

Edit

Masalahnya tetap ada bahkan setelah panggilan untuk init 1 jadi saya pikir aman untuk berasumsi tidak ada proses lain untuk disalahkan kecuali FS.

Solusi (sebagaimana diterapkan dari jawaban yang diterima)

init 1
mv /var/log /var/log1
mkdir /var/log
chmod --reference=/var/log1 /var/log
chown --reference=/var/log1 /var/log
tar -C /var/log1 -cvp . | tar -C /var/log -xvp
rm -rf /var/log1
init 5

Jawaban:


25

Direktori hanya tumbuh dalam ukuran, bukan menyusut. Coba pindahkan semua file tersebut ke direktori sementara (seperti log2) kemudian rmdir direktori lama dan ganti nama temp menjadi yang permanen baru.


Saya hanya melakukan ini ketika Anda menjawab. Berhasil :) Sayangnya, saya tidak punya cukup reputasi untuk mendukung Anda: /
Emily L.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.