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
[iyunv@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文件系统的属性信息
[iyunv@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
[iyunv@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文件系统
[iyunv@bogon ~]# mkdir /mydata <------创建/mydata目录
[iyunv@bogon ~]# mount -t btrfs /dev/sdb /mydata/ <------挂载文件系统
| 6.创建btrfs文件系统透明压缩机制
[iyunv@bogon ~]# umount /dev/sdb
[iyunv@bogon ~]# mount -o compress=lzo /dev/sdb /mydata/ <------透明压缩机
| 7.调整btrfs文件系统大小
[iyunv@bogon ~]# btrfs filesystem resize -10G /mydata <------大小减少10G
Resize '/mydata' of '-10G'
[iyunv@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
[iyunv@localhost ~]# btrfs filesystem resize +5G /mydata/ <------大小增加5G
Resize '/mydata/' of '+5G'
[iyunv@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
[iyunv@localhost ~]# btrfs filesystem resize max /mydata/ <------调整文件系统容量最大值
Resize '/mydata/' of 'max'
[iyunv@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.添加设备
[iyunv@localhost ~]# btrfs device add /dev/sdd /mydata <------添加ssd[iyunv@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.删除设备
[iyunv@localhost ~]# btrfs device delete /dev/sdd /mydata <------删除sdd设备[iyunv@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.创建子卷
[iyunv@localhost ~]# btrfs subvolume create /mydata/logs <------在mydata目录下创建子卷logs
Create subvolume '/mydata/logs'
[iyunv@localhost ~]# btrfs subvolume list /mydata/
ID 258 gen 13 top level 5 path logs
| 11.挂载子卷
[iyunv@localhost ~]# umount /mydata
[iyunv@localhost ~]# mount -o subvol=logs /dev/sdb /mnt
| 12.创建快照
[iyunv@localhost ~]# btrfs subvolume snapshot /mydata/logs/ /mydata/logs_snapshotCreate a snapshot of '/mydata/logs/' in '/mydata/logs_snapshot'
[iyunv@localhost ~]# btrfs subvolume list /mydata
ID 258 gen 16 top level 5 path logs
ID 259 gen 16 top level 5 path logs_snapshot
|