3 วิธียอดนิยมในการแก้ไขข้อผิดพลาด “No Space Left on Device” ใน Linux
ข้อผิดพลาดที่ไม่มีสาเหตุที่ชัดเจนเป็นปัญหาที่น่ารำคาญที่สุดที่ต้องจัดการ และ ถึงแม้ ลินุกซ์(Linux)มักจะมีความเฉพาะเจาะจงในข้อความแสดงข้อผิดพลาด แต่นี่เป็นหนึ่งในไม่กี่ครั้งที่มันจะหล่นลงมา
การได้รับ “ไม่มีข้อผิดพลาดอุปกรณ์เหลืออยู่” อธิบายได้น้อยมาก โดยเฉพาะอย่างยิ่งหากไดรฟ์ของคุณยังไม่เพียงพอ เหตุใดข้อความแสดงข้อผิดพลาดนี้จึงปรากฏขึ้น เหตุใดคุณจึงไม่สามารถสร้างไฟล์ใหม่ได้แม้ว่าจะมีเนื้อที่ว่างเพียงพอบนดิสก์ และที่สำคัญแก้ไขอย่างไร?
ลองหา
ฮาร์ดไดรฟ์ ของคุณมีพื้นที่เพียงพอจริง(Hard Drive Actually Have Enough Space)หรือ
ก่อนที่คุณจะรีบเร่งหาทางแก้ไข ให้แน่ใจว่ามีปัญหาอยู่ก่อน เพราะหากพื้นที่ดิสก์บนระบบของคุณหมดลงจริงๆ ก็ไม่จำเป็นต้องตื่นตระหนก คุณสามารถลบข้อมูลที่ไม่จำเป็นออกเพื่อเพิ่มพื้นที่ว่างได้
มี คำสั่งระบบ Linux สอง คำสั่งสำหรับการรับข้อมูลเกี่ยวกับพื้นที่ดิสก์ - du และ df คำสั่ง du ประเมินการใช้พื้นที่ดิสก์ ในขณะที่คำสั่ง df วิเคราะห์พื้นที่ว่างบนดิสก์ การใช้สิ่งเหล่านี้ร่วมกับsudoจะทำให้คุณมีรายงานที่แม่นยำถึงจำนวนเนื้อที่ว่างบนดิสก์จริง
- เริ่มต้นด้วยคำสั่ง du เอาต์พุตอาจยาวและยุ่งยากในการดำเนินการ ดังนั้นเราจะใช้แฟล็ก -s และ -h -s สรุปผลลัพธ์ ในขณะที่ -h รับรองว่ามนุษย์สามารถอ่านได้ ดังนั้นให้ป้อนคำสั่ง sudo du -sh / where / ชี้ไปที่ไดเร็กทอรีฐาน
- อย่ากังวลกับข้อความที่ถูกปฏิเสธการอนุญาตทั้งหมด นั่นคือวิธีที่ข้อความจะสืบค้นผ่านไดเรกทอรีย่อยทั้งหมดของระบบ ขึ้นอยู่กับขนาดของไดรฟ์ คุณอาจต้องปล่อยให้ไดรฟ์ทำงานชั่วขณะหนึ่ง เนื่องจากต้องดำเนินการทุกอย่างซ้ำๆ
- เมื่อ du เสร็จสิ้นการสแกน มันจะแสดงรายการไดเร็กทอรีอย่างง่ายควบคู่ไปกับขนาดของไดเร็กทอรี ตัวอย่างเช่น นี่คือผลลัพธ์ของคำสั่ง du ที่ใช้กับไดเร็กทอรีทั่วไป
ตอนนี้เราจะใช้ df เพื่อดูว่ามีเนื้อที่ว่างเท่าใด คำสั่ง df ใช้งานได้ง่ายกว่ามาก เนื่องจากจะแสดงเฉพาะระบบไฟล์ที่เมาท์และสถิติการใช้งานเท่านั้น อีกครั้ง เราจะใช้แฟล็ก -h เพื่อให้เอาต์พุตที่มนุษย์อ่านได้
sudo df -h
แนวคิดคือการนับผลลัพธ์ของคำสั่ง du และ df ความคลาดเคลื่อนใด ๆ ชี้ไปที่พื้นที่ดิสก์ที่ไม่สามารถใช้งานได้โดยอิสระแม้จะไม่ได้ใช้โดยไฟล์หรือโฟลเดอร์ใด ๆ
เหตุใดLinux จึงแสดง(Does Linux Show) "ไม่มี ที่ ว่างเหลือ(Space Left)บนอุปกรณ์"
หากคุณเห็นข้อความแสดงข้อผิดพลาด "No Space Left on Device" แม้ว่าจะมีเนื้อที่ว่างเพียงพอบนดิสก์ของคุณ แต่ก็ไม่ใช่ฮาร์ดแวร์ที่มีข้อบกพร่อง การหาสาเหตุที่แท้จริงของข้อผิดพลาดอาจต้องใช้เวลาในการแก้ไขปัญหาเล็กน้อย
- ไฟล์ที่ถูกลบล่าสุด: สาเหตุที่พบบ่อยที่สุดในการเห็นข้อผิดพลาดนี้คือไฟล์ที่ถูกลบล่าสุด บ่อยครั้งที่ไฟล์ถูกลบในขณะที่กระบวนการยังใช้งานอยู่ ทำให้พื้นที่สงวนไว้แม้ว่าไฟล์จะหายไปแล้ว
- Inodes(Enough Inodes)ไม่ เพียงพอ : อีกสาเหตุที่พบบ่อยคือการมีinodes ไม่ เพียงพอ Inodes คือหน้าดัชนีของ ระบบไฟล์ Unixซึ่งเก็บข้อมูลเมตาของทุกไฟล์ในการจัดเก็บ อย่างไรก็ตาม inodes ไม่ได้จำกัด และ inodes หมดก่อนที่พื้นที่จัดเก็บจะทำให้คุณเกิดข้อผิดพลาด "No space left on device" ได้
- ฮาร์ด(Hard) ไดรฟ์ ล้มเหลว: แน่นอนว่ามีความเป็นไปได้ที่ฮาร์ดไดรฟ์จะล้มเหลว และพื้นที่ว่างที่เห็นได้ชัดส่วนใหญ่จะถูกใช้โดยเซกเตอร์เสีย เนื่องจากระบบไม่สามารถเขียนไฟล์ใดๆ ไปยังตำแหน่งเหล่านี้ได้ จึงเกิดข้อผิดพลาดขึ้น
แก้ไข 1: เริ่มกระบวนการใหม่โดยใช้ไฟล์ที่ถูกลบ(Using Deleted Files)
สาเหตุที่เป็นไปได้มากที่สุดของข้อผิดพลาด “ไม่มีพื้นที่เหลือบนอุปกรณ์” คือกระบวนการที่ยังคงใช้ไฟล์ที่ถูกลบ โชคดีที่การแก้ไขข้อผิดพลาดนี้ทำได้ง่าย คุณเพียงแค่ต้องเริ่มกระบวนการใหม่(restart the process)เพื่อเพิ่มพื้นที่จัดเก็บที่สงวนไว้
- ในการค้นหากระบวนการที่มีปัญหา คุณต้องใช้คำสั่ง lsof และ grep คำสั่ง lsof จะแสดงรายการไฟล์ที่เปิดอยู่ทั้งหมดที่ใช้โดยกระบวนการที่รันอยู่ และ grep สามารถจำกัดการเลือกให้เหลือเฉพาะไฟล์ที่ถูกลบ ดังนั้นป้อน sudo lsof / | grep ถูกลบโดยที่ / คือไดเร็กทอรีฐานและ | ไพพ์สำหรับเชื่อมโยงเอาต์พุตของ lsof กับ grep
- ตอนนี้คุณสามารถรีสตาร์ทกระบวนการที่ได้รับผลกระทบด้วยคำสั่ง sudo systemctl restart service_name โดยที่ชื่อบริการคือชื่อของบริการที่ปรากฏในการค้นหา
- หากมีหลายกระบวนการเช่นนี้ หรือคุณไม่อยากยุ่งกับการค้นหาบริการเฉพาะ คุณสามารถรีเซ็ตทั้งหมดได้ด้วยคำสั่ง sudo systemctl daemon-reload สิ่งนี้จะสร้างการพึ่งพาทั้งหมดใหม่ โดยคำนึงถึงการเปลี่ยนแปลงใดๆ ในระบบไฟล์ด้วย
หลังจากนี้ พื้นที่เก็บข้อมูลที่ถูกเก็บไว้โดยกระบวนการควรจะพร้อมใช้งานอีกครั้ง ช่วยให้คุณสามารถเขียนไฟล์ได้โดยไม่เกิดข้อผิดพลาดใดๆ
แก้ไข 2: ตรวจสอบ Inodes
แม้ว่าแต่ละไดรฟ์จะมีไอโหนดจำนวนมาก แต่ก็มีขอบเขตจำกัด และหากระบบของคุณเต็มไปด้วยไฟล์จำนวนมากอย่างไม่น่าเชื่อ ก็เป็นไปได้ที่จะถึงขีดจำกัดนี้ก่อนที่จะหมดความจุของไดรฟ์ นี่คือเหตุผลที่ดีกว่าที่จะมีไฟล์ขนาดใหญ่มากกว่าไฟล์ขนาดเล็กมากเกินไป
คุณสามารถตรวจสอบความพร้อมใช้งานของ inodes ได้อย่างง่ายดายโดยใช้แฟล็ก -i ด้วยคำสั่ง df แบบนี้:
sudo df -i
สิ่งนี้จะบอกจำนวน inodes ทั้งหมดที่มีอยู่ในระบบไฟล์อย่างชัดเจนพร้อมกับจำนวนที่ใช้อยู่ในปัจจุบัน หากไม่มีไอโหนดว่างเหลืออยู่ในระบบของคุณ นี่เป็นสาเหตุของข้อผิดพลาด “No space left on device”
เนื่องจาก inodes ถูกสร้างขึ้นเมื่อทำการฟอร์แมตไดรฟ์ครั้งแรกเท่านั้น ไม่มีทางที่จะสร้าง inodes เพิ่มเติมได้ สิ่งที่คุณทำได้คือลบไฟล์ที่ไม่จำเป็นเพื่อเพิ่มไอโหนดสำหรับไฟล์ในอนาคต
แก้ไข 3: ทำเครื่องหมาย Bad Blocks
(Data)ความเสียหายของข้อมูล เป็นชะตากรรมที่หลีกเลี่ยงไม่ได้ของฮาร์ดไดรฟ์ใดๆ แม้ว่าไดรฟ์ใหม่จะไม่พบปัญหานี้ แต่ฮาร์ดดิสก์รุ่นเก่าจะค่อยๆ เริ่ม "แย่"
ซึ่งหมายความว่าบางส่วนของฮาร์ดไดรฟ์ไม่สามารถใช้งานได้ แม้ว่าระบบไฟล์จะยังถือว่าใช้งานได้ บล็อกที่ไม่ดีเหล่านี้ทำให้พื้นที่ว่างบนไดรฟ์ขยายตัวอย่างไม่ถูกต้อง โดยที่จริงแล้วไม่มีไฟล์ใดที่สามารถเขียนลงไปได้ สิ่งนี้นำไปสู่ข้อผิดพลาด "ไม่มีพื้นที่เหลือบนอุปกรณ์" เนื่องจากระบบปฏิบัติการพยายามและไม่สามารถจัดเก็บข้อมูลใด ๆ ในตำแหน่งเหล่านี้ได้
ไม่มีวิธีแก้ไขปัญหานี้อย่างแท้จริง เนื่องจากเซกเตอร์เสียเป็นผลมาจากการสึกหรอทางกายภาพของฮาร์ดไดรฟ์ สิ่งเดียวที่คุณทำได้คือทำเครื่องหมายเซกเตอร์เสียเพื่อไม่ให้ระบบไฟล์อ้างอิงอีกต่อไป
การทำเช่นนี้จะทำให้คุณต้องบูตจากLive CDเนื่องจากคุณไม่สามารถทำการตรวจสอบระบบไฟล์(File System Check)ภายในไดรฟ์ที่กำลังทำงานอยู่ เมื่อคุณทำเช่นนั้น เพียงใช้คำสั่งต่อไปนี้:
sudo fsck -vcck /dev/sda
สิ่งนี้จะแทนที่ /dev/sda ด้วยเส้นทางของไดรฟ์ที่คุณต้องการซ่อมแซม การดำเนินการนี้จะตรวจหาบล็อกที่ไม่ถูกต้องทั้งหมดบนไดรฟ์และทำเครื่องหมายว่าใช้ไม่ได้ อย่างไรก็ตาม มันจะไม่เพิ่มความจุให้กับคุณ ดังนั้นโปรดเตรียมล้างไฟล์ที่ไม่มีประโยชน์เพื่อเพิ่มพื้นที่ว่างบนไดรฟ์
วิธีที่ดีที่สุดในการแก้ไขข้อผิดพลาด "No Space Left on Device" คืออะไร?
สาเหตุปกติที่จะเห็นข้อผิดพลาด "ไม่มีพื้นที่เหลือบนอุปกรณ์" บนUbuntuหรือLinux distro อื่น ๆ คือไฟล์ที่ถูกลบซึ่งยังคงถูกใช้โดยกระบวนการที่ทำงานอยู่ นี่เป็นการสงวนพื้นที่เก็บข้อมูลที่ถูกครอบครองโดยไฟล์ ทำให้การดำเนินการอื่น ๆ ไม่สามารถเขียนข้อมูลลงในพื้นที่นั้นได้
การแก้ไขปัญหานี้ก็ง่ายเช่นกัน เนื่องจากสิ่งที่คุณต้องทำคือเริ่มกระบวนการที่เป็นปัญหาใหม่ อย่างไรก็ตาม สาเหตุอื่นๆ ของข้อผิดพลาดนั้นแก้ไขได้ไม่ง่ายนัก
ไม่ว่าไดรฟ์ของคุณจะถูกบล็อกข้อมูลไม่ดีหรือมีไอโหนดหมด ไม่มีทางแก้ไขปัญหาเหล่านี้ได้โดยตรง คุณต้องลบไฟล์ที่มีอยู่เพื่อให้มีที่ว่างสำหรับเขียนข้อมูลใหม่
Related posts
8 วิธีในการแก้ไขข้อผิดพลาด “คุณไม่ได้รับอนุญาตให้บันทึกในตำแหน่งนี้” ใน Windows
แก้ไขข้อผิดพลาด "Word Cannot Start the Converter MSWRD632.WPC/SSPDFCG_x64.CNV"
แก้ไขข้อผิดพลาด “Cannot Start Microsoft Office Outlook”
วิธีแก้ไข "ไม่สามารถโหลดรูปภาพได้ แตะเพื่อลองอีกครั้ง” Instagram Error
วิธีแก้ไขข้อผิดพลาด “Windows ไม่สามารถเข้าถึงเส้นทางอุปกรณ์หรือไฟล์ที่ระบุ”
5 วิธีที่ดีที่สุดในการแก้ไข “การทำงานล้มเหลวด้วยข้อผิดพลาด 0x0000011B” ใน Windows
13 วิธีในการแก้ไข “ข้อความนี้ยังไม่ได้ดาวน์โหลดจากเซิร์ฟเวอร์” บน iPhone และ iPad
แก้ไขข้อผิดพลาด "คุณจะต้องมีแอปใหม่เพื่อเปิด ms-windows-store" ใน Windows
แก้ไขข้อผิดพลาด “Windows Can't Connect To This Network”
[แก้ไข] ข้อผิดพลาด "Referenced Account Is ล็อค"
วิธีแก้ไข “ไม่พบอุปกรณ์ TPM ข้อผิดพลาด” ใน Windows
5 Ways ถึง Fix GTA 5 Game Memory Error
8 วิธีในการแก้ไข "แย่จัง!" ข้อผิดพลาดของหน้าขัดข้องใน Chrome
3 Ways เพื่อ Fix Screen Overlay Detected Error บน Android
6 วิธีที่ดีที่สุดในการแก้ไขข้อผิดพลาด “Failed to Load steamui.dll”
วิธีการแก้ไข “Windows ไม่สามารถทำการฟอร์แมต” Error
แก้ไข “คุณต้องได้รับอนุญาตเพื่อดำเนินการนี้” Error
9 วิธีในการแก้ไขข้อผิดพลาด "อัปโหลดที่ถูกบล็อก" ของ OneDrive ใน Windows
แก้ไขข้อผิดพลาด“ ไม่สามารถติดตั้ง Windows ลงในดิสก์นี้”
6 วิธีง่ายๆ ในการตรวจสอบการใช้หน่วยความจำบน Linux