1.btrfs文件系统简介

       Btrfs(B-tree, Butter FS, Better FS),由Oracle于2007年宣布并进行中的COW(copy-on-write写时复制)文件系统。目标是取代Linux目前的ext3/4文件系统,改善ext3/4的限制,特别是单一文件大小的限制,总文件系统大小限制以及加入文件校验和特性。加入目前ext3/4未支持的一些功能,例如可写的磁盘快照(snapshots),以及支持递归的快照(snapshots of snapshots),内建磁盘阵列(RAID)支持,支持子卷(Subvolumes)的概念,允许在线调整文件系统大小等。

2.btrfs文件系统的特性

(1)扩展性

       btrfs 最重要的设计目标是应对大型机器对文件系统的扩展性要求。 Extent,B-Tree和动态 inode 创建等特性保证了 btrfs 在大型机器上仍有卓越的表现,其整体性能而不会随着系统容量的增加而降低。

(2)数据一致性

       系统面临不可预料的硬件故障,Btrfs 采用 COW 事务技术来保证文件系统的一致性。 btrfs 还支持 checksum,避免了 silent corrupt 的出现。而传统文件系统则无法做到这一点。

(3)多物理卷支持

       Btrfs 支持创建快照 (snapshot),和克隆 (clone) 。 btrfs 还能够方便的管理多个物理设备,使得传统的卷管理软件变得多余。

(4)透明压缩

       btrfs支持文件已压缩方式存储到磁盘上,用户查看文件并不是已压缩文件。

3.创建btrfs文件系统

mkfs.btrfs:创建btrfs文件系统

       常用选项:

       -L  LABEL:创建卷标

       -d  <type>:指定数据存储方式

       -m  <profile>:元数据存储方式

       -O  <feature>:-O  list-all 列出支持的所有feature

[root@bogon ~]# mkfs.btrfs -L mybtrfs /dev/sdb /dev/sdc  <-----创建btrfs文件系统

Btrfs v3.16.2

See http://btrfs.wiki.kernel.org for more information.


Turning ON incompat feature 'extref': increased hardlink limit per file to 65536

adding device /dev/sdc id 2

fs created label mybtrfs on /dev/sdb

nodesize 16384 leafsize 16384 sectorsize 4096 size 40.00GiB

4.查看btrfs文件系统属性

btrfs filesystem show:查看btrfs文件系统的属性信息

[root@bogon ~]# btrfs filesystem show    <------查看btrfs文件系统属性

Label: 'mybtrfs'  uuid: 55265c80-b45a-449c-b35e-df1d584bfc1a

Total devices 2 FS bytes used 112.00KiB

devid    1 size 20.00GiB used 2.03GiB path /dev/sdb

devid    2 size 20.00GiB used 2.01GiB path /dev/sdc


Btrfs v3.16.2


[root@bogon ~]# df -lh

Filesystem               Size  Used Avail Use% Mounted on

/dev/mapper/centos-root   50G  2.6G   48G   6% /

devtmpfs                 481M     0  481M   0% /dev

tmpfs                    490M     0  490M   0% /dev/shm

tmpfs                    490M  6.7M  484M   2% /run

tmpfs                    490M     0  490M   0% /sys/fs/cgroup

/dev/mapper/centos-home   68G   33M   68G   1% /home

/dev/sda1                497M  106M  392M  22% /boot

/dev/sdb                  40G  1.0M   38G   1% /mydata

5.挂载btrfs文件系统

[root@bogon ~]# mkdir /mydata    <------创建/mydata目录

[root@bogon ~]# mount -t btrfs /dev/sdb /mydata/    <------挂载文件系统

6.创建btrfs文件系统透明压缩机制

[root@bogon ~]# umount /dev/sdb

[root@bogon ~]# mount -o compress=lzo /dev/sdb /mydata/    <------透明压缩机

7.调整btrfs文件系统大小

[root@bogon ~]# btrfs filesystem resize -10G /mydata    <------大小减少10G

Resize '/mydata' of '-10G'

[root@bogon ~]# btrfs filesystem show

Label: 'mybtrfs'  uuid: 55265c80-b45a-449c-b35e-df1d584bfc1a

Total devices 2 FS bytes used 896.00KiB

devid    1 size 10.00GiB used 2.03GiB path /dev/sdb

devid    2 size 20.00GiB used 2.01GiB path /dev/sdc


Btrfs v3.16.2


[root@localhost ~]# btrfs filesystem resize +5G /mydata/    <------大小增加5G

Resize '/mydata/' of '+5G'

[root@localhost ~]# df -lh

Filesystem               Size  Used Avail Use% Mounted on

/dev/mapper/centos-root   50G  2.6G   48G   6% /

devtmpfs                 481M     0  481M   0% /dev

tmpfs                    490M     0  490M   0% /dev/shm

tmpfs                    490M  6.7M  484M   2% /run

tmpfs                    490M     0  490M   0% /sys/fs/cgroup

/dev/mapper/centos-home   68G   33M   68G   1% /home

/dev/sda1                497M  106M  392M  22% /boot

/dev/sdb                  35G  1.0M   28G   1% /mydata


[root@localhost ~]# btrfs filesystem resize max /mydata/   <------调整文件系统容量最大值

Resize '/mydata/' of 'max'

[root@localhost ~]# df -lh

Filesystem               Size  Used Avail Use% Mounted on

/dev/mapper/centos-root   50G  2.6G   48G   6% /

devtmpfs                 481M     0  481M   0% /dev

tmpfs                    490M     0  490M   0% /dev/shm

tmpfs                    490M  6.7M  484M   2% /run

tmpfs                    490M     0  490M   0% /sys/fs/cgroup

/dev/mapper/centos-home   68G   33M   68G   1% /home

/dev/sda1                497M  106M  392M  22% /boot

/dev/sdb                  40G  1.0M   38G   1% /mydata

8.添加设备

[root@localhost ~]# btrfs device add /dev/sdd /mydata    <------添加ssd

[root@localhost ~]# df -lh

Filesystem               Size  Used Avail Use% Mounted on

/dev/mapper/centos-root   50G  2.6G   48G   6% /

devtmpfs                 481M     0  481M   0% /dev

tmpfs                    490M     0  490M   0% /dev/shm

tmpfs                    490M  6.7M  484M   2% /run

tmpfs                    490M     0  490M   0% /sys/fs/cgroup

/dev/mapper/centos-home   68G   33M   68G   1% /home

/dev/sda1                497M  106M  392M  22% /boot

/dev/sdb                  60G  1.0M   56G   1% /mydata

9.删除设备

[root@localhost ~]# btrfs device delete /dev/sdd /mydata    <------删除sdd设备

[root@localhost ~]# df -lh

Filesystem               Size  Used Avail Use% Mounted on

/dev/mapper/centos-root   50G  2.6G   48G   6% /

devtmpfs                 481M     0  481M   0% /dev

tmpfs                    490M     0  490M   0% /dev/shm

tmpfs                    490M  6.7M  484M   2% /run

tmpfs                    490M     0  490M   0% /sys/fs/cgroup

/dev/mapper/centos-home   68G   33M   68G   1% /home

/dev/sda1                497M  106M  392M  22% /boot

/dev/sdb                  40G  1.0M   38G   1% /mydata

10.创建子卷

[root@localhost ~]# btrfs subvolume create /mydata/logs <------在mydata目录下创建子卷logs

Create subvolume '/mydata/logs'

[root@localhost ~]# btrfs subvolume list /mydata/

ID 258 gen 13 top level 5 path logs

11.挂载子卷

[root@localhost ~]# umount /mydata

[root@localhost ~]# mount -o subvol=logs /dev/sdb /mnt

12.创建快照

[root@localhost ~]# btrfs subvolume snapshot /mydata/logs/ /mydata/logs_snapshot

Create a snapshot of '/mydata/logs/' in '/mydata/logs_snapshot'

[root@localhost ~]# btrfs subvolume list /mydata

ID 258 gen 16 top level 5 path logs

ID 259 gen 16 top level 5 path logs_snapshot