Created
April 9, 2012 16:31
-
-
Save trehn/2344589 to your computer and use it in GitHub Desktop.
btrfs intro
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
### Setup | |
uname -r # should be 3.2.x or later | |
aptitude install btrfs-tools | |
mkfs.btrfs /dev/sdb | |
mkdir /mnt/btrfs | |
mount /dev/sdb /mnt/btrfs | |
mount -t btrfs | |
df -h -t btrfs | |
btrfs filesystem df /mnt/btrfs | |
### Compression | |
dd if=/dev/zero of=/mnt/btrfs/file1 bs=256M count=1 | |
df -h -t btrfs | |
btrfs fi df /mnt/btrfs # fi is shorthand for filesystem | |
btrfs filesystem defragment -c /mnt/btrfs/file1 | |
btrfs fi df /mnt/btrfs # file has been compressed, additional space available | |
mount -o remount,compress /mnt/btrfs | |
dd if=/dev/zero of=/mnt/btrfs/file2 bs=256M count=1 | |
btrfs fi df /mnt/btrfs # new file has been automatically compressed | |
df -h -t btrfs # actual file size is not reflected | |
du -sh /mnt/btrfs # slow :( | |
### Multiple devices | |
btrfs fi df /mnt/btrfs # go back to slides, explain RAID levels | |
umount /mnt/btrfs | |
mkfs.btrfs --data raid1 --metadata raid1 /dev/sdb /dev/sdc /dev/sdd | |
df -h -t btrfs # see 3G available | |
dd if=/dev/zero of=/mnt/btrfs/file1 bs=512M count=1 | |
df -h -t btrfs # see 1G used | |
dd if=/dev/zero of=/mnt/btrfs/file2 bs=512M count=1 | |
df -h -t btrfs # see 2G used | |
dd if=/dev/zero of=/mnt/btrfs/file3 bs=512M count=1 # ENOSPC | |
df -h -t btrfs | |
du -h /mnt/btrfs/file3 | |
btrfs device add /dev/sde /mnt/btrfs | |
df -h -t btrfs # see total size increased, but not available | |
dd if=/dev/zero of=/mnt/btrfs/file3 bs=512M count=1 # ENOSPC again | |
btrfs filesystem balance /mnt/btrfs | |
df -h -t btrfs # yay, space now available | |
dd if=/dev/zero of=/mnt/btrfs/file3 bs=512M count=1 # now works | |
### Disk failure | |
dd if=/dev/zero of=/dev/sdb bs=512M count=1 # simulate SHTF | |
rm /dev/sdb | |
btrfs fi show /dev/sdc # device missing | |
btrfs device delete missing /mnt/btrfs # fails | |
btrfs device add /dev/sdf /mnt/btrfs | |
df -h -t btrfs # 1G additional space available | |
btrfs fi show /dev/sdc # new disk not used yet | |
btrfs fi balance /mnt/btrfs # rebuild data to new disk | |
btrfs fi show /dev/sdc # new disk is in use | |
btrfs device delete missing /mnt/btrfs # now succeeds | |
df -h -t btrfs # total space back at 4G | |
rm /mnt/btrfs/* # cleanup | |
### Subvolumes and snapshots | |
btrfs subvolume create /mnt/btrfs/sv1 | |
ls -al /mnt/btrfs/sv1/ # just an empty dir | |
mkdir /mnt/btrfs_sv1 | |
mount -o subvol=sv1 /dev/sdc /mnt/btrfs_sv1 | |
mount -t btrfs | |
dd if=/dev/zero of=/mnt/btrfs_sv1/file1 bs=512M count=1 | |
df -h -t btrfs # space is the same for both mounts | |
btrfs subvolume snapshot /mnt/btrfs/sv1 /mnt/btrfs/ss1 | |
mkdir /mnt/btrfs_ss1 | |
mount -o subvol=ss1 /dev/sdc /mnt/btrfs_ss1 | |
dd if=/dev/zero of=/mnt/btrfs_ss1/file2 bs=512M count=1 # writable snapshot | |
btrfs fi df /mnt/btrfs # 1G data used | |
du -sh /mnt/btrfs_* # 1.5G visible | |
umount /mnt/btrfs_ss1 | |
btrfs sub del /mnt/btrfs/ss1 # snapshot handles like a subvol |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment