btrf dan kehilangan ruang kosong

8

Saya mengubah partisi ext4 saya menjadi btrfs dan menghapus subvolume save setelah melakukannya. Kemudian saya mengaktifkan kompresi (lzo) dari sistem file dalam file fstab dan semuanya sudah benar sejauh ini.

Kemudian saya memaksa kompresi semua file menggunakan perintah defragmentasi dengan parameter -c bahwa kompresi baru diterapkan ke semua file.

Sambil melakukan itu, saya perhatikan bahwa SSD saya telah terisi penuh - sebelum saya memiliki ruang kosong 6gigs. Tidak, saya tidak punya apa-apa lagi.

easteregg@x201s:~$ btrfs fi df /
Data: total=50.00GB, used=49.17GB
System: total=32.00MB, used=4.00KB
Metadata: total=24.50GB, used=9.86GB

dan

easteregg@x201s:~$ df -ha
Filesystem        Size  Used Avail Use% Mounted on
/dev/sda1          75G   60G  852M  99% /

Jadi sekarang. Bagaimana saya bisa mendapatkan kembali ruang kosong saya. Saya berharap mendapatkan lebih banyak ruang karena kompresi lzo. Dan sekarang!

Fs sudah terpasang dengan benar.

easteregg@x201s:~$ mount
/dev/sda1 on / type btrfs (rw,noatime,ssd,compress=lzo)

Ada ide bagaimana memperbaiki masalah ini?

telur Paskah
sumber
Saya sekarang sudah mengerti: Anda tidak bisa melakukan penyeimbangan online. Itu menjelaskan mengapa tidak ada yang berhasil untuk saya. Jadi saya baru saja mem-boot sistem penyelamat saya dan baru saja melakukan penyeimbangan ulang seluruh disk dan setelah itu saya melakukan perintah defragmentasi dengan kompresi diaktifkan. Sekarang saya sudah mendapat sekitar 17 gigs ruang kosong! bagus :)
easteregg
1
Sebagai praktik terbaik, hanya menyimpan set snapshot minimal dan menghapus yang tidak perlu untuk menghindari pemborosan ruang pada volume, karena btrf adalah sistem file copy-on-write, seiring berjalannya waktu, semakin banyak blok data akan diubah, dengan demikian membuat snapshot menempati semakin banyak ruang pada disk.
Terry Wang
2
Lihat juga pertanyaan ini , yang memiliki penjelasan menyeluruh dan komentar yang bermanfaat.
ignis

Jawaban:

8

Saya tahu pertanyaan ini sudah lama - tetapi mulai hari ini perintah keseimbangan memecahkan masalah ini:

Selama konversi, banyak ruang akan dialokasikan untuk memindahkan barang ke sana. Setelah dialokasikan, itu tidak akan muncul sebagai "gratis" atau "tidak terisi" lagi. Untuk memperbaikinya, mulailah dengan menyeimbangkan

btrfs balance start "path"

Anda juga dapat memberi tahu perintah keseimbangan, untuk hanya menyeimbangkan potongan, yang digunakan untuk persentase tertentu - seperti 0% yang berarti potongan kosong:

btrfs balance start "path" -dusage=0 -musage=0

parameter -d berarti opsi untuk data. parameter -m berarti opsi untuk metadata.

bermain dengan perintah keseimbangan, itu akan membantu.

wuppi
sumber
5

Lihatlah output dari btrfs fi df:

Data: total=50.00GB, used=49.17GB
System: total=32.00MB, used=4.00KB
Metadata: total=24.50GB, used=9.86GB

Bagian tersebut totaladalah ruang yang dialokasikan, sedangkan usedyang sebenarnya digunakan oleh btrfs. Perbedaan antara totaldan used(sekitar 15 GB) adalah ruang Anda yang hilang.Seperti yang Anda lihat, itu sudah dialokasikan untuk blok metadata.

Saya hanya memiliki pengalaman hobi dengan btrfs, tetapi saya tidak berpikir konversi ext4 adalah cara terbaik untuk membuat sistem file btrfs yang ditata dengan baik. Untungnya, Anda dapat menyeimbangkan kembali seluruh sistem file untuk membuatnya melakukan kembali semua alokasi.

Seperti biasa, gunakan cadangan.

ramslök
sumber