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?
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?
Jawaban:
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 autodefrag
opsi 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 autodefrag
opsi 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 ~/.mozilla
dan database peramban lainnya.
Untuk mendefrag, gunakan:
$ sudo btrfs fi defrag -r /path
filefrag
mengungkapkan 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.
autodefrag
memang 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.
find /path -type f -exec filefrag {} + >frag.list
menghindari semua FIBMAP unsupported
kesalahan dari direktori dan file non-reguler lainnya, dan tidak merusak nama file aneh.
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.
Perintah untuk mendefrag sistem file btrfs adalah
btrfs filesystem defragment sync -r -v -f [-czlib] / /home
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>