Linux File System, btrfs

btrfs merupakan sebuah filesystem modern yang menggunakan teknologi copy on write, yang artinya bila kita melakukan perubahan pada folder atau file maka file/folder itu akan menjadi 2, pertama adalah sebelum diubah dan yang kedua adalah yang sudah terubah, maka bila terjadi kesalahan kita bisa melakukan roll-back atau kembali ke keadaan awal.

Sejarah

btrfs pertama kali di desain oleh perusahaan oracle pada tahun 2007 untuk mengatasi masalah kurangnya fitur yang ada pada linux filesystem, yaitu snapshots, checksum dan volume managemen, barulah pada tahun 2013 btrfs memasuki fase stabil.

Fitur

btrfs memiliki beberapa fitur utamanya adalah :

Cara Membuat Partisi

saya akan memberitahukan bagaimana cara konfigurasi btrfs dengan benar sehingga kita dapat mendapatkan performa yang sempurna.

caranya hampir sama seperti cara saya membuat partisi ext4 di blog saya yang terdahulu , namun kita perlu beberapa penyesuaian yaitu :

daripada mkfs.ext4 kita menggantinya dengan mkfs.btrfs, namun sebelum menjalankan perintah itu kita harus menginstall software btrfs-progs.

setelah membuat partisi, kita harus membuat sebuah subvolume, agar dengan mudan mengelola snapshots.

contoh fstab yang saya gunakan pada alpine linux:

UUID=47bb1859-55fd-4d73-a05d-cd42a30253f9       /                       btrfs   rw,relatime,shared,ssd,space_cache=v2,subvolid=5,subvol=/ 0 1
UUID=8096b499-8139-45a6-b0fa-6bfe2f460bd3       /boot                   ext4    rw,relatime     0 2
UUID=5f42d824-db21-4449-8bd5-a50412f74d79       /home/user              btrfs   rw,defaults     0 1
UUID=5f42d824-db21-4449-8bd5-a50412f74d79       /home/arpnsh            btrfs   subvolid=269    0 0
UUID=5f42d824-db21-4449-8bd5-a50412f74d79       /home/arpnsh/Documents  btrfs   subvolid=260    0 0
UUID=5f42d824-db21-4449-8bd5-a50412f74d79       /home/arpnsh/Downloads  btrfs   subvolid=261    0 0
UUID=5f42d824-db21-4449-8bd5-a50412f74d79       /home/arpnsh/Music      btrfs   subvolid=262    0 0
UUID=5f42d824-db21-4449-8bd5-a50412f74d79       /home/arpnsh/Pictures   btrfs   subvolid=263    0 0
UUID=5f42d824-db21-4449-8bd5-a50412f74d79       /home/arpnsh/Projects   btrfs   subvolid=264    0 0
UUID=5f42d824-db21-4449-8bd5-a50412f74d79       /home/arpnsh/Videos     btrfs   subvolid=265    0 0
UUID=5f42d824-db21-4449-8bd5-a50412f74d79       /home/arpnsh/Backup     btrfs   subvolid=276    0 0
UUID=2fe488b6-861d-4a1e-8efd-4c7c0b66e128       swap                    swap    sw              0 0
PARTUUID="75ace8b0-a4e1-4a29-af6d-b33d09e2d3b5" /boot/efi       vfat    rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=utf8,shortname=mixed,errors=remount-ro 0 2

/dev/sr0        /media/cdrom    iso9660 noauto,ro 0 0

/dev/usbdisk    /media/usb      vfat    noauto  0 0

tmpfs   /tmp    tmpfs   nosuid,nodev    0       0

setelah kita membuat sebuah partisi, kita harus memasang partisinya ke dalam sebuah folder :

# membuat folder disk
mkdir /root/disk
# pasang drive sda1 ke folder disk
mount /dev/sda1 /root/disk

setelah berhasil memasang partisi ke folder /root/disk{.verbatim}, kita harus membuat sebuah folder @{.verbatim} lalu membuat sub volume disana.

mkdir /root/disk/@

Sub Volume

melihat contoh fstab OpenSUSE kita bisa simpulkan bahwa kita memerlukan beberapa sub volume yaitu :

  1. /var
  2. /usr/local
  3. /tmp
  4. /srv
  5. /root
  6. /opt
  7. /home

sub volume bisa dibuat dengan cara :

btrfs subvolume create <volume yang mau dibuat>

maka kita bisa membuat sub volume seperti opensuse dengan cara :

# pasang drive sda1 ke folder disk
mkdir /root/disk/@/usr
btrfs subvolume create /root/disk/@/var
btrfs subvolume create /root/disk/@/usr/local
btrfs subvolume create /root/disk/@/tmp
btrfs subvolume create /root/disk/@/srv
btrfs subvolume create /root/disk/@/root
btrfs subvolume create /root/disk/@/opt
btrfs subvolume create /root/disk/@/home

untuk menghapus subvolume kita bisa menghapusnya dengan :

btrfs subvolume delete <volume yang mau dihapus>

untuk melihat list apa saja subvolume yang ada bisa dengan perintah :

btrfs subvolume list /root/disk/@

untuk memasang subvolume kita bisa menggunakan subvolid atau menggunakan tempat dimana subvol dibuat, untuk mendapatkan subvolid kita bisa melihatnya

btrfs subvolume show /root/disk/@/var

bila sudah mendapatkan subvolid kita bisa memasangnya di /root/disk/var dengan perintah seperti berikut, namun bila folder /root/disk/var tidak ada, kita harus membuatnya dengan secara manual

mount /dev/sdb1 -o subvolid=261 /root/disk/var

atau menggunakan tempat dimana subvol dibuat

mount /dev/sdb1 -o subvol=/root/disk/@/var /root/disk/var

Snapshots

setelah membuat sub volume kita bisa mudah mengelola snapshot, untuk membuat snapshot kita bisa menggunakan software timeshift atau snapper, namun kita juga bisa membuat snapshot secara manual, bila kita menggunakan timesift atau snapper, software itu akan otomatis membuat subvolume/folder .snapshots{.verbatim} pada partisi.

# membuat subvolume untuk menampung snapshots
btrfs subvolume create /root/disk/@/.snapshots
# membuat snapshots RW bernama yy-mm-dd-backup
btrfs subvolume snapshot /root/disk /root/disk/.snapshots/yy-mm-dd-backup
# membuat snapshots RO bernama yy-mm-dd-backup
btrfs subvolume snapshot -r /root/disk /root/disk/.snapshots/yy-mm-dd-backup

untuk menghapus snapashot kita bisa menggunakan :

btrfs subvolume delete /root/disk/.snapshots/yy-mm-dd-backup

setelah kita membuat snapshot, kita bisa mengembalikan keadaan folder dengan cara manual menggunakan perintah cp atau rsync untuk mengembalikan keseluruhanya.

rsync -avz /root/disk /root/disk/.snapshots/yy-mm-dd-backup /root/disk

untuk mengupdate snapshot sama caranya untuk mengembalikan keadaan folder/file, yaitu dengan perintah cp atau rsync