btrfs及压缩工具
part1.btrfs文件系统介绍
Btrfs(B-tree 文件系统,通常念成 Butter FS,Better FS或B-tree FS),一种支持写入时复制(COW)的文件系统,运行在 Linux 操作系统上,采用 GPL 授权。Oracle 于 2007 年对外宣布这项计划,并发布源代码,2014 年 8 月发布稳定版。目标是取代 Linux 当时主流的 ext3 文件系统,摆脱 ext3 的一些限制,特別是单文件大小,文件系统总大小和文件校验,并加入 ext3 不支持的一些功能,比如可写快照(writable snapshots)、快照的快照(snapshots of snapshots)、内建磁盘阵列(RAID),以及子卷(subvolumes)。Btrfs 也宣称专注于容错、修复及易于管理。
可以这样理解,btrfs文件系统本来是打算替换掉ext3,4文件系统的,但是它本身是由oracle研发的,所以呢,redhat不乐意,就引用了unix开源给linux的xfs文件系统,来抗衡oralce对linux的侵入。
核心特性:
多物理卷支持,可以同时将sda,sdb等硬盘格式化为文件系统,支持raid,以及联机“添加”“移除”“修改”;
写时复制更新机制(CoW):复制、更新及替换指针,而非“就地”更新;数据及元数校验码checksum,子卷:sub_volume;快照:支持快照的快照,透明压缩。
文件系统的创建
mkfs.btrfs
-L 'LABEL' 指明文件系统的LABEL
-d <type>:raid0 raid1 raid5,raid10 single 指定文件系统的级别
-m <profile>raid0 raid1 raid5,raid10 single dup
-O <feature> 格式化时就需要指明的特性
-O list-all 列出支持的所有feature
属性查看
btrfs filesystem show
btrfs --help可以查看btrfs的帮助
挂载文件系统
mount -t btrfs /dev/sdb MOUNT_POINT
指定任何一个设备即可,再指明挂载点
透明压缩机制
mount -o compress -{lzo|zlib} DEVICE MOUNT_POINT
查看btrfs诸多选项
[root@ad1 ~]# mkfs.btrfs -O list-all
查看btrfs的帮助
[root@ad1 ~]# man btrfs-filesystem
part2.创建btrfs文件系统
创建btrfs文件系统,指明卷标为mydata,使用db,dc,dd三块磁盘
[root@ad1 ~]# mkfs.btrfs -L mydata /dev/sdb /dev/sdc /dev/sdd
显示B-Tree文件系统
属性查看
[root@ad1 ~]# btrfs filesystem show /dev/sdb
blkid device 也可以用来查看设备的详细信息的
[root@ad1 ~]# blkid /dev/sdb /dev/sdc /dev/sdd
创建目录并挂载
[root@ad1 ~]# mkdir /mydata [root@ad1 ~]# mount -t btrfs /dev/sdb /mydata [root@ad1 ~]# mount /dev/sdb on /mydata type btrfs (rw,relatime,seclabel,space_cache,subvolid=5,subvol=/)
将数据压缩之后进行存放,这种行为对用户来讲是透明的,所以用户无法感知
[root@ad1 ~]# mount -o compress=lzo /dev/sdb /mydata
将文件系统减少并查看
[root@ad1 ~]# btrfs filesystem resize -10G /mydata [root@ad1 ~]# btrfs filesystem df /mydata
给文件系统扩展一个设备,并查看
[root@ad1 ~]# btrfs device add /dev/sde /mydata [root@ad1 ~]# btrfs filesystem show /mydata
如何将原先盘的数据均衡到新加设备上
开始数据均衡
[root@ad1 ~]# btrfs balance start /mydata
移除sde硬盘,并查看
[root@ad1 ~]# btrfs device delete /dev/sde /mydata [root@ad1 ~]# btrfs filesystem show /mydata
修改数据的raid级别
[root@ad1 ~]# btrfs balance start -mconvert=raid5 /mydata
part3.btrfs文件系统还支持子卷
创建子卷
[root@ad1 mydata]# btrfs subvolume create /mydata/logs [root@ad1 mydata]# btrfs subvolume create /mydata/cache
查看子卷
[root@ad1 mydata]# btrfs subvolume list /mydata ID 264 gen 66 top level 5 path logs ID 265 gen 67 top level 5 path cache
挂载卷时,如果挂载的是顶级卷,那么所有的卷都会自动挂载
[root@ad1 ~]# umount /mydata ##卸载文件系统 [root@ad1 ~]# mount -o subvol=logs /dev/sdb /mnt ##挂载子卷
显示某个子卷文件系统的详细信息
[root@ad1 ~]# btrfs subvolume show /mnt /mnt Name: logs UUID: 1fe8d9d3-0033-0941-a14a-18036ea187fe Parent UUID: - Received UUID: - Creation time: 2018-02-27 20:17:19 -0500 Subvolume ID: 264 Generation: 66 Gen at creation: 66 Parent ID: 5 Top level ID: 5 Flags: - Snapshot(s):
拷贝文件到/mnt下,然后卸载子卷,挂载btrfs文件系统至/mydata,查看数据是否存在
[root@ad1 ~]# cp /var/log/messages /mnt [root@ad1 ~]# umount /mnt [root@ad1 ~]# mount /dev/sdb /mydata [root@ad1 ~]# ls /mydata/logs messages
可以看到,btrfs文件系统中存在了此数据
我们还可以使用卷ID的形式挂载子卷
[root@ad1 ~]# mount /dev/sdb /mydata [root@ad1 ~]# btrfs subvolume list /mydata ID 264 gen 69 top level 5 path logs ID 265 gen 67 top level 5 path cache [root@ad1 ~]# mount -o subvolid=265 /dev/sdb /mnt ##卷ID形式挂载子卷 [root@ad1 ~]# cd /mnt
子卷的删除,并查看
[root@ad1 ~]# btrfs subvolume delete /mydata/logs Delete subvolume (no-commit): '/mydata/logs' [root@ad1 ~]# btrfs subvolume list /mydata ID 265 gen 67 top level 5 path cache
转载于:https://blog.51cto.com/30bear/2073790