ไม่พบสาเหตุที่ทำให้ไอโหนดหมดไป


0

ฉันมี Xen VPS พร้อม Debian Linux ติดตั้งด้วยระบบไฟล์ ext4 เมื่อฉันพบว่าใช้ inodes ทั้งหมด ฉันตรวจสอบสิ่งนี้:

~# df -i
Filesystem      Inodes   IUsed IFree IUse% Mounted on
rootfs         3932160 3932160     0  100% /
udev             59227     262 58965    1% /dev
tmpfs            63251     215 63036    1% /run
/dev/xvda      3932160 3932160     0  100% /
tmpfs            63251       2 63249    1% /run/lock
tmpfs            63251       2 63249    1% /run/shm

จากนั้นฉันพยายามค้นหาว่ามีการใช้ไอโหนดทั้งหมด โดยปกติแล้วไฟล์เหล่านั้นจะถูกใช้โดยไฟล์เซสชัน PHP (เพราะงาน cron หรือตัวล้างข้อมูลภายใน PHP เสีย) แต่ฉันไม่พบไดเรกทอรีใดที่มีไฟล์จำนวนมาก ฉันลองหลายวิธีมีหนึ่ง:

/# for i in /*; do echo $i; find $i |wc -l; done
/aquota.group
1
/aquota.user
1
/bin
124
/boot
9
/dev
264
/etc
1746
/home
1
/initrd.img
1
/lib
4002
/lib64
2
/lost+found
1
/media
1
/mnt
1
/opt
1
/proc
26590
/root
17
/run
214
/sbin
127
/selinux
1
/srv
3
/sys
3609
/tmp
1
/usr
37020
/var
8636
/vmlinuz
1

/# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,relatime,size=10240k,nr_inodes=59227,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=50604k,mode=755)
/dev/xvda on / type ext4 (rw,relatime,errors=remount-ro,user_xattr,barrier=1,data=ordered,usrquota,grpquota)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=101200k)

Filesystem     Type     1K-blocks     Used Available Use% Mounted on
rootfs         rootfs    61927420 37390672  21391020  64% /
udev           devtmpfs     10240        0     10240   0% /dev
tmpfs          tmpfs        50604      120     50484   1% /run
/dev/xvda      ext4      61927420 37390672  21391020  64% /
tmpfs          tmpfs         5120        0      5120   0% /run/lock
tmpfs          tmpfs       101200        0    101200   0% /run/shm

/# find . | wc -l
78898

ฉันจะทำอะไรต่อไป

คำตอบ:


0

หากคุณต้องการให้คำสั่ง find ของคุณไม่รวม inodes ที่เป็นของจุดเชื่อมต่ออื่น ๆ ให้รวม -xdev บนบรรทัดคำสั่ง find 78898 ที่ส่วนท้ายของเอาต์พุตของคุณอาจมากกว่าจำนวนไฟล์ทั้งหมดที่มองเห็นได้ในพาร์ติชัน rootfs เนื่องจากมีไฟล์อยู่ใต้จุดเมานท์อื่น ๆ สิ่งนี้ไม่ได้อธิบายความแตกต่างที่คุณถาม มันหมายถึงความคลาดเคลื่อนที่แท้จริงอาจจะค่อนข้างใหญ่กว่า

สิ่งแรกที่ต้องตรวจสอบคือคุณได้ยกเลิกการเชื่อมโยงไฟล์ที่เปิดอยู่หรือไม่ ผลลัพธ์ของคำสั่งต่อไปนี้เรียกใช้เป็น root ควรแสดงให้คุณเห็น:

lsof +L1

ตัวอย่างหนึ่งของสาเหตุที่คุณอาจมีไฟล์ที่ไม่ได้เชื่อมโยงเปิดคือกระบวนการที่เริ่มต้นก่อนที่จะอัปเกรดแพ็คเกจซึ่งแทนที่ไฟล์เหล่านั้นด้วยไฟล์ที่ใหม่กว่า ความเป็นไปได้อีกอย่างก็คือกระบวนการที่ตั้งใจยกเลิกการลิงก์ไฟล์ที่เปิดอยู่เพื่อปกปิดเนื้อหาจากกระบวนการอื่น

หากนั่นไม่ได้คำนึงถึงความคลาดเคลื่อนอย่างสมบูรณ์ความเป็นไปได้อีกอย่างก็คือไฟล์ที่ไม่ได้ถูกลบจะยังคงมองไม่เห็นในคำสั่ง find เนื่องจากไฟล์เหล่านั้นซ่อนอยู่ใต้จุดเมานท์อื่น ๆ มีหลายวิธีในการตรวจสอบความเป็นไปได้นั้น แต่อาจเหมาะสมที่จะนับการเปิดไฟล์ที่ถูกลบก่อน

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