GNU/Linux >> Belajar Linux >  >> Fedora

Memahami sistem file Btrfs di Fedora Linux

B-Tree Filesystem (Btrfs) adalah sistem file copy on write (CoW) untuk sistem operasi Linux. Pengguna Fedora diperkenalkan ke Btrfs ketika tim proyek Fedora menjadikannya sistem file default untuk Fedora Workstation 33. Saya tidak terlalu memikirkan Btrfs meskipun tersedia untuk Linux selama beberapa tahun. Artikel ini akan mempercepat Anda dengan sistem file Btrfs dan fitur-fiturnya seperti snapshot, subvolume, dan kuota.

B-Tree Filesystem (Btrfs) adalah sistem file dan manajer volume. Ini telah dikembangkan sejak 2007, dan sejak itu, telah menjadi bagian dari kernel Linux. Pengembangnya bertujuan untuk menciptakan sistem file modern yang dapat memecahkan tantangan yang terkait dengan penskalaan ke subsistem penyimpanan besar. Dari Btrfs Manpage, fitur utamanya berfokus pada toleransi kesalahan, administrasi yang mudah, dan perbaikan.

Sistem file Btrfs di Fedora Linux

Fitur utamanya adalah:

  • Snapshot – snapshot yang dapat ditulis dan hanya-baca.
  • RAID.
  • Self-healing – checksum untuk data dan metadata.
  • Deteksi otomatis kerusakan data.
  • Subvolume.
  • Kesadaran SSD.
  • Pencadangan tambahan yang efisien

Anda dapat mempelajari lebih lanjut tentang fitur dan manfaat lanjutannya dari Halaman Manual Btrfs resmi.

Prasyarat

Jika Anda sudah menjalankan Fedora Workstation 33, maka Anda siap untuk langkah selanjutnya. Jika tidak, Anda dapat mengunduh Fedora Workstation ISO resmi dan menginstalnya atau menjalankannya di mesin virtual baru dari distro Linux mana pun yang Anda gunakan.

Saat menulis artikel ini, saya belum menemukan alat grafis untuk bekerja dengan Btrfs (saran dipersilahkan!). Oleh karena itu, kami akan bekerja dengan baris perintah untuk sebagian besar demonstrasi di artikel ini. Anda harus bekerja dengan Btrfs sebagai pengguna super untuk langkah selanjutnya.

~]$ sudo su # ubah ke mode super user

Anda dapat memeriksa format Btrfs dengan menjalankan perintah berikut.

Melihat lebih dekat sistem file Btrfs

Tampilkan sistem file Fedora Btrfs:

[root@fosslinux tuts]# btrfs filesystem showLabel:'fedora_localhost-live' uuid:688a6af2-77e1-4da4-bc63-878c5b0f063bTotal perangkat 1 byte FS yang digunakan 18.94GiBdevid 1 ukuran 148.05GiB jalur yang digunakan 21.02GiB /pra> 

Anda dapat melihat bahwa label sistem file adalah 'fedora_localhost-live'. Anda dapat mengubah label untuk mewakili representasi yang lebih akurat dari sistem Anda karena kami tidak menjalankan Fedora versi USB langsung.

Mengubah label Btrfs:

Anda dapat mengubah label menggunakan perintah label sistem file btrfs.

[root@fosslinux tuts]# label sistem file btrfs /fedora_localhost-live[root@fosslinux tuts]# label sistem file btrfs / fedoraworkstation33[root@fosslinux tuts]# label sistem file btrfs /fedoraworkstation33[root@fosslinux tuts]#Btrfs tuts Fedora filesystem labelBtrfs subvolume

Subvolume tidak sama dengan partisi tetapi dapat dibandingkan dengan partisi dan digunakan dengan cara yang mirip dengan bagaimana partisi digunakan. Subvolume adalah direktori standar yang dapat dikelola oleh Btrfs.

Anda dapat menggunakan subvolume untuk mengambil snapshot, menetapkan kuota, dan mereplikasinya ke lokasi lain dan sistem operasi host lain selama mereka berjalan di bawah sistem file Btrfs.

Daftar subvolume Btrfs:

[root@fosslinux tuts]# btrfs subvolume list /ID 256 gen 24421 top level 5 path homeID 258 gen 24407 top level 5 path rootID 265 gen 22402 top level 258 path var/lib/machines

Buat subvolume:

Anda dapat membuat subvolume baru dengan menjalankan perintah btrfs subvolume create.

[root@fosslinux tuts]# btrfs subvolume create /opt/fooCreate subvolume '/opt/foo'[root@fosslinux tuts]# btrfs subvolume list /ID 256 gen 24469 top level 5 path homeID 258 gen 24469 top level 5 path rootID 265 gen 22402 tingkat atas 258 path var/lib/machinesID 279 gen 24469 tingkat atas 258 path opt/foo

Hapus subvolume:

Anda dapat menghapus subvolume dengan menjalankan perintah penghapusan subvolume btrfs.

[root@fosslinux tuts]# btrfs subvolume delete /opt/fooDelete subvolume (no-commit):'/opt/foo'[root@fosslinux tuts]# btrfs subvolume list /ID 256 gen 24495 top level 5 path homeID 258 gen 24493 tingkat atas 5 jalur rootID 265 gen 22402 tingkat atas 258 jalur var/lib/machines

Subvolume dapat berguna bagi administrator sistem, terutama saat menambahkan pengguna.

Menambahkan pengguna

Sebelum Fedora Linux 33, membuat akun pengguna baru akan membuat direktori home untuk akun tersebut. Pada dasarnya, direktori pengguna yang dibuat adalah subdirektori dari /home. Artinya kepemilikan dan hak istimewa disesuaikan dengan pemilik direktori /home. Ini juga berarti bahwa tidak ada fungsi khusus untuk mengelola subdirektori. Dengan Btrfs, Anda memiliki kontrol lebih untuk mengelola dan menerapkan batasan ke direktori pengguna yang dibuat.

Cara tradisional untuk menambahkan pengguna baru.

Tambahkan pengguna baru, 'fedoran1', menggunakan perintah useradd:

[root@fosslinux tuts]# useradd fedoran1[root@fosslinux tuts]# getent passwd fedoran1fedoran1:x:1001:1001::/home/fedoran1:/bin/bash[root@fosslinux tuts]# ls -l / total 0drwx------. 1 fedoran1 fedoran1 80 Apr 7 19:00 fedoran1drwx------. 1 tuts tuts 308 Apr 6 08:33 tuts
Menggunakan subvolume Btrfs sebagai rumah pengguna

Anda dapat mengakomodasi subvolume Btrfs sebagai rumah pengguna dengan menambahkan –btrfs-subvolume-home ke perintah useradd. Perintah tersebut akan membuat subvolume Btrfs baru untuk pengguna.

[root@fosslinux tuts]# useradd --btrfs-subvolume-home fedoran2Create subvolume '/home/fedoran2'[root@fosslinux tuts]# getent passwd fedoran2fedoran2:x:1002:1002::/home/fedoran2:/ bin/bash

Jika Anda menjalankan daftar / perintah subvolume btrfs, Anda akan melihat subvolume baru untuk direktori home pengguna baru.

[root@fosslinux tuts]# daftar subvolume btrfs /ID 256 gen 24732 tingkat atas 5 jalur homeID 258 gen 24731 tingkat atas 5 jalur rootID 265 gen 22402 tingkat atas 258 jalur var/lib/machinesID 280 gen 24728 tingkat atas 256 jalur home/fedoran2
Menghapus pengguna:

Terkadang Anda ingin menghapus pengguna dengan semua file pengguna dan direktori home mereka secara bersamaan. Anda dapat menggunakan perintah userdel dengan opsi -r, yang juga akan menghapus subvolume Btrfs pengguna.

[root@fosslinux tuts]# userdel -r fedoran2Hapus subvolume (komit):'/home/fedoran2'

Kuota Btrfs

Pernah memiliki program yang tidak terkendali dan menulis ke disk Anda sampai seluruh direktori /home Anda terisi? Masalah ini memang muncul, terutama dengan aplikasi atau server yang menyimpan konten dan file log. Anda dapat mencegah sistem atau server Anda berhenti bekerja karena disk terisi penuh dengan mengatur dan menerapkan kuota Btrfs.

Langkah pertama adalah mengaktifkan kuota pada sistem file Btrfs Anda:

[root@fosslinux tuts]# kuota btrfs aktifkan /

Selanjutnya, catat nomor ID grup kuota (qgroup) setiap subvolume menggunakan perintah daftar subvolume btrfs. Akan lebih baik untuk mengasosiasikan setiap subvolume dengan qgroup berdasarkan nomor ID-nya menggunakan perintah btrfs qgroup create. Anda dapat melakukannya secara individual, tetapi Anda juga dapat menggunakan perintah berikut untuk mempercepat pembuatan qgroups untuk subvolume.

>daftar subvolume btrfs \ | potong -d' ' -f2 | xargs -I{} -n1 btrfs qgroup destroy 0/{} \

Di Fedora 33 Anda, ganti \ dengan path root ( / ) dari sistem file Anda.

 # daftar subvolume btrfs / | potong -d' ' -f2 | xargs -I{} -n1 btrfs qgroup create 0/{} /

Jalankan perintah pemindaian ulang kuota btrfs untuk melihat qgroups yang telah Anda buat.

[root@fosslinux tuts]# btrfs qgroup show /PERINGATAN:pemindaian ulang sedang berjalan, data qgroup mungkin salahqgroupid rfer excl-------- ---- ----0/5 16.00KiB 16.00KiB0 /256 23.70MiB 23.70MiB0/258 449.61MiB 449.61MiB0/265 16.00KiB 16.00KiB0/279 16.00KiB 16.00KiB

Anda sekarang dapat menetapkan kuota ke qgroup yang akan menerapkan perubahan ke subvolume terkait.

Sekarang kita dapat menggunakan perintah btrfs qgroup limit untuk membatasi penggunaan direktori home dari pengguna fedoran2 hingga 2GB.

[root@fosslinux tuts]# btrfs qgroup limit 2G /home/fedoran2

Konfirmasi perubahan batas kuota untuk pengguna fedoran2.

[root@fosslinux tuts]# btrfs qgroup show -reF /home/fedoran2qgroupid rfer excl max_rfer max_excl-------- ---- ---- -------- --- -----0/279 16.00KiB 16.00KiB 2.00GiB tidak ada

Tampilkan semua qgroups dan batas kuota yang ditetapkan, jika ada, menggunakan btrfs qgroup show -re /

[root@fosslinux tuts]# btrfs qgroup show -reF /home/fedoran2qgroupid rfer excl max_rfer max_excl-------- ---- ---- -------- --- -----0/279 16.00KiB 16.00KiB 2.00GiB tidak ada

Snapshot Btrfs

Sebuah snapshot dalam sistem file Btrfs hanyalah salinan dari subvolume. Oleh karena itu, snapshot adalah subvolume yang dapat membagikan data dan metadatanya dengan subvolume lain menggunakan kemampuan copy on write (CoW). Mengambil snapshot dapat dilakukan dengan segera, tetapi tidak menempati ruang segera setelah dibuat.

Saat Anda mengambil snapshot, ruang snapshot akan bertambah dengan perubahan pada subvolume asli atau dalam snapshot jika dapat ditulis. Selain itu, setiap file yang ditambahkan, dimodifikasi, atau dihapus di subvolume akan tetap berada di snapshot. Fitur-fitur ini menawarkan cara untuk membuat cadangan di sistem Anda dengan mudah.

Buat cadangan menggunakan snapshot

Secara default, snapshot akan berada di disk yang sama dengan subvolume, dan Anda dapat menelusuri atau bahkan memulihkan salinan file dalam keadaan aslinya seperti saat snapshot diambil. Fitur snapshot yang menarik adalah Anda dapat mengirimnya ke hard drive eksternal atau sistem jarak jauh menggunakan SSH. Tangkapannya adalah bahwa tujuan harus memiliki sistem file Btrfs. Untuk memanfaatkan fitur ini dalam snapshot, Anda akan menggunakan perintah btrfs send dan btrfs accept.

Catatan:Menyimpan snapshot pada disk yang sama dengan subvolume bukanlah strategi pencadangan yang ideal. Jika disk Anda rusak, Anda akan kehilangan subvolume dan snapshot.

Ikuti langkah-langkah ini untuk membuat cadangan subvolume.

1:Buat subvolume untuk proyek Anda

Untuk tujuan demonstrasi, kami akan membuat subvolume Btrfs (myproject) di dalam $HOME/Desktop/myproject. Subvolume Btrfs akan terlihat dan berfungsi seperti direktori standar.

Buat subvolume menggunakan perintah berikut:

[tuts@fosslinux ~]$ btrfs subvolume create $HOME/Desktop/myprojectCreate subvolume '/home/tuts/Desktop/myproject'

Buat direktori tersembunyi untuk menyimpan snapshot Anda:

[tuts@fosslinux ~]$ mkdir $HOME/.myprojectsnapshots

Buat file teks di dalam subvolume $HOME/Desktop/myproject:

[tuts@fosslinux ~]$ cd /home/tuts/Desktop/myproject[tuts@fosslinux myproject]$ ls[tuts@fosslinux myproject]$ vi day0.txt[tuts@fosslinux myproject]$ lsday0.txt 

2:Ambil cuplikan

Secara default, snapshot dapat ditulis, tetapi Anda harus membuat snapshot read-only untuk menggunakan perintah btrfs send dan btrfs accept. ‘

Snapshot dapat diambil setiap hari, setiap jam, atau bahkan setiap menit.

Ambil snapshot read-only dari subvolume $HOME/Desktop/myproject dan atur dalam $HOME/.myprojectsnapshots menggunakan perintah berikut.

[tuts@fosslinux ~]$ btrfs subvolume snapshot -r $HOME/Desktop/myproject $HOME/.myprojectsnapshots/myproject-day0Buat snapshot readonly dari '/home/tuts/Desktop/myproject' di '/home/tuts /.myprojectsnapshots/myproject-day0'

Catatan:

  • Gunakan tanda -r untuk membuat snapshot hanya-baca. Tanda -r akan menawarkan konsistensi dan keamanan yang lebih baik dan memungkinkan Anda mengirim dan menerima ke hard drive eksternal.
  • Snapshot tidak akan mengambil snapshot rekursif dari dirinya sendiri. Cuplikan subvolume /home tidak akan mengambil cuplikan subvolume $HOME/Desktop/myproject.
Menggunakan btrfs send dan btrfs accept untuk mem-backup snapshot.

Dalam demonstrasi di bawah, snapshot volume Btrfs (/.myprojectsnapshots/myproject-day0) akan dikirim ke drive USB yang dipasang sebagai /run/media/tuts/bk.

[tuts@fosslinux ~]$ sudo btrfs send $HOME/.myprojectsnapshots/myproject-day0 | sudo btrfs menerima /run/media/tuts/bkAt subvol /home/tuts/.myprojectsnapshots/myproject-day0ERROR:/run/media/tuts/bk bukan milik titik pemasangan btrfs

Bergantung pada cara Anda memformat drive USB, Anda mungkin mendapatkan pesan kesalahan berikut:

ERROR:/run/media/tuts/bk bukan milik btrfs mount point.’ 

Kesalahan ini merupakan indikasi bahwa drive USB Anda bukan dari format sistem file btrfs. Perintah btrfs send tidak dapat bekerja pada sistem file selain btrfs.

Jika Anda mendapatkan pesan kesalahan seperti itu, format drive USB Anda ke btrfs menggunakan perintah berikut.

Format drive USB ke format sistem file btrfs:

[tuts@fosslinux ~]$ sudo mkfs.btrfs /dev/sdb -L 'bk' -f

Sekarang jalankan perintah btrfs send dan btrfs accept:

[tuts@fosslinux ~]$ sudo btrfs send $HOME/.myprojectsnapshots/myproject-day0 | sudo btrfs menerima /run/media/tuts/bk[sudo] kata sandi untuk tuts:At subvol /home/tuts/.myprojectsnapshots/myproject-day0At subvol myproject-day0

Perintah btrfs send telah berhasil diselesaikan, dan Anda dapat melihat dan menelusuri snapshot 'myproject-day0' di drive USB Anda.

Perintah mungkin memerlukan waktu tergantung pada ukuran subvolume Anda ($HOME/.myprojectsnapshots/myproject-day0). Pengiriman btrf tambahan berikutnya akan memakan waktu lebih singkat.

Pencadangan tambahan menggunakan btrfs send

Untuk menggunakan btrfs send secara bertahap, Anda harus mengambil snapshot lain dari subvolume Anda.

Buat cuplikan:

[tuts@fosslinux ~]$ btrfs subvolume snapshot -r $HOME/Desktop/myproject $HOME/.myprojectsnapshots/myproject-day1Buat ​​snapshot hanya-baca dari '/home/tuts/Desktop/myproject' di '/home/tuts /.myprojectsnapshots/myproject-day1'

Pengiriman btrf tambahan:

[tuts@fosslinux ~]$ sudo btrfs send -p $HOME/.myprojectsnapshots/myproject-day0 $HOME/.myprojectsnapshots/myproject-day1 | sudo btrfs menerima /run/media/tuts/bkAt subvol /home/tuts/.myprojectsnapshots/myproject-day1At snapshot myproject-day1

Pencadangan tambahan berikutnya (sehari setelahnya).

Buat cuplikan:

[tuts@fosslinux ~]$ btrfs subvolume snapshot -r $HOME/Desktop/myproject $HOME/.myprojectsnapshots/myproject-day2Buat snapshot hanya-baca dari '/home/tuts/Desktop/myproject' di '/home/tuts /.myprojectsnapshots/myproject-day2'

Pengiriman btrf tambahan (sehari setelahnya):

[tuts@fosslinux ~]$ sudo btrfs send -p $HOME/.myprojectsnapshots/myproject-day1 $HOME/.myprojectsnapshots/myproject-day2 | sudo btrfs menerima /run/media/tuts/bkAt subvol /home/tuts/.myprojectsnapshots/myproject-day2At snapshot myproject-day2
Pembersihan

Catatan:Anda memerlukan setidaknya snapshot terakhir untuk melakukan pengiriman btrf tambahan. Pastikan snapshot ada di sumber dan tujuan.

Hapus snapshot di lokasi sumber

Anda dapat menghapus snapshot yang tidak perlu menggunakan perintah berikut:

[tuts@fosslinux ~]$ sudo btrfs subvolume delete $HOME/.myprojectsnapshots/myproject-day0[sudo] kata sandi untuk tuts:Delete subvolume (no-commit):'/home/tuts/.myprojectsnapshots/myproject-day0 '
[tuts@fosslinux ~]$ sudo btrfs subvolume delete $HOME/.myprojectsnapshots/myproject-day1[sudo] kata sandi untuk tuts:Delete subvolume (no-commit):'/home/tuts/.myprojectsnapshots/myproject-day1 '

Hapus snapshot di lokasi tujuan:

[tuts@fosslinux ~]$ sudo btrfs subvolume delete /run/media/tuts/bk/myproject-day0Delete subvolume (no-commit):'/run/media/tuts/bk/myproject-day0'
[tuts@fosslinux ~]$ sudo btrfs subvolume delete /run/media/tuts/bk/myproject-day1Delete subvolume (no-commit):'/run/media/tuts/bk/myproject-day1'

Catatan:Akan lebih baik jika Anda menyimpan snapshot terakhir di lokasi sumber dan tujuan sehingga Anda dapat melakukan pengiriman btrf tambahan baru.

Pulihkan file atau direktori dari snapshot btrfs

Kesalahan seperti menghapus direktori atau file secara tidak sengaja tidak dapat dihindari. Ketika kesalahan tersebut terjadi, Anda dapat memulihkan file atau direktori dari snapshot terbaru. Anda juga dapat memulihkan versi direktori atau file yang lebih lama dari snapshot yang lebih lama.

Karena snapshot berfungsi seperti direktori, Anda dapat menggunakan perintah cp untuk memulihkan file menggunakan perintah berikut.

Menggunakan perintah cp

Kembalikan file yang terhapus menggunakan perintah cp:

[tuts@fosslinux ~]$ cp $HOME/.myprojectsnapshots/myproject-day1/day0.txt $HOME/Desktop/myproject

Kembalikan direktori yang dihapus menggunakan perintah cp:

[tuts@fosslinux ~]$ cp -r $HOME/.myprojectsnapshots/myproject-day1/directory $HOME/Desktop/myproject

Jika Anda menghapus seluruh direktori $HOME/Desktop/myproject (subvolume), Anda dapat membuat ulang subvolume dan menggunakan perintah cp untuk memulihkan seluruh konten dari snapshot.

Pulihkan subvolume yang dihapus:

[tuts@fosslinux ~]$ btrfs subvolume create $HOME/Desktop/myprojectCreate subvolume '/home/tuts/Desktop/myproject'
[tuts@fosslinux ~]$ cp -rT $HOME/.myprojectsnapshots/myproject-day1 $HOME/Desktop/myproject
Menggunakan perintah snapshot btrfs

Anda dapat memulihkan subvolume yang dihapus dengan mengambil snapshot snapshot.

Pulihkan subvolume menggunakan perintah snapshot btrfs:

[tuts@fosslinux ~]$ btrfs subvolume snapshot $HOME/.myprojectsnapshots/myproject-day1 $HOME/Desktop/myprojectBuat snapshot dari '/home/tuts/.myprojectsnapshots/myproject-day1' di '/home/tuts /Desktop/myproject'
Pulihkan snapshot btrfs dari drive eksternal

Anda dapat menggunakan perintah cp untuk memulihkan snapshot dari drive USB atau drive eksternal.

Memulihkan file:

[tuts@fosslinux ~]$ cp /run/media/tuts/bk/myproject-day1/day0.txt $HOME/Desktop/myproject

Anda dapat menggunakan perintah btrfs send dan btrfs accept untuk memulihkan keseluruhan snapshot. Anda perlu menyetel opsi baca-saja ke false untuk memulihkan subvolume yang dapat ditulis.

Pulihkan seluruh cuplikan:

[tuts@fosslinux ~]$ sudo btrfs send /run/media/tuts/bk/myproject-day1 | sudo btrfs menerima kata sandi $HOME/Desktop/[sudo] untuk tuts:At subvol /run/media/tuts/bk/myproject-day1At subvol myproject-day1

Ringkasan

Artikel tersebut telah menyoroti beberapa fitur Btrfs yang layak untuk dipelajari. Btrfs dibuat sebagai alternatif untuk sistem file ZFS, dan menawarkan banyak fitur sistem file tingkat lanjut untuk sistem operasi Fedora dan Linux.

Anda dapat mempelajari lebih lanjut tentang Btrf menggunakan perintah btrfs – – bantuan atau dokumentasi online, yang dapat Anda akses menggunakan man btrfs-subvolume, man btrfs-send, atau man btrfs-receive. Saya juga menemukan Wiki Btrfs resmi berguna.

Kita semua bisa melakukannya dengan alat grafis untuk berinteraksi dengan Btrfs! Untuk Anda, tim proyek Fedora.


Fedora
  1. Linux – Mengapa Tidak Ada Sistem File Rootfs Di Sistem?

  2. Linux – Bagaimana Cara Menampilkan Jenis Filesystem Melalui Terminal??

  3. Memahami Sistem File sysfs (/ sys) di Linux

  1. Memahami Sistem File /proc

  2. Fitur Sistem File "Btrfs"

  3. Memahami File /etc/inittab di Linux

  1. Linux – Seberapa Sering Sistem File Proc Diperbarui di Linux?

  2. Apa saja opsi pemasangan untuk meningkatkan kinerja sistem file ext4 di Linux?

  3. Linux:Tempat meletakkan file swap