btrfs ข้อผิดพลาด: ข้อผิดพลาดระหว่างการทรงตัว - ไม่มีพื้นที่เหลือบนอุปกรณ์


15

ระบบ Kubuntu 12.04 ของฉันมีพื้นที่เหลือบนพาร์ติชันรูทและจะไม่บู๊ต คำสั่งdf -hแสดงพื้นที่ว่างมาก (ใช้เพียง 37%):

/dev/sda2        45G   17G   29G  37%

หน้าต่อไปนี้ระบุว่าฉันควรเรียกใช้คำสั่งสมดุล:

https://btrfs.wiki.kernel.org/index.php/Problem_FAQ#I_get_.22No_space_left_on_device.22_errors.2C_but_df_says_I.27ve_got_lots_of_space

$ sudo btrfs fi balance start -dusage=5 /mount/point

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

ERROR: error during balancing '/blah/blah/blah' - No space left on device

ฉันได้รับข้อผิดพลาดเดียวกันกับ:

$ sudo btrfs fi balance start -dusage=1 /mount/point

ทางออกที่ถูกต้องคืออะไร?


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

คำตอบ:


15

มีวิธีที่balanceจะทำงานในสถานการณ์นี้

sudo btrfs fi show
sudo btrfs fi df /mount/point
sudo btrfs fi balance start -dusage=10 /mount/point

หากคำสั่งสมดุลลงท้ายด้วย "เสร็จสิ้นต้องเปลี่ยน 0 จาก XX ชิ้น" จากนั้นคุณต้องเพิ่มพารามิเตอร์เปอร์เซ็นต์ "dusage" จนกว่าจะมีการย้ายตำแหน่งอย่างน้อยหนึ่งก้อน

หากคำสั่ง balance ล้มเหลวด้วย:

ERROR: error during balancing '/blah/blah/blah' - No space left on device

คุณอาจจำเป็นต้องลบไฟล์ออกจากอุปกรณ์เพื่อเพิ่มพื้นที่ จากนั้นรันคำสั่งสมดุลอีกครั้ง

อย่างไรก็ตามต้องขอบคุณบล็อกของ Marc: btrfs - การแก้ไขปัญหาระบบไฟล์ Btrfsที่นี่เป็นอีกทางเลือกหนึ่ง:

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


7
ฉันพบว่าบางครั้งฉันก็จำเป็นต้องmount -oremount,clear_cache /mountpointเช่นกันเพื่อแก้ไขการคำนวณพื้นที่ว่าง (พวกมันเสียหาย ... )
rrauenza

1
@rrauenza ขอบคุณ! คุณควรเพิ่มคำตอบนั้นลงใน :)
mwfearnley

0

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

btrfs balance start -ddevid=<dev_id> <path>

ที่dev_idสามารถพบกับ:

btrfs fi show 

ไม่มีของเหล่านี้ทำงาน
Met

สิ่งนี้ทำให้ระบบของฉันล้มเหลวและไดรฟ์ข้อมูลไม่พร้อมใช้งานแม้ฉันจะรีบูตระบบ ฉันติดตั้งไดรฟ์ข้อมูลด้วย EXT4 และตอนนี้ฉันหวังว่าฉันสามารถกำจัดระบบ BTRFS ที่มีความละเอียดอ่อนมากซึ่งฉันถือว่าเป็นความล้มเหลวที่มีปัญหาในการออกแบบจำนวนมาก
Al Bundy

ฉันยังทำลาย btrfs ของฉันอีกครั้งเพราะฉันขัดจังหวะbtrfs balanceกระบวนการ เพื่อหลีกเลี่ยงปัญหานี้ฉันแนะนำให้ใช้เสมอ-dusage=XXเพื่อให้แน่ใจว่ากระบวนการเสร็จสิ้นภายในเวลาที่เหมาะสม เริ่มต้นด้วยตัวเลขขนาดเล็กในตอนแรกจากนั้นเพิ่มขึ้น (5, 10, 20, ... ) นอกจากนี้คุณยังสามารถตรวจสอบความคืบหน้าของความสมดุลที่มีอยู่ยาวทำงานกับbtrfs balance statusเป็นแสดงให้เห็นที่นี่ (หลังจากแบ่งโวลุ่มฉันอย่างน้อยฉันก็สามารถแยกไฟล์ด้วยbtrfs restore.)
joeytwiddle

0

sudo apt-btrfs-snapshot delete-old-than-3d ลบ snapshots ที่เก่ากว่า 3 วัน เมื่อคุณย้ายข้อมูลไปรอบ ๆ ข้อมูลสแน็ปช็อตจะออกนอกสถานที่และจำเป็นต้องเขียนข้อมูลจริงในหลาย ๆ ที่บนไดรฟ์ สิ่งนี้จะลบสแน็ปช็อตที่เกี่ยวข้องกับข้อมูลเก่าในตำแหน่งเก่าและทำให้ภาคส่วนเหล่านั้นว่างสำหรับการใช้งานอีกครั้ง ฉันยังแนะนำ duperemove เพื่อขจัดข้อมูลซ้ำซ้อนและขยายขอบเขตบนระบบไฟล์ btrfs

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