技术预览版
b-tree FS, butter FS, better FS
GPL授权
由Oracle在2007年前后开始研发,CoW
核心特性:
- 多物理卷支持:btrfs可由多个底层物理卷组成;支持RAID,以联机“添加”,“移除”,“修改”
- 写时复制更新机制(CoW):复制,更新及替换指针,而非“就地”更新
- 数据及元数据校验码:checksum
- 子卷:sub_volume
- 快照:支持快照的快照(增量快照)
- 透明压缩
文件系统创建:
- mkfs.btrfs
- -L 'LABEL'
- -d <type>: RAID0, RAID1, RAID5, RAID6, RAID10, single
- -m <profile>:RAID0, RAID1, RAID5, RAID6, RAID10, single, dup
- -O <feature>
- -O list-all:列出支持的所有feature
- 创建b-tree文件系统:
- fdisk -l:查看磁盘情况
- mkfs.btrfs -L mydata /dev/sdb /dev/sdc,在sdb和sdc上创建一个btrfs文件系统(多卷支持)
- btrfs filesystem show:检查是否创建成功,也可以使用blkid /dev/sdb或者blkid /dev/sdc查看
btrfs子命令:filesystem,device,balance,subvolume
属性查看:
- btrfs filesystem show
挂载文件系统
- mount -t btrfs /dev/sdb mount_point(挂载哪个卷都行,最后都是一样的)
透明压缩机制
- mount -o compress={lzo | zlib} DEVICE MOUNT_POINT
调整大小
- btrfs filesystem resize -10G /mydata
- btrfs filesystem resize max /mydata,调整为最大
添加一个设备
- btrfs device add /dev/sdd /mydata
往新添加的设备里移动一些数据(数据平衡)
- btrfs balance start /mydata
- pause
- resume
- cancel
- status
删除一个设备
- btrfs device delete /dev/sdd /mydata
改变RAID级别
- btrfs balance start -mconvert=raid5 /mydata,注意:RAID5必须要有三个设备
创建子卷
- btrfs subvolume create /mydata/logs
列出子卷
- btrfs subvolume list /mydata
子卷挂载
- mount -o subvol=logs /dev/sdb /mnt
- mount -o subvolid=ID /dev/sdb /mnt
显示子卷详细信息
- btrfs subvolume show /mnt
注:挂载父卷时,子卷也会自动挂载上来,可以通过路径访问;如果单独挂载子卷,父卷的内容无法访问
删除子卷
- btrfs subvolume delete /mydata/logs
创建子卷快照
- btrfs subvolume snapshot /mydata/logs /mydata/logs_snapshot
- 注:子卷快照必须与子卷放在同一个父卷上;同样,快照卷必须与原卷放在同一个卷组上
- 删除快照卷和删除子卷是一样的方法
在btrfs文件系统中可以对某个文件创建快照
- cp --reflink grub2.cfg grub2.cfg_snap
ext文件系统转换为btrfs文件系统
- umount /mnt,联机操作比较危险,所以要先卸载
- fsck -f /dev/sdd1,强制检测
- btrfs-convert /dev/sdd1
- mount /dev/sdd1 /mnt,挂载使用
- umount /mnt,卸载
- btrfs-convert -r /dev/sdd1,回滚回ext系统
- blkid /dev/sdd1,查看文件系统类型