ข้อผิดพลาดที่ไม่มีสาเหตุชัดเจนคือปัญหาที่น่ารำคาญที่สุดที่ต้องจัดการ และแม้ว่าโดยปกติแล้ว Linux จะระบุข้อความแสดงข้อผิดพลาดไว้โดยเฉพาะ แต่นี่เป็นหนึ่งในไม่กี่ครั้งที่มันทำหล่น
การได้รับข้อความ “ไม่มีที่ว่างบนอุปกรณ์” อธิบายได้น้อยมาก โดยเฉพาะอย่างยิ่งหากไดรฟ์ของคุณยังเต็มอยู่ เหตุใดข้อความแสดงข้อผิดพลาดนี้จึงปรากฏขึ้น เหตุใดคุณไม่สามารถสร้างไฟล์ใหม่ได้แม้ว่าจะมีพื้นที่เพียงพอบนดิสก์ก็ตาม และที่สำคัญที่สุด คุณจะแก้ไขได้อย่างไร
เรามาดูกันดีกว่า
ฮาร์ดไดรฟ์ของคุณมีพื้นที่เพียงพอจริงหรือ?
ก่อนที่คุณจะรีบเร่งค้นหาวิธีแก้ไข ตรวจสอบให้แน่ใจว่ามีปัญหาตั้งแต่แรก ท้ายที่สุดแล้ว หากพื้นที่ดิสก์ในระบบของคุณหมดลงจริงๆ คุณก็ไม่จำเป็นต้องตื่นตระหนก คุณสามารถลบข้อมูลที่ไม่จำเป็นออกเพื่อเพิ่มพื้นที่ว่าง
มีคำสั่งระบบ Linux สองคำสั่งในการรับข้อมูลเกี่ยวกับพื้นที่ดิสก์ – du และ df คำสั่ง du ประมาณการการใช้พื้นที่ดิสก์ ในขณะที่คำสั่ง df วิเคราะห์พื้นที่ว่างบนดิสก์ การใช้ร่วมกับ ซูโดะ จะทำให้คุณได้รับรายงานที่แม่นยำว่าจริงๆ แล้วมีพื้นที่ว่างบนดิสก์เท่าใด
ตอนนี้เราจะใช้ df เพื่อดูว่ามีพื้นที่ว่างเหลืออยู่เท่าใด คำสั่ง df ใช้งานง่ายกว่ามากเนื่องจากจะแสดงเฉพาะระบบไฟล์ที่เมาท์และสถิติการใช้งานเท่านั้น อีกครั้งหนึ่ง เราจะใช้แฟล็ก -h เพื่อทำให้เอาต์พุตที่มนุษย์สามารถอ่านได้
sudo df -h .
แนวคิดคือการนับผลลัพธ์ของคำสั่ง du และ df ความคลาดเคลื่อนใดๆ ชี้ไปที่พื้นที่ดิสก์ที่ไม่สามารถใช้งานได้ฟรี แม้ว่าไฟล์หรือโฟลเดอร์ใดๆ จะไม่ถูกใช้ก็ตาม
เหตุใด Linux จึงแสดง “ไม่มีพื้นที่เหลือบนอุปกรณ์”?
หากคุณเห็นข้อความแสดงข้อผิดพลาด “ไม่มีพื้นที่เหลือบนอุปกรณ์” แม้ว่าจะมีพื้นที่ว่างเพียงพอบนดิสก์ของคุณ ก็แสดงว่าฮาร์ดแวร์ไม่ใช่ความผิด การหาสาเหตุที่แท้จริงของข้อผิดพลาดอาจต้องใช้เวลาในการแก้ปัญหาเล็กน้อย
แก้ไข 1: รีสตาร์ทกระบวนการโดยใช้ไฟล์ที่ถูกลบ
สาเหตุที่เป็นไปได้มากที่สุดของข้อผิดพลาด "ไม่มีพื้นที่เหลือบนอุปกรณ์" คือกระบวนการที่ยังคงใช้ไฟล์ที่ถูกลบ โชคดีที่การแก้ไขข้อผิดพลาดนี้เป็นเรื่องง่าย คุณเพียงแค่ต้อง รีสตาร์ทกระบวนการ เพื่อเพิ่มพื้นที่เก็บข้อมูลที่สงวนไว้
หลังจากนี้ พื้นที่เก็บข้อมูลที่ถูกสำรองไว้โดยกระบวนการควรจะพร้อมใช้งานอีกครั้ง ช่วยให้คุณสามารถเขียนไฟล์ได้โดยไม่เกิดข้อผิดพลาดใดๆ
แก้ไข 2: ตรวจสอบ Inodes
แม้ว่าแต่ละไดรฟ์จะมี inode จำนวนมาก แต่ก็มีจำกัด และหากระบบของคุณเต็มไปด้วยไฟล์จำนวนมหาศาล ก็เป็นไปได้ที่จะถึงขีดจำกัดนี้ก่อนที่ความจุของไดรฟ์จะหมดลง ด้วยเหตุนี้การมีไฟล์ขนาดใหญ่จึงดีกว่าการมีไฟล์ขนาดเล็กมากเกินไป
คุณสามารถตรวจสอบความพร้อมใช้งานของ inodes ได้อย่างง่ายดายโดยใช้แฟล็ก -i พร้อมกับคำสั่ง df เช่นนี้:
sudo df -i
สิ่งนี้จะบอกจำนวน inode ทั้งหมดที่มีอยู่ในระบบไฟล์อย่างชัดเจน พร้อมด้วยจำนวนที่ใช้งานอยู่ในปัจจุบัน หากไม่มีไอโหนดว่างเหลืออยู่ในระบบของคุณ นี่คือสาเหตุของข้อผิดพลาด “ไม่มีพื้นที่เหลือบนอุปกรณ์”
เนื่องจาก inodes ถูกสร้างขึ้นเฉพาะเมื่อมีการฟอร์แมตไดรฟ์ครั้งแรกเท่านั้น จึงไม่มีวิธีใดที่จะสร้าง inode เพิ่มเติมได้ สิ่งที่คุณทำได้คือลบไฟล์ที่ไม่จำเป็นออกเพื่อเพิ่มพื้นที่ว่างใน inode สำหรับไฟล์ในอนาคต
แก้ไข 3: ทำเครื่องหมายบล็อกที่ไม่ถูกต้อง
ความเสียหายของข้อมูลคือชะตากรรมที่หลีกเลี่ยงไม่ได้ของฮาร์ดไดรฟ์ใดๆ แม้ว่าไดรฟ์ใหม่จะไม่มีปัญหานี้ แต่ฮาร์ดดิสก์รุ่นเก่าจะค่อยๆ เริ่ม "เสีย"
ความหมายก็คือ บางส่วนของฮาร์ดไดรฟ์แสดงผลว่าใช้งานไม่ได้ แม้ว่าระบบไฟล์จะยังถือว่าส่วนนั้นทำงานได้ก็ตาม บล็อกที่ไม่ดีเหล่านี้ทำให้พื้นที่ว่างบนไดรฟ์เพิ่มขึ้นอย่างไม่ถูกต้อง ทั้งที่ความจริงแล้วไม่สามารถเขียนไฟล์ลงไปได้ สิ่งนี้นำไปสู่ข้อผิดพลาด "ไม่มีพื้นที่เหลือบนอุปกรณ์" เนื่องจากระบบปฏิบัติการพยายามและล้มเหลวในการจัดเก็บข้อมูลใดๆ ในตำแหน่งเหล่านี้
ไม่มีวิธีใดที่จะแก้ไขปัญหานี้ได้อย่างแท้จริง เนื่องจากเซกเตอร์เสียเป็นผลมาจากการสึกหรอทางกายภาพของฮาร์ดไดรฟ์ สิ่งเดียวที่คุณทำได้คือทำเครื่องหมายเซกเตอร์เสียเพื่อไม่ให้ระบบไฟล์อ้างอิงอีกต่อไป.
การทำเช่นนี้คุณต้องบูตจาก ซีดีสด เนื่องจากคุณไม่สามารถทำการตรวจสอบระบบไฟล์ภายในไดรฟ์ที่ทำงานอยู่ได้ เมื่อคุณทำเช่นนั้น เพียงใช้คำสั่งต่อไปนี้:
sudo fsck -vcck /dev/sda
ซึ่งจะแทนที่ /dev/sda ด้วยพาธของไดรฟ์ที่คุณต้องการซ่อมแซม วิธีนี้จะตรวจจับบล็อกที่เสียหายทั้งหมดบนไดรฟ์โดยอัตโนมัติและทำเครื่องหมายว่าไม่สามารถใช้งานได้ อย่างไรก็ตาม จะไม่เพิ่มพื้นที่จัดเก็บข้อมูลให้กับคุณ ดังนั้นให้เตรียมล้างไฟล์ที่ไม่มีประโยชน์บางไฟล์เพื่อเพิ่มพื้นที่ว่างในไดรฟ์
วิธีที่ดีที่สุดในการแก้ไขข้อผิดพลาด “ไม่มีพื้นที่เหลือบนอุปกรณ์” คืออะไร
สาเหตุปกติที่เห็นข้อผิดพลาด “ไม่มีพื้นที่เหลือบนอุปกรณ์” บน Ubuntu หรือ Linux distro อื่นๆ คือไฟล์ที่ถูกลบยังคงถูกใช้งานโดยกระบวนการที่กำลังทำงานอยู่ นี่เป็นการสงวนพื้นที่เก็บข้อมูลที่ถูกครอบครองโดยไฟล์ เพื่อป้องกันไม่ให้การดำเนินการอื่นเขียนข้อมูลลงในพื้นที่นั้น
การแก้ไขปัญหานี้ก็เป็นวิธีที่ง่ายที่สุดเช่นกัน เนื่องจากสิ่งที่คุณต้องทำคือเริ่มกระบวนการที่เป็นปัญหาใหม่ อย่างไรก็ตาม สาเหตุอื่นๆ ของข้อผิดพลาดนั้นไม่ใช่เรื่องง่ายที่จะแก้ไข
ไม่ว่าไดรฟ์ของคุณจะเต็มไปด้วยบล็อกข้อมูลที่ไม่ถูกต้องหรือไอโหนดหมด ก็ไม่มีทางแก้ไขปัญหาเหล่านี้ได้โดยตรง คุณต้องลบไฟล์ที่มีอยู่เพื่อให้มีพื้นที่สำหรับเขียนข้อมูลใหม่
.