ext4 การแสดงรายการไฟล์ช้ามากในไดเรกทอรีหนึ่งที่มีไฟล์จำนวนมากมาก่อน


16

พื้นหลัง

ผมมี misshap logrotate เล็ก ๆ ... logrotate จะหมุนบันทึกเก็บไว้โดย misstake /var/log/ก่อให้เกิดการเจริญเติบโตของกำลังสองของไฟล์ในของฉัน และตามเวลาที่ฉันรู้ว่ามีบางอย่างผิดปกติ/var/log/มีไฟล์อยู่สองสามล้านไฟล์ ...

ฉันจัดการเพื่อ (หลังจาก hairloss และ find / sed / grep magic) ลบไฟล์ที่ละเมิดทั้งหมดและแก้ไขการตั้งค่า logrotate ของฉัน และคิดว่าทุกอย่างดี ...

ปัญหา

เมื่อใดก็ตามที่ฉันls/ du -hsหรือรายชื่อเนื้อหาของ/var/log/(ซึ่งตอนนี้มี 80mb ของที่เก็บ / บันทึกและมากที่สุดสองสามร้อยไฟล์) กระบวนการทำที่แฮงค์สำหรับนาทีที่ดีหรือสอง ฉันเชื่อว่านี่เป็นวิธีที่เกี่ยวข้องกับการสะกดผิด logrotate แต่ฉันไม่แน่ใจมันอาจเป็นอย่างอื่น ยังไงก็ตามฉันก็ตกอยู่ในที่ที่จะเริ่มทำการดีบั๊กหรือหาวิธีแก้ไขมัน โปรดช่วย: 3

ข้อมูลอื่น ๆ

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 

ฉันคิดว่านี่: ไฟล์ในไดเรกทอรีมีจำนวนมากเกินไป (การดาวน์โหลดข้อมูลจากเน็ต)นั้นเกี่ยวข้อง แต่ฉันไม่มีไฟล์เหลืออีกต่อไป

แก้ไข

ปัญหายังคงอยู่แม้จะมีการเรียกinit 1 ดังนั้นฉันคิดว่ามันปลอดภัยที่จะถือว่าไม่มีกระบวนการอื่นใดที่จะตำหนิ แต่ FS

โซลูชัน (ตามที่นำมาใช้จากคำตอบที่ยอมรับ)

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

คำตอบ:


25

ไดเรคทอรี่มีขนาดใหญ่ขึ้นไม่หด ลองย้ายไฟล์เหล่านั้นออกไปยังไดเรกทอรีชั่วคราว (เช่น log2) จากนั้น rmdir ไดเรกทอรีเก่าและเปลี่ยนชื่อ temp one เป็นไฟล์ถาวรใหม่


ฉันเพิ่งทำสิ่งนี้ตามที่คุณตอบ มันใช้งานได้แล้ว :) น่าเศร้าที่ฉันไม่มีชื่อเสียงพอที่จะยกระดับคุณ: /
Emily L.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.