“ เกินโควต้าดิสก์” เมื่อเขียนถึง / tmp แต่มีพื้นที่เหลือเฟือ (linux)


9

ฉันมี VPS มันมีการจัดการกับ plesk แนวขนานที่มีชื่อเสียง

วันนี้ฉันเริ่มเห็นข้อความ (ผ่าน wordpress ในตอนแรก แต่ก็มาจากเชลล์บรรทัดคำสั่ง) โดยพูดว่า: "เกินโควต้าของดิสก์"

user@machine:~$ echo aaa > /tmp/aaa
-bash: /tmp/aaa: Disk quota exceeded

แต่มีพื้นที่บนเครื่องมากมายและมีเพียง 1 พาร์ติชัน

user@machine:~$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/vzfs             100G   24G   77G  24% /

ฉันลบไฟล์ทั้งหมดจาก / tmp / * แล้วแต่ยัง

ฉันไม่รู้อะไรเกี่ยวกับ "vzfs" อาจจะเป็นผู้ร้ายหรือเปล่า?

สิ่งที่ผิดพลาดไปแล้ว? และจะแก้ไขได้อย่างไร

สารละลาย!

(ถ้าคุณไม่ใช้ Parallels Plesk ดูคำตอบของ @ Adalee)

ดูโซลูชันของ @deltik ที่เกี่ยวข้องกับระบบของ Parallel เช่นเดียวกับในกรณีของฉัน

df -i ให้หมายเลข inode ที่กำหนดซ้ำได้ทันที: 18,446,744,069,620,218,961 ซึ่งเป็นสิ่งที่วิกลจริตสำหรับเว็บไซต์เวิร์ดเพรส

ฉันสำรวจเพิ่มเติมและพบคิวของ qmail เต็มไปด้วย inodes (เต็มไปด้วย attemtps ของแฮ็กเกอร์เพื่อใช้เครื่องของฉันในการสแปมและการตอบกลับล้มเหลว)

การแก้ไข qmail ไม่เกี่ยวข้องที่นี่ แต่วิธีแก้ไขของฉันมีความเกี่ยวข้อง:

  1. หยุดบริการของ qmail
  2. ฉันไม่สามารถดาวน์โหลดqmhandleไปยังระบบเกินโควต้าได้ดังนั้นฉันต้องทำ
  3. แยกและอัพโหลดสคริปต์ไปยังเว็บไซต์อื่น
  4. ลบคิวด้วยคำสั่งนี้:
  5. Perl <(wget -O - http://link.to.my/script.pl ) -D

วิธีนี้สคริปต์ทำงานโดยตรงจากเว็บ (ซึ่งไม่ใช่วิธีปฏิบัติที่ปลอดภัย แต่ฉันได้วางสคริปต์ไว้ที่นั่นด้วยตัวเอง) พร้อมตัวเลือกบรรทัดคำสั่ง

ขอบคุณ @deltik สำหรับการรู้และตระหนักถึงการตั้งค่าที่แปลกประหลาดนี้ทันทีและให้วิธีการวินิจฉัยเพิ่มเติม !!!


Linux มีการตั้งค่าการจัดสรรโควต้าดิสก์ตามผู้ใช้หรือกลุ่ม ตรวจสอบพวกเขาเช่นกัน5 ขั้นตอนในการตั้งค่าโควต้าผู้ใช้และกลุ่มดิสก์บน UNIX / Linux
DavidPostill

1
ใช่vzfs(ระบบไฟล์ "เสมือน" ของ OpenVZ) อาจเป็นสาเหตุได้ ฉันเคยเห็นผู้ให้บริการ OpenVZ หลายคนที่ขายเซิร์ฟเวอร์ราคาถูกอย่างไม่น่าเชื่อ แต่ตั้งข้อ จำกัด ที่โง่สุด ๆ
user1686

หากคุณมีทางออกแม้ว่าจะเฉพาะเจาะจงโปรดโพสต์เป็นคำตอบ คุณสามารถยอมรับคำตอบของคนอื่นได้ตลอดเวลา
Daniel B

คำตอบ:


15

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

สาเหตุ: Out of Inodes (พบมากที่สุด)

หลังจากทำงานกับลูกค้า Virtuozzo VPS หลายปีที่มีปัญหาเรื่องการสร้างไฟล์ไม่ได้แม้ว่าจะมีพื้นที่ว่างมากมาย แต่ส่วนใหญ่ก็มาถึงขีด จำกัด inode รันคำสั่งนี้เพื่อดูการจัดสรร inode ( Inodes), inodes used ( IUsed), inodes ที่เหลือ ( IFree) และเปอร์เซ็นต์ของinode ที่ใช้ ( IUse%):

df -i

มีการใช้ไอโหนด 100% เกิดขึ้นมากมาย สาเหตุที่พบบ่อยในประสบการณ์ของฉัน:

  • อีเมลตีกลับสแปม
  • อีเมลสแปมขาออกเข้าคิว
  • เก็บอีเมลขาเข้าจำนวนมาก
  • ผู้ใช้บางคนตั้งค่าการรวบรวมขยะเซสชัน PHP ( session.gc_maxlifetime) เป็นเวลากว่าร้อยปี
  • ไฟล์แคชทั่วไปมีจำนวนมากเกินไป
  • แคชวัตถุเปิดใช้งานในปลั๊กอิน WordPress W3 Total Cache
  • บันทึกข้อผิดพลาดของวีโอไอพี (ไฟล์ใหม่ถูกสร้างขึ้นสำหรับทุกข้อผิดพลาด)
  • โปรแกรม / สคริปต์ที่ได้รับการกำหนดค่าไม่ดีหรือได้รับการออกแบบมาไม่ดีซึ่งทำแฟ้มจำนวนมากและลืมที่จะลบทิ้ง

การแก้ไขปัญหา

หากคุณพบว่าคุณเหลือน้อยหรือหมด inodes แต่ไม่รู้ว่าส่วนใหญ่อยู่ที่ไหนฉันมี Bash one-liner ที่ค้นหาไดเรกทอรีปัจจุบันและนับจำนวน inodes ที่ความลึกของโฟลเดอร์ 1:

for i in $(find $(pwd) -maxdepth 1 -type d | sort); do echo -e "$(find "$i" | wc -l)\t: $(readlink -f "$i")"; done | sort -nr

คุณสามารถเปลี่ยนไดเรกทอรีการทำงานปัจจุบันได้/เรื่อย ๆ จนกว่าคุณจะเจอผู้ร้ายโดยใช้การจัดสรร inode ของคุณ

คำอธิบาย

VPS ของคุณอยู่ในระบบไฟล์ VZFS ซึ่งเป็นส่วนหนึ่งของ Parallels Virtuozzo (ไม่ใช่ OpenVZ ซึ่งคล้ายกันและใช้เทคโนโลยีเดียวกัน แต่ OpenVZ จะไม่ใช้ VZFS)

เนื่องจากวิธีที่ Virtuozzo จัดเก็บไฟล์ใน VZFS inodes มักจะถูก จำกัด มากกว่าดังนั้นพวกเขาจะอยู่ในระบบไฟล์อื่น ๆ เช่น ext4 หรือ XFS โฮสต์จะติดตามไฟล์เหล่านี้ทั้งหมดและมันจะเป็นประโยชน์กับผู้ให้บริการโฮสติ้งที่จะไม่ปล่อยให้ VPS เพียงครั้งเดียวใช้เวลาหลายร้อยล้าน inode ดังนั้นผู้ให้บริการโฮสต์อาจตั้งค่าขีด จำกัด ของไอโหนดให้ต่ำเช่น 1,000,000 inodes

หลังจากหลายปีที่ทำงานกับลูกค้าหลายร้อยคนที่ใช้การจัดสรร inode บน Virtuozzo หมดปัญหาโควต้าดิสก์ "ลึกลับ" เหล่านี้ก็ไม่ทำให้ฉันประหลาดใจอีกต่อไป

สาเหตุ: ข้อ จำกัด Virtuozzo อื่น ๆ

เปอร์เซ็นต์เล็ก ๆ น้อย ๆ ของลูกค้า Virtuozzo VPS ที่ฉันเคยทำงานด้วยมีปัญหาเกี่ยวกับระบบไฟล์เนื่องจากพวกเขามีขีด จำกัด อื่น ๆ คุณสามารถดูข้อ จำกัด บางอย่าง (แต่ไม่ใช่ทั้งหมด) ด้วยคำสั่งนี้:

cat /proc/user_beancounters

การแก้ไขปัญหา

หากfailcntคอลัมน์มีค่ามากกว่า 0 หรือheldค่าคอลัมน์เท่ากับค่าที่สอดคล้องกันแสดงlimitว่าคุณมีจำนวนถึงขีด จำกัด แล้ว

คุณสามารถค้นหาว่าแต่ละพารามิเตอร์อยู่ในวิกิของ OpenVZ ที่นี่หรือไม่ พารามิเตอร์อาจเป็น "หลัก", "รอง" หรือ "เสริม"

คุณควรติดต่อผู้ให้บริการโฮสติ้งของคุณเพื่อขอความช่วยเหลือเพิ่มเติมหากคุณพบว่าคุณไม่สามารถลดheldจำนวนลงสำหรับการ จำกัด VPS ของคุณได้

คำตอบนี้สามารถขยายได้มากขึ้นอยู่กับว่าถั่วถูก maxed out เมื่อถึงขีด จำกัด ที่แตกต่างกันทำให้เกิดอาการที่แตกต่างกัน

สาเหตุ: ขีด จำกัด ลดลงหลังจากถูกโจมตี

เกี่ยวกับ/proc/user_beancountersหรือdf -iบางครั้งผู้ดูแลระบบ Virtuozzo อาจลดlimitพารามิเตอร์ด้านล่างheldค่า

ตัวอย่างเช่นหากขีด จำกัด เริ่มต้นของdiskinodesพารามิเตอร์คือ 1,500,000 และคุณถึงขีด จำกัด แล้วบางคนที่ผู้ให้บริการโฮสต์ของคุณตั้งค่าขีด จำกัด inode ของคุณเป็น 1,000,000 คุณจะเห็นรายงาน inode ที่แปลกประหลาดจากdf -iนั้นไม่สมเหตุสมผล

ในส่วนของคุณคุณจะเห็นจำนวนมากเกินสมควรเช่น 18.446.744.069.620.218.961

ฉันคิดว่านี่เป็นพฤติกรรมที่น่ากลัวจากผู้ให้บริการโฮสต์โดยเฉพาะอย่างยิ่งหากพวกเขาไม่แจ้งให้คุณทราบเพราะค่าที่ผิดปกติที่คุณเห็นขัดแย้งกับความรู้ของผู้ใช้ขั้นสูงที่ไม่มีประสบการณ์กับ Virtuozzo / OpenVZ ซึ่งทำให้เข้าใจผิด คำแนะนำ ( ตัวอย่างเช่น , อีกตัวอย่างหนึ่ง )

การแก้ไขปัญหา

ติดต่อผู้ให้บริการโฮสต์ของคุณ แสดงให้พวกเขาเห็นสิ่งที่คุณพบและทำงานร่วมกับพวกเขาเพื่อให้ได้ถั่วที่คุณถือไว้ต่ำกว่าขีด จำกัด

หากพวกเขาปฏิเสธที่จะช่วยคุณให้ทิ้งผู้ให้บริการโฮสติ้งของคุณและหาคนอื่นที่ไม่ได้ใช้การจำลองเสมือน Virtuozzo / OpenVZ การจำลองเสมือนของ KVM, การจำลองเสมือนของ VMware, การจำลองเสมือน Xen หรือเซิร์ฟเวอร์โลหะเปลือยจะอยู่ภายใต้ข้อ จำกัด น้อยกว่า Virtuozzo / OpenVZ

คำอธิบาย

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

ผู้ดูแลระบบ Virtuozzo ที่ไม่มีประสบการณ์ของผู้ให้บริการโฮสติ้งเชื่อว่าพวกเขาสามารถแก้ไขปัญหานี้ได้ด้วยการลดข้อ จำกัด บางอย่างให้ต่ำกว่าการใช้ทรัพยากรจริง ในกรณีของ inodes คุณอาจมีการจัดสรรที่ต่ำกว่าเช่น 1,000,000 ถึงแม้ว่าการใช้งานจริงในปัจจุบันของคุณอาจสูงกว่าเช่น 1,500,000

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

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


ฉันไม่รู้ว่า 18,446,744,069,620,218,961 เป็นจำนวน inodes ที่ยอมรับได้สำหรับเว็บไซต์ที่ใช้ wordpress ...
Berry Tsakala

@BerryTsakala: จำนวนของ inodes ที่ใช้หรือจำนวน inodes ทั้งหมดที่ระบบไฟล์รองรับหรือไม่ หากคุณสามารถให้ผลลัพธ์เต็มรูปแบบของคำสั่งเราอาจจะแน่ใจ ดูเหมือนว่าโฮสต์ของคุณจะไม่มีขีด จำกัด inode ซึ่งหมายความว่าฉันผิด ฉันจะได้คำตอบที่อัปเดตสำหรับคุณซึ่งสำรวจ Virtuozzo จำกัด เพิ่มเติม
Deltik

@ BerryTsakala: มันเพิ่งเกิดขึ้นกับฉันว่าโฮสต์ของคุณอาจจะทำสิ่งที่น่ากลัวและหวังว่าคุณจะไม่สังเกตเห็น ฉันจะอัปเดตคำตอบของฉันในไม่ช้าพร้อมรายละเอียด
Deltik

ขอบคุณ! ฉันเริ่มลบไฟล์ซ้ำซ้อนแล้ว ฉันยังค้นพบว่าผู้ส่งสแปมละเมิดระบบและอีเมลกำลังกรอกคิวของ qmail
Berry Tsakala

BTW, ไอโหนดไม่ได้รวม: df -i ใหญ่กว่า 100 ล้านล้านเท่าของ tje sum ที่ส่งคืนผ่านคำสั่ง find ... คุณจะรู้วิธีการค้นหาความแตกต่างหรือไม่
Berry Tsakala

4

"โควต้าดิสก์เกิน" ไม่ได้หมายความว่าไม่มีที่ว่างในดิสก์ของคุณ แต่คุณไม่ได้รับอนุญาตให้ใช้พื้นที่มาก

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

ลองใช้quotaและquota -g(หรือคุณสามารถเรียกใช้repquota -uและrepqouta -g) เพื่อดูว่าผู้ใช้ของคุณถูก จำกัด ด้วยวิธีนี้และอย่างไร ถ้าใช่คุณสามารถแก้ไขโควต้าเหล่านั้นด้วยedquotaหรือปิดด้วยquotaoffคำสั่ง คุณอาจต้องเข้าสู่ระบบในฐานะ root สำหรับสิ่งนี้ขึ้นอยู่กับการตั้งค่าของคุณ

ไซต์นี้ครอบคลุมตัวอย่างบางส่วนเกี่ยวกับวิธีทำงานกับโควต้าและยังมีลิงก์ไปยังหน้าคู่มือไปยังคำสั่งที่มีประโยชน์

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