btrfs HATASI: dengeleme sırasında hata - Cihazda boşluk kalmadı


15

Kubuntu 12.04 sistemim, kök bölümünde yer kapladı ve önyükleme yapmıyor. Komut df -hçok fazla alan gösteriyor (sadece% 37'si kullanıldı):

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

Aşağıdaki sayfa balance komutunu çalıştırmam gerektiğini gösteriyor:

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

Bunun en iyi yaklaşım olduğuna emin değilim, ama bulduğum tek şey bu. Ancak, bu komutu çalıştırdığınızda, bu hatayı alıyorum:

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

İle aynı hatayı alıyorum:

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

Doğru çözüm nedir?


Bol miktarda RAM'iniz ve kararlı bir güç kaynağınız varsa, fazladan alan için geçici bir ramdisk kullanabilirsiniz. Bu makalenin altında örnek bir oturum bulunmaktadır . Ancak aşağıdaki kabul edilen cevap çok daha basit bir yaklaşımdır.
joeytwiddle

Yanıtlar:


15

balanceBu durumda koşmanın yolları var .

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

Balance komutu "Bitti, XX yığınından 0'ı değiştirmek zorunda kaldı" ile bitiyorsa, en az bir yığın taşınana kadar "dusage" yüzde parametresini artırmanız gerekir.

balance komutu başarısız olursa:

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

Yer açmak için dosyaları cihazdan silmeniz gerekebilir. Ardından balance komutunu tekrar çalıştırın.

Ancak, Marc'ın Blog'u sayesinde : btrfs - Btrfs Dosya Sistemi Tam Sorunlarını Giderme başka bir seçenektir:

Bu sorunu çözmenin bir yolu da btrfs dosya sisteminize bir cihaz (hatta bir USB anahtarı bile olacaktır) eklemektir. Bu, bakiyenin başlamasına izin vermelidir ve ardından bakiye bittiğinde cihazı btrfs cihaz silme ile kaldırabilirsiniz. Listede ayrıca çekirdek 3.14'ün, eski çekirdeklerin yapamayacağı bazı dengeleme sorunlarını giderebileceği söyleniyor, bu nedenle çekirdek eskiyse bir şans verin.


7
mount -oremount,clear_cache /mountpointBoş alan hesaplamalarını düzeltmek için de zaman zaman ihtiyacım olduğunu gördüm . (Onlar bozulur ...)
rrauenza

1
@rrauenza, teşekkürler! Bunu bir cevap olarak eklemelisiniz :)
mwfearnley

0

Kabul edilen cevapta her şeyi denedim ve Marc'ın blogunda, -dusageparametreyi artırmak ve başka bir blok cihazı eklemek de dahil olmak üzere , hepsi boşuna. Bazı dosyaları sildikten ve diskte biraz yer açtıktan sonra bile, balancetamamlanamadı. Nedense her zaman verileri neredeyse tam diske taşıyor gibiydi. Sonunda benim için işe yarayan şey, tam cihaza dengelemeyi kısıtlamaktı:

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

nerede dev_idbulunabilir:

btrfs fi show 

Bunların hiçbiri çalıştı
Met

Bu sistemimi çökertti ve sistemi yeniden başlattığımda bile birim kullanılamıyor. EXT4 ile bir birim yükledim ve şimdi birçok tasarım probleminde başarısızlık olarak gördüğüm çok hassas BTRFS sisteminden kurtulabileceğimi umuyorum.
Al Bundy

Ayrıca btrfs hacmimi bir kez kırdım, çünkü btrfs balancesüreci yarıda kestim . Bundan kaçınmak -dusage=XXiçin, işlemin makul bir süre içinde tamamlanmasını sağlamak için her zaman kullanmanızı öneririm . Önce küçük sayılarla başlayın, sonra artırın (5, 10, 20, ...). Burada gösterildiğibtrfs balance status gibi , mevcut uzun vadeli bakiyenin ilerlemesini de izleyebilirsiniz . ( btrfs restore
Sesimi kırdıktan

0

sudo apt-btrfs-anlık görüntü sil-daha eski-3d 3 günden eski anlık görüntüleri siler. Verileri hareket ettirdikçe, anlık görüntü verileri yerinden çıkar ve gerçek verilerin sürücüdeki birden çok yere yazılması gerekir. Bu, eski konumlardaki eski verilere ait anlık görüntüleri kaldırır ve bu sektörleri tekrar kullanım için serbest bırakır. Ben de btrfs dosya sistemindeki veri ve uzantıları tekilleştirmek için duperemove öneririm.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.