Btrfs adalah sistem fail Copy-on-Write (CoW) berdasarkan tahap. Fail besar disimpan dalam pelbagai data; dan apabila fail besar ini diubah, lanjutan yang akan dimodifikasi disalin ke luaran baru yang kosong di lokasi lain dari peranti storan dan diubah di lokasi baru. Kemudian, luas fail besar dihubungkan semula untuk menunjuk ke lanjutan yang diperbaharui. Lanjutan lama tidak akan dikeluarkan serta-merta.
Ini adalah bagaimana ciri Copy-on-Write (CoW) sistem fail Btrfs menyebabkan pemecahan. Fragmentasi bermaksud bahawa jumlah data fail besar tersebar di seluruh peranti storan. Mereka tidak seketika. Jadi, prestasi (kelajuan membaca / menulis) sistem fail mungkin berkurang.
Untuk menyelesaikan masalah ini, perlu melakukan defragment sistem fail Btrfs sekali-sekala. Artikel ini menunjukkan kepada anda cara defragment sistem fail Btrfs.
Singkatan
Singkatan (bentuk pendek) yang digunakan dalam artikel ini adalah seperti berikut:
- CoW - Salin-Tulis-Tulis
- Btrfs - Sistem Filem B-tree
- HDD - Pemacu Cakera Keras
- SSD - Pemacu Keadaan Pepejal
- GB - Gigabait
- VM - Mesin maya
Prasyarat
Untuk mencuba contoh yang disertakan dalam artikel ini:
- Anda mesti memasang sistem fail Btrfs di komputer anda.
- Anda mesti mempunyai HDD / SSD ganti (dengan ukuran apa pun) atau sekurang-kurangnya 1 partisi HDD / SSD percuma (dengan saiz apa pun).
Saya mempunyai HDD 20 GB sdb pada mesin Ubuntu saya. Saya akan membuat sistem fail Btrfs pada HDD sdb.
$ sudo lsblk -e7Nota: HDD / SSD anda mungkin akan mempunyai nama yang berbeza daripada nama saya, dan begitu juga bahagiannya. Oleh itu, pastikan untuk menggantikannya dengan milik anda mulai sekarang.
Anda boleh membuat sistem fail Btrfs pada HDD / SSD anda (tanpa partisi) jika anda mempunyai HDD / SSD ganti. Anda juga boleh membuat partition pada HDD / SSD anda dan membuat sistem fail Btrfs di sana.
Untuk bantuan memasang sistem fail Btrfs di Ubuntu, lihat artikel Pasang dan Gunakan Btrfs di Ubuntu 20.04 LTS.
Untuk mendapatkan bantuan memasang sistem fail Btrfs di Fedora, lihat artikel Pasang dan Gunakan Btrfs di Fedora 33.
Membuat Sistem Fail Btrfs
Anda boleh membuat sistem fail Btrfs pada HDD / SSD anda (tidak dipartisi) atau pada partisi HDD / SSD anda.
Untuk membuat sistem fail Btrfs di sdb HDD (keseluruhan HDD, tanpa partisi) dan berikan label sistem fail data, jalankan arahan berikut:
$ sudo mkfs.btrfs -L data / dev / sdb
Sistem fail Btrfs kini harus dibuat di sdb HDD.
Buat direktori / data untuk memasang sistem fail Btrfs yang baru anda buat dengan arahan berikut:
$ sudo mkdir -v / data
Untuk memasang sistem fail Btrfs yang dibuat di sdb HDD pada / data direktori, jalankan arahan berikut:
$ sudo mount / dev / sdb / data
Sistem fail Btrfs kini harus dipasang, seperti yang anda lihat dalam tangkapan skrin di bawah:
$ df -h / data
Defragmenting Btrfs Filesystem Secara Manual
Seperti yang anda lihat dalam tangkapan skrin di bawah, saya telah menyalin dua fail pada sistem fail Btrfs yang dipasang di / data direktori untuk menunjukkan proses defragmentasi sistem fail Btrfs:
$ ls -lh / data
Anda dapat melakukan defragment satu fail atau keseluruhan subvolume / direktori secara berulang.
Untuk menyusun semula fail tunggal / data / ubuntu-20.04.1-pelayan langsung-amd64.iso, kami akan menjalankan arahan berikut:
$ sudo btrfs defragment sistem fail -vf / data / ubuntu-20.04.1-pelayan langsung-amd64.iso
Fail / data / ubuntu-20.04.1-pelayan langsung-amd64.iso mesti defragmentasi.
Untuk defragment setiap fail atau direktori / data direktori secara berulang, jalankan arahan berikut:
$ sudo btrfs defragment sistem fail -rvf / data
Seperti yang anda lihat, semua fail dari / data direktori diubahsuai.
Dengan cara yang sama, jika anda mempunyai subvolume / data / osimages, maka anda boleh defragment semua fail dari / data / osimages subvolume secara berulang dengan arahan berikut:
$ sudo btrfs defragment sistem fail -rvf / data / osimages
Memampatkan Sistem Filem Btrfs Semasa Defragmenting
Sistem fail Btrfs membolehkan anda memampatkan fail semasa anda menyusun semula fail tersebut.
Untuk defragment semua fail di / data direktori dan kompresnya dengan ZLIB algoritma pemampatan pada masa yang sama, jalankan perintah defragment dengan -czlib pilihan, seperti berikut:
$ sudo btrfs defragment sistem fail -rvf -czlib / data
Untuk defragment semua fail di / data direktori dan memampatkannya dengan ZSTD algoritma pemampatan pada masa yang sama, jalankan perintah defragment dengan -czstd pilihan, seperti berikut:
$ sudo btrfs defragment sistem fail -rvf -czstd / data
Untuk defragment semua fail di / data direktori dan kompresnya dengan LZO algoritma pemampatan pada masa yang sama, jalankan perintah defragment dengan -clzo pilihan, seperti berikut:
$ sudo btrfs defragment sistem fail -rvf -clzo / data
Fail di / data direktori harus didefragmentasi dan dimampatkan pada masa yang sama.
Dengan cara yang sama, anda juga dapat melakukan defragmentasi dan memampatkan fail subvolume Btrfs.
Defragmenting Btrfs Filesystem Secara automatik
Anda boleh mengaktifkan defragmentasi automatik pada sistem fail Btrfs anda pada masa pemasangan. Ciri sistem fail Btrfs ini akan mendefragmentasi semua fail sistem fail Btrfs anda secara automatik.
Untuk memasang sistem fail Btrfs yang dibuat di sdb HDD di / data direktori dengan defragmentasi automatik diaktifkan pada masa boot, anda mesti menambah entri untuk sistem fail Btrfs di / etc / fstab fail.
Pertama, cari UUID sistem fail Btrfs yang dibuat di sdb HDD, seperti berikut:
$ sudo blkid / dev / sdb
Seperti yang anda lihat, UUID sistem fail Btrfs dibuat di sdb HDD adalah 60afc092-e0fa-4b65-81fd-5dfd7dd884de.
Ia akan berbeza bagi anda. Oleh itu, pastikan untuk menggantinya dengan milik anda mulai sekarang.
Buka / etc / fstab fail dengan nano penyunting teks, seperti berikut:
$ sudo nano / etc / fstab
Tambahkan baris berikut ke hujung / etc / fstab fail:
UUID = 60afc092-e0fa-4b65-81fd-5dfd7dd884de / data btrfs autodefrag 0 0
Setelah selesai, tekan
Agar perubahan berlaku, reboot komputer anda dengan arahan berikut:
but semula $ sudo
Seperti yang anda lihat, sistem fail Btrfs dibuat di sdb HDD dipasang pada / data direktori dengan defragmentasi automatik diaktifkan.
Masalah dengan Defragmenting Btrfs Filesystem
Walaupun nampaknya defragmentasi meningkatkan prestasi sistem fail, ada beberapa masalah dengan defragmentasi sistem file Btrfs.
Oleh kerana Btrfs adalah sistem fail Copy-on-Write (CoW), untuk memahami masalah dengan defragmentasi sistem fail Btrfs, anda mesti memahami ciri Salin-Tulis-Tulis sistem fail Btrfs.
Katakan, anda mempunyai fail besar (fail1) yang menggunakan 100 extent (anda boleh menganggap extents sebagai blok fail) dari sistem fail Btrfs. Sekiranya anda membuat salinan fail besar yang lain (fail2) dalam sistem fail Btrfs yang sama, anda akan melihat bahawa tidak ada ruang cakera tambahan yang digunakan. Ini kerana failnya sama, dan 100 lanjutan setiap fail adalah sama. Jadi, sistem fail Btrfs menggunakan lanjutan yang sama untuk kedua-dua fail.
Rajah 1: fail1 dan fail2 sama dan berkongsi lanjutan sistem fail Btrfs yang sama untuk menjimatkan ruang cakera
Sekarang, katakan, anda telah mengubahsuai salah satu salinan fail besar (fail2). Pengubahsuaian perlu mengubah 10 daripada 100 lanjutan. Sistem fail Btrfs akan menyalin 10 lanjutan yang diperlukan di lokasi lain yang tidak digunakan (katakan, e101-e110sistem fail dan menukarnya di sana. Setelah perubahan ditulis ke cakera, sistem fail Btrfs akan menghubungkan kembali luaran sehingga perubahan tersebut tercermin dalam fail besar. Prosesnya digambarkan dalam gambar di bawah:
Gambar 2: 10 luaran ditukar masuk fail2. Oleh itu, luaran dihubungkan semula dalam sistem fail Btrfs.
Dari gambar 1 dan 2, anda dapat memahami cara kerja Copy-on-Write (CoW) dan bagaimana sistem fail Btrfs menggunakan Copy-on-Write (CoW) untuk menjimatkan ruang cakera.
Sekarang setelah anda mengetahui bagaimana ciri Copy-on-Write (CoW) sistem fail Btrfs berfungsi, anda akan memahami masalah dengan menyusun semula sistem fail Btrfs.
- Fail defragmenting memindahkan data Btrfs dan cuba menyelaraskannya, satu demi satu. Jadi, pautan Copy-on-Write antara salinan fail rosak. Ini akan meningkatkan keluasan data yang berlebihan, serta penggunaan cakera dari sistem fail Btrfs yang sebelumnya disimpan dengan berkongsi data yang ada antara salinan fail yang serupa (atau hampir serupa).
- Sekiranya subvolume Btrfs mempunyai banyak snapshot, defragmentasi subvolume akan memutuskan pautan Copy-on-Write antara subvolume dan snapshot. Ini akan meningkatkan penggunaan cakera sistem fail Btrfs.
- Sekiranya anda menggunakan sistem fail Btrfs untuk pangkalan data yang besar atau gambar mesin maya (untuk menyimpan data / cakera VM), defragmentasi sistem fail juga akan memberi kesan negatif terhadap prestasi sistem fail.
Kesimpulannya
Dalam artikel ini, anda belajar bagaimana defragment satu file dan file dalam direktori / subvolume secara berulang dari sistem fail Btrfs. Anda juga belajar bagaimana mengaktifkan defragmentasi automatik pada sistem fail Btrfs pada masa pemasangan. Akhirnya, artikel itu membincangkan beberapa masalah dengan menyusun semula sistem fail Btrfs.