##master-page:HomepageReadWritePageTemplate ##master-date:Unknown-Date #format wiki #language en = BTRFS filesystem = * Links: [[Linux/Btrfs/UbuntuExt4ToBtrfs]], [[docker/docker-btrfs]] , [[linux/btrfs/crash201706]] , [[https://wiki.debian.org/Btrfs]] * Btrfs space calculator http://carfax.org.uk/btrfs-usage/ * MODE: single=use all, raid0=smallest disk striped, raid1=2copy(smallest of biggest disk and rest) * Create a raid1 mirror disk setup raid1 for both data and metadata {{{ mkfs.btrfs -m raid1 -d raid1 /dev/sdb /dev/sdc /dev/sdd /dev/sde }}} * Now find uuid with {{{ sudo blkid /dev/sd* }}} * Add more hd's {{{ btrfs device scan btrfs device add /dev/sdc2 / btrfs filesystem balance / btrfs balance start -dconvert=raid1 -mconvert=raid1 / #Monitor progress with btrfs balance status / }}} * reflinks {{{ cp --reflink name1 name4 }}} * reflinks are supported by BTRFS and OCFS2 and support transparent copy on write which is especially useful for snapshotting. * Note that since separate inodes are used, one can have different permissions to access the same data. * Reflinks have the same use as hardlinks, but are more space efficient and generally handle all subsequent operations on a file, not just unlink(). * If you have virtual images on a btrfs, cow(copy on write) will cause a lot of fragmentation, turn it of for the directory of file with * this disables cow(fragmentation) and also crc calculations on the files. {{{ chatter +C /path }}} * defrag with * {{{ btrfs filesystem defragment /path/file }}} * or faster for large files {{{ cp --reflink=never vbox.vdi vbox.new.vdi ; rm vbox.vdi ; }}} * Create raid array, raid1 all data mirrored once. # mkfs.btrfs -m raid1 -d raid1 -L root /dev/disk/by-label/root1 /dev/disk/by-label/root2 /dev/disk/by-lab el/root3 /dev/disk/by-label/root4 * Mount options, add compress * subvolumes * mount option subvol=homevol == Install on multi disk == * Will install on multiple disks {{{ sudo dpkg-reconfigure grub-pc }}} * Use uuid , same for all disks. {{{ sudo blkid /dev/sd* }}} == BTRFS maintenace == * SCRUB disks in background, recovering for good copy in raid1 config {{{ sudo btrfs filesystem show sudo btrfs filesystem df / sudo btrfs scrub start / sudo btrfs scrub status -d / sudo btrfs device stats / }}} * Resize 1. Increase the partition (lvm or fdisk) 2. find the (disk number) # btrfs filesystem show 3. btrfs filesystem resize :max / * Error trying to convert to raid0 {{{ # btrfs balance start -dconvert=raid0 /home ERROR: error during balancing '/home' - No space left on device In dmesg btrfs: 262 enospc errors during balance }}} * FIX {{{ sudo btrfs fi balance start -dusage=10 / btrfs balance start -dconvert=raid0 /home }}} * Remove a drive for a array. Can take long, as data is moved off. {{{ btrfs fi show btrfs device delete /dev/sde1 / }}} * if single disk in raid1 fails, best course of action if you can replace the broken disk immediately is to convert to single drive. {{{ btrfs balance start -dconvert=single -mconvert=dup /whatever }}} == Problem with filesystem full == * 2016-03 a big struggle with a full btrfs root fs and then corrupt grub2 on top of the problem. * grub rescue> * used >set prefix=hd(0,1)/@snapxxxxx/boot/grub * This loaded old non corrupt grub2 normal module and typing normal, loaded old bootloader yeah for btrfs. * then at the grub2 menu, edit the boot parameters to put root at /@ and load newer kernel from corrupt root fs. * Space Solved with removing snapshots and deleting some files, then re-balance. * To delete snapshot's you need to mount disk to get to subvolumes. * No space to create dir, mount over root with mount /dev/sda1 /root * Delete subvolumes with #btrfs subvolume delete /root/@snapshot* == HP Server Raid tools == * http://dmatwork.blogspot.com/2010/07/installation-of-hp-array-configuration.html == Check disk with smartctl == * Check with systemctl {{{ sudo btrfs filesystem show sudo apt install smartmontools sudo systemctl start smartd sudo smartctl -H /dev/sda2 #Test sudo smartctl -t short -a /dev/sdX }}} ...