btrfs文件系统由Oracle开发,btrfs设计目标为取代早期ext文件系统。

核心特性:

1.多物理卷支持:btrfs可由多个底层物理卷组成,支持RAID,以联机“添加”、“移除”、“修改”。

2.写时复制更新机(COW):复制、更新及替换指针,而非就地修改更新。

3.数据及元数据效验码(checksum)。

4.支持子卷(sub_volume)。

5.快照及快照的快照。

6.透明压缩,支持两种压缩算法lzo和zlib通过命令mount -o compress={lzo|zlib} DEVICE MOUNT_POINT实现



那么如何创建一个btrfs文件系统呢?

可使用mkfs.btrfs命令,如果想在centos 6上使用btrfs,需要重新内核。


#使用fdisk硬盘分区工具查看外围设备的信息

btrfs文件系统学习_文件系统


#使用工具mkfs创建btrfs文件系统

btrfs文件系统学习_文件系统_02

#mkfs.btrfs命令常用选项介绍:

            -L 'LABEL'

            -d <type>:存储类型

            -m <profile>:元数据的存储机制

            -O list-all:列出支持的所有feature(基于内核版本不同,所提供的的支持也不一样.)

#使用btrfs的子命令filesystem查看属性信息

btrfs filesystem show

btrfs文件系统学习_文件系统_03

btrfs filesystem show可以查看到此文件系统的卷标,UUID,设备等相关信息,也可使用blkid命令查看UUID

其中UUID_SUB显示的是多物理子卷的每一个物理卷的单独的UUID信息,也可使用btrfs filesystem show --mounted显示已挂载的设备。


#挂载btrfs文件系统

mount -t btrfs /dev/sdb MOUNT_POINT

btrfs文件系统学习_文件系统_04

首先创建一个挂载点,然后使用mount命令使用-t选项指明挂载文件类型,这里也可以不用指明挂载文件类型,只要blkid命令能识别就不用再指明,挂载时指/dev/sdb或者/dev/sdc其中一个就行了,使用mount可以查看到挂载。需要卸载时可使用unmount命令。


#使用resize命令调整btrfs文件系统的大小

btrfs文件系统学习_文件系统_05

可使用btrfs filesystem resize max /datamount设置当前最大。



#当需要添加新的磁盘设备时使用btrfs的子命令device。

btrfs device add DEVICE

#移除某个物理卷

btrfs device delete DEVICE MOUNIT_POINT



#使用btrfs的子命令balance实现均衡操作。

#当文件系统拥有较多数据此时添加新的磁盘设备可使用均衡操作

btrfs balance start MOUNT_POINT

其中暂停、继续等命令可参照man btrfs balance。


#管理子卷

btrfs subvolume show [MOUNT_POINT]    #查看子卷相信信息

btrfs subvolume list[MOUNT_POINT]    #显示子卷列表

btrfs subvolume delete subvolume    #删除子卷

    btrfs subvolume create [-i <qgroupid>] [<dest>/]<name>  #创建子卷

btrfs subvolume snapshot    #创建子卷快照(必须在同一个父卷中)

cp --reflink FILE PATH    #创建单个文件的快照

mount -o subvol=subvolume DEVICE MOUNT_POINT    #挂载子卷





#如何将ext文件系统转换为btrfs

#如果需要转换的ext文件系统已挂载需先卸载(文件系统格式转换做联机操作相当危险)

#使用unmount MOUNT_POINT

fsck -f DEVICE    #强制检测

btrfs-convert DEVICE    #转换为btrfs文件系统

btrfs-convert-r DEVICE    #降级操作






第一次写博客,可能写的不好,以后会多多改进