“ rm: ไม่สามารถลบ xxx: ไม่มีที่ว่างเหลือบนอุปกรณ์” ใน BTRFS


17

ใช้งาน OpenSuse 12.2

ทันใดนั้นรูทพาร์ริชั่นดูเหมือนจะเต็ม (99%) แต่ฉันไม่สามารถลบไฟล์ด้วยตนเองได้อีกต่อไป

"rm: ไม่สามารถลบ xxx: ไม่มีที่ว่างบนอุปกรณ์" แม้ว่า 450mb จะยังว่างตาม df ระบบไฟล์คือ BTRFS

ฉันลองตรวจสอบ FS โดยใช้ btrfsck แต่มันก็ไม่ได้ช่วย

จะทำอย่างไร?


1
คุณเปิดใช้งานสแน็ปช็อตหรือไม่
MadHatter

คุณตรวจสอบว่ามีกระบวนการใดที่ยังใช้งานไฟล์อยู่หรือไม่? (ตรวจสอบด้วย lsof) ถ้าเป็นเช่นนั้นโปรดหยุดกระบวนการและลองลบไฟล์อีกครั้ง
chocripple

คำตอบ:


20

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

ข้อเสนอแนะอย่างหนึ่งเกี่ยวกับ btrfs wiki คือการปิดบังไฟล์แทนที่จะลบออก

#instead of this
rm -f ./some_file

# do this
true >| ./some_file

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

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


2
เคล็ดลับใช้งานได้ดีกับไดรฟ์เครือข่าย cif ที่ติดตั้งด้วย!
markus

2

ฉันพบข้อความแสดงข้อผิดพลาดเดียวกัน แต่ในกรณีของฉันระบบไฟล์ไม่ได้รับรายงานว่าเต็ม:

user@host:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       2.8G  2.0G  618M  77% /

แต่การถาม BTRFS เปิดเผยว่าเต็มแล้วจริง ๆ :

user@host:/# btrfs fi show
Label: none  uuid: {UUID redacted because reasons}
        Total devices 1 FS bytes used 1.92GiB
        devid    1 size 2.79GiB used 2.79GiB path /dev/sda3

แม้แต่การเขียนทับไฟล์ใด ๆ (เช่นแนะนำ tylerl) เป็นไปไม่ได้ วิธีการแก้ปัญหาของฉันพบที่http://marc.merlins.org/perso/btrfs/post_2014-05-04_Fixing-Btrfs-Filesystem-Full-Problems.htmlซึ่งแนะนำให้เรียกใช้การปรับสมดุลระบบไฟล์ด้วยbtrfs balance start -dusage=55 /path/to/filesystemตนเองโดยใช้


0

สำหรับฉันเมื่อใช้ ZFS ฉันพบว่าการลบไฟล์อื่นทำให้มีพื้นที่ว่างเพียงพอในพาร์ติชัน ZFS แล้วฉันก็สามารถลบไฟล์ที่เป็นปัญหาได้


0

ในกรณีของฉันด้วยระบบไฟล์ ZFS บน Linux ฉันไม่สามารถตัดทอนไฟล์ได้ การทำลายสแนปชอตเก่าทำได้โดยใช้เล่ห์เหลี่ยม (ถ้ามี)

zfs destroy /path/of/snapshot

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