Defragmentasi Btrfs Dari File / Folder

9

Saya baru saja menginstal Ubuntu 11.10 pada sistem file Btrfs dan saya ingin bertanya tentang defragmentasi file.

Apakah saya benar-benar perlu mendefrag file atau seluruh sistem?

Defragment # btrfs filesystem defragment / pool1 Defragment

Defragmentasi Btrfs

Satu Nol
sumber
Tidak, btrs, ext4,3,2, ETC ... tidak mengharuskan Anda untuk mendefrag drive, mereka menderita seperti halnya sistem file lainnya.
Uri Herrera
Tapi sama sekali tidak sama dengan NTFS.
Uri Herrera

Jawaban:

13

Anda tidak benar-benar perlu mendefrag sistem file Btrfs secara manual.

Ya, Btrfs adalah SAP (copy-on-write), yang akan menyiratkan fragmen file lebih dari Ext, tetapi ini dibahas dalam beberapa aspek desain, termasuk kemampuan untuk dengan mudah men-defrag sistem file saat sedang online. Kutipan ini memberikan lebih banyak detail (penekanan milik saya):

Defragmentasi otomatis

Sistem file COW (copy-on-write) memiliki banyak kelebihan, tetapi mereka juga memiliki beberapa kelemahan, misalnya fragmentasi. Btrfs memaparkan data secara berurutan ketika file ditulis ke disk untuk pertama kalinya, tetapi desain SAP menyiratkan bahwa setiap modifikasi berikutnya pada file tersebut tidak boleh ditulis di atas data lama, tetapi ditempatkan di blok bebas, yang akan menyebabkan fragmentasi (database RPM adalah kasus umum dari masalah ini). Selain itu, ia menderita masalah fragmentasi yang umum untuk semua sistem file.

Btrfs sudah menawarkan alternatif untuk mengatasi masalah ini: Pertama, ia mendukung defragmentasi online menggunakan perintah btrfs filesystem defragment. Kedua, ia memiliki opsi mount -o nodatacow,, yang menonaktifkan COW untuk data. Sekarang btrfs menambahkan opsi ketiga, -o autodefragopsi mount. Mekanisme ini mendeteksi penulisan acak kecil ke dalam file dan mengantriya untuk proses defrag otomatis, sehingga sistem file akan mendefrag dirinya sendiri saat sedang digunakan. Ini belum cocok untuk virtualisasi atau beban kerja basis data besar, tetapi berfungsi dengan baik untuk file yang lebih kecil seperti rpm, SQLite atau basis data bdb.

Jadi, selama Anda tidak berencana untuk menjalankan perangkat lunak intensif IO seperti database di bawah beban yang signifikan, Anda harus baik-baik saja, selama Anda memasang sistem file Anda dengan autodefragopsi tersebut.

Untuk memeriksa fragmentasi file, Anda dapat menggunakan utilitas filefrag :

$ find /path -type f -exec filefrag {} + >frag.list
# Now you can use your favourite tools to sort the data

Pada sistem Systemd, /var/log/journal/mungkin akan menjadi yang paling terfragmentasi. Anda juga dapat melihat ~/.mozilladan database peramban lainnya.

Untuk mendefrag, gunakan:

$ sudo btrfs fi defrag -r /path
Félix Saparelli
sumber
bagaimana saya tahu perintah defrag .... atau tidak ... untuk memeriksa status defrag
One Zero
2
Jawaban ini salah sesuai dengan wiki BTRFS: btrfs gotchas . Masalah fragmentasi file dapat dengan mudah direproduksi dengan menjalankan systemd-journald pada volume btrfs. Meskipun saya belum menguji inhowfar opsi autodefrag memecahkan masalah ini.
Jonas Schäfer
Saya telah menggunakan btrfs secara penuh waktu sekarang setidaknya selama 18 bulan, dengan systemd, firefox, dll. Pemeriksaan cepat menggunakan filefragmengungkapkan bahwa file jurnal memang sangat terfragmentasi (rata-rata masing-masing 10rb), tetapi saya belum melihat CPU spiking juga. dampak kinerja. Saya tidak punya autodefrag, akan mengaktifkannya dan melaporkan kembali pada reboot berikutnya.
Félix Saparelli
Jadi: fragmentasi file memang terjadi, autodefragmemang membantu, dampak kinerja kecil di terbaik pada sistem sehari-hari. Tentunya server dengan beban berat mungkin perlu mengukur dan menyempurnakan, tetapi sekali lagi ini adalah perangkat lunak alfa sehingga Anda mungkin ingin menghindarinya di sana.
Félix Saparelli
find /path -type f -exec filefrag {} + >frag.listmenghindari semua FIBMAP unsupportedkesalahan dari direktori dan file non-reguler lainnya, dan tidak merusak nama file aneh.
Peter Cordes
0

Demi topik ini saya pikir lebih baik mengklarifikasi bahwa:

Sistem file apa pun! = Utilitas pemulihan / manajemen

Perlu diingat bahwa sistem file adalah tentang bagaimana data disusun pada perangkat keras fisik, setiap kegiatan lainnya dilakukan dengan perangkat lunak dan utilitas tambahan, terutama di GNU / linux, dilakukan oleh orang-orang yang mungkin tidak terkait erat dengan siapa yang telah membuat sistem file.

Ini mungkin bukan kasus Btrfs, tetapi kadang-kadang kita dekat dengan itu karena lingkungan desktop dan perusahaan dapat memberikan solusi yang berbeda dengan tingkat keterandalan yang berbeda.

Jawaban untuk pertanyaan Anda adalah "tidak" tetapi "tidak" yang terkait dengan perilaku normal sistem berkas generik, dan setiap utilitas yang Anda temukan tentang ini hanyalah proyek yang berbeda.

Ketika Anda perlu mendefrag sistem file Anda, ingatlah bahwa Anda akan menggunakan perangkat lunak eksternal yang tidak benar-benar terkait dengan kehidupan sistem file itu sendiri, dengan semua pro dan kontra.

Mikro
sumber
0

Perintah untuk mendefrag sistem file btrfs adalah

btrfs filesystem defragment sync -r -v -f [-czlib] / /home
pengguna615852
sumber
0

Berdasarkan jawaban ini saya datang dengan:

sudo find / -xdev -type f -exec filefrag {} + | sed -En 's/(.+): (\w+) extent.*/\2 \1/p' | sort -nr

Ini daftar file yang paling terfragmentasi pertama, dengan format:

<num-fragments> <pathname>
Tom Hale
sumber