3 วิธียอดนิยมในการแก้ไขข้อผิดพลาด “ไม่มีพื้นที่เหลือบนอุปกรณ์” ใน Linux


ข้อผิดพลาดที่ไม่มีสาเหตุชัดเจนคือปัญหาที่น่ารำคาญที่สุดที่ต้องจัดการ และแม้ว่าโดยปกติแล้ว Linux จะระบุข้อความแสดงข้อผิดพลาดไว้โดยเฉพาะ แต่นี่เป็นหนึ่งในไม่กี่ครั้งที่มันทำหล่น

การได้รับข้อความ “ไม่มีที่ว่างบนอุปกรณ์” อธิบายได้น้อยมาก โดยเฉพาะอย่างยิ่งหากไดรฟ์ของคุณยังเต็มอยู่ เหตุใดข้อความแสดงข้อผิดพลาดนี้จึงปรากฏขึ้น เหตุใดคุณไม่สามารถสร้างไฟล์ใหม่ได้แม้ว่าจะมีพื้นที่เพียงพอบนดิสก์ก็ตาม และที่สำคัญที่สุด คุณจะแก้ไขได้อย่างไร

เรามาดูกันดีกว่า

ฮาร์ดไดรฟ์ของคุณมีพื้นที่เพียงพอจริงหรือ?

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

มีคำสั่งระบบ Linux สองคำสั่งในการรับข้อมูลเกี่ยวกับพื้นที่ดิสก์ – du และ df คำสั่ง du ประมาณการการใช้พื้นที่ดิสก์ ในขณะที่คำสั่ง df วิเคราะห์พื้นที่ว่างบนดิสก์ การใช้ร่วมกับ ซูโดะ จะทำให้คุณได้รับรายงานที่แม่นยำว่าจริงๆ แล้วมีพื้นที่ว่างบนดิสก์เท่าใด

  1. มาเริ่มกันที่คำสั่ง du ผลลัพธ์อาจค่อนข้างยาวและยุ่งยากในการดำเนินการ ดังนั้นเราจะใช้แฟล็ก -s และ -h -s สรุปผลลัพธ์ ในขณะที่ -h ทำให้แน่ใจว่ามนุษย์สามารถอ่านได้ ดังนั้นให้ป้อนคำสั่ง sudo du -sh /โดยที่ /ชี้ไปที่ไดเร็กทอรีฐาน
    1. ไม่ต้องกังวลกับข้อความที่ถูกปฏิเสธการอนุญาตทั้งหมด นั่นคือวิธีการดึงข้อมูลผ่านไดเร็กทอรีย่อยทั้งหมดของระบบ ขึ้นอยู่กับขนาดของไดรฟ์ คุณอาจต้องปล่อยให้มันทำงานสักพัก เนื่องจากไดรฟ์จะผ่านทุกอย่างซ้ำๆ
      1. เมื่อสแกนเสร็จแล้ว ระบบจะแสดงรายการไดเร็กทอรีแบบง่ายๆ ควบคู่ไปกับขนาดของไดเร็กทอรี ตัวอย่างเช่น นี่คือผลลัพธ์ของคำสั่ง du ที่ใช้กับไดเร็กทอรีทั่วไป
      2. ตอนนี้เราจะใช้ df เพื่อดูว่ามีพื้นที่ว่างเหลืออยู่เท่าใด คำสั่ง df ใช้งานง่ายกว่ามากเนื่องจากจะแสดงเฉพาะระบบไฟล์ที่เมาท์และสถิติการใช้งานเท่านั้น อีกครั้งหนึ่ง เราจะใช้แฟล็ก -h เพื่อทำให้เอาต์พุตที่มนุษย์สามารถอ่านได้

        sudo df -h .

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

        เหตุใด Linux จึงแสดง “ไม่มีพื้นที่เหลือบนอุปกรณ์”?

        หากคุณเห็นข้อความแสดงข้อผิดพลาด “ไม่มีพื้นที่เหลือบนอุปกรณ์” แม้ว่าจะมีพื้นที่ว่างเพียงพอบนดิสก์ของคุณ ก็แสดงว่าฮาร์ดแวร์ไม่ใช่ความผิด การหาสาเหตุที่แท้จริงของข้อผิดพลาดอาจต้องใช้เวลาในการแก้ปัญหาเล็กน้อย

        • ไฟล์ที่ถูกลบล่าสุด: สาเหตุที่พบบ่อยที่สุดในการเห็นข้อผิดพลาดนี้คือไฟล์ที่ถูกลบล่าสุด บ่อยครั้งที่ไฟล์ถูกลบในขณะที่กระบวนการยังคงใช้งานอยู่ โดยจะรักษาพื้นที่ไว้แม้ว่าไฟล์จะหายไปแล้วก็ตาม
        • ไอโหนดไม่เพียงพอ: สาเหตุที่พบบ่อยอีกประการหนึ่งคือการมี ไอโหนด ไม่เพียงพอ Inodes เป็นหน้าดัชนีของระบบไฟล์ Unix ซึ่งเก็บข้อมูลเมตาของทุกไฟล์ในที่จัดเก็บ อย่างไรก็ตาม ไอโหนดไม่ได้ไม่จำกัด และไอโหนดจะหมดก่อนที่พื้นที่เก็บข้อมูลจะทำให้เกิดข้อผิดพลาด “ไม่มีพื้นที่เหลือบนอุปกรณ์”
        • ฮาร์ดไดรฟ์ที่ล้มเหลว: แน่นอนว่ามีความเป็นไปได้ที่ฮาร์ดไดรฟ์จะล้มเหลว และพื้นที่ว่างส่วนใหญ่ถูกกินโดยเซกเตอร์เสีย เนื่องจากระบบล้มเหลวในการเขียนไฟล์ใดๆ ไปยังตำแหน่งเหล่านี้ จึงทำให้เกิดข้อผิดพลาด
        • แก้ไข 1: รีสตาร์ทกระบวนการโดยใช้ไฟล์ที่ถูกลบ

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

          1. หากต้องการค้นหากระบวนการที่เป็นปัญหา คุณต้องใช้คำสั่ง lsof และ grep คำสั่ง lsof จะแสดงรายการไฟล์ที่เปิดอยู่ทั้งหมดที่ใช้โดยกระบวนการที่รันอยู่ และ grep สามารถจำกัดการเลือกให้แคบลงเหลือเพียงไฟล์ที่ถูกลบ ดังนั้นให้ป้อน sudo lsof / | grep ถูกลบโดยที่ / เป็นไดเร็กทอรีฐานและ | ไปป์สำหรับเชื่อมโยงเอาต์พุตของ lsof กับ grep
            1. ตอนนี้ คุณสามารถรีสตาร์ทกระบวนการที่ได้รับผลกระทบได้ด้วยคำสั่ง sudo systemctl restart service_nameโดยที่ชื่อบริการคือชื่อของบริการที่ปรากฏในการค้นหา
            2. .
              1. หากมีหลายกระบวนการเช่นนี้หรือคุณไม่ต้องการกังวลกับการค้นหาบริการเฉพาะ คุณก็สามารถรีเซ็ตทั้งหมดได้โดยใช้คำสั่ง sudo systemctl daemon-reloadสิ่งนี้จะสร้างการขึ้นต่อกันทั้งหมดใหม่ โดยคำนึงถึงการเปลี่ยนแปลงใด ๆ ในระบบไฟล์
              2. หลังจากนี้ พื้นที่เก็บข้อมูลที่ถูกสำรองไว้โดยกระบวนการควรจะพร้อมใช้งานอีกครั้ง ช่วยให้คุณสามารถเขียนไฟล์ได้โดยไม่เกิดข้อผิดพลาดใดๆ

                แก้ไข 2: ตรวจสอบ Inodes

                แม้ว่าแต่ละไดรฟ์จะมี inode จำนวนมาก แต่ก็มีจำกัด และหากระบบของคุณเต็มไปด้วยไฟล์จำนวนมหาศาล ก็เป็นไปได้ที่จะถึงขีดจำกัดนี้ก่อนที่ความจุของไดรฟ์จะหมดลง ด้วยเหตุนี้การมีไฟล์ขนาดใหญ่จึงดีกว่าการมีไฟล์ขนาดเล็กมากเกินไป

                คุณสามารถตรวจสอบความพร้อมใช้งานของ inodes ได้อย่างง่ายดายโดยใช้แฟล็ก -i พร้อมกับคำสั่ง df เช่นนี้:

                sudo df -i

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

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

                แก้ไข 3: ทำเครื่องหมายบล็อกที่ไม่ถูกต้อง

                ความเสียหายของข้อมูลคือชะตากรรมที่หลีกเลี่ยงไม่ได้ของฮาร์ดไดรฟ์ใดๆ แม้ว่าไดรฟ์ใหม่จะไม่มีปัญหานี้ แต่ฮาร์ดดิสก์รุ่นเก่าจะค่อยๆ เริ่ม "เสีย"

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

                ไม่มีวิธีใดที่จะแก้ไขปัญหานี้ได้อย่างแท้จริง เนื่องจากเซกเตอร์เสียเป็นผลมาจากการสึกหรอทางกายภาพของฮาร์ดไดรฟ์ สิ่งเดียวที่คุณทำได้คือทำเครื่องหมายเซกเตอร์เสียเพื่อไม่ให้ระบบไฟล์อ้างอิงอีกต่อไป.

                การทำเช่นนี้คุณต้องบูตจาก ซีดีสด เนื่องจากคุณไม่สามารถทำการตรวจสอบระบบไฟล์ภายในไดรฟ์ที่ทำงานอยู่ได้ เมื่อคุณทำเช่นนั้น เพียงใช้คำสั่งต่อไปนี้:

                sudo fsck -vcck /dev/sda

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

                วิธีที่ดีที่สุดในการแก้ไขข้อผิดพลาด “ไม่มีพื้นที่เหลือบนอุปกรณ์” คืออะไร

                สาเหตุปกติที่เห็นข้อผิดพลาด “ไม่มีพื้นที่เหลือบนอุปกรณ์” บน Ubuntu หรือ Linux distro อื่นๆ คือไฟล์ที่ถูกลบยังคงถูกใช้งานโดยกระบวนการที่กำลังทำงานอยู่ นี่เป็นการสงวนพื้นที่เก็บข้อมูลที่ถูกครอบครองโดยไฟล์ เพื่อป้องกันไม่ให้การดำเนินการอื่นเขียนข้อมูลลงในพื้นที่นั้น

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

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

                .

                กระทู้ที่เกี่ยวข้อง:


                30.08.2022