btrfs及压缩工具

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了btrfs及压缩工具相关的知识,希望对你有一定的参考价值。

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诸多选项

[[email protected] ~]# mkfs.btrfs -O list-all


查看btrfs的帮助

[[email protected] ~]# man btrfs-filesystem


part2.创建btrfs文件系统

创建btrfs文件系统,指明卷标为mydata,使用db,dc,dd三块磁盘

[[email protected] ~]# mkfs.btrfs -L mydata /dev/sdb /dev/sdc /dev/sdd


显示B-Tree文件系统

属性查看

[[email protected] ~]# btrfs filesystem show /dev/sdb


blkid  device  也可以用来查看设备的详细信息的

[[email protected] ~]# blkid /dev/sdb /dev/sdc /dev/sdd


创建目录并挂载

[[email protected] ~]# mkdir /mydata
[[email protected] ~]# mount -t btrfs /dev/sdb /mydata
[[email protected] ~]# mount
/dev/sdb on /mydata type btrfs (rw,relatime,seclabel,space_cache,subvolid=5,subvol=/)


将数据压缩之后进行存放,这种行为对用户来讲是透明的,所以用户无法感知

[[email protected] ~]# mount -o compress=lzo /dev/sdb /mydata


将文件系统减少并查看

[[email protected] ~]# btrfs filesystem resize -10G  /mydata
[[email protected] ~]# btrfs filesystem df /mydata


给文件系统扩展一个设备,并查看

[[email protected] ~]# btrfs device add /dev/sde /mydata
[[email protected] ~]# btrfs filesystem show /mydata


如何将原先盘的数据均衡到新加设备上

开始数据均衡

[[email protected] ~]# btrfs balance start  /mydata


移除sde硬盘,并查看

[[email protected] ~]# btrfs device  delete /dev/sde /mydata
[[email protected] ~]# btrfs filesystem show /mydata


修改数据的raid级别

[[email protected] ~]# btrfs balance start -mconvert=raid5 /mydata


part3.btrfs文件系统还支持子卷

创建子卷

[[email protected] mydata]# btrfs subvolume create /mydata/logs
[[email protected] mydata]# btrfs subvolume create /mydata/cache


查看子卷

[[email protected] mydata]# btrfs subvolume list /mydata
ID 264 gen 66 top level 5 path logs
ID 265 gen 67 top level 5 path cache


挂载卷时,如果挂载的是顶级卷,那么所有的卷都会自动挂载

[[email protected] ~]# umount /mydata                       ##卸载文件系统
[[email protected] ~]# mount -o subvol=logs /dev/sdb /mnt   ##挂载子卷


显示某个子卷文件系统的详细信息

[[email protected] ~]# 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,查看数据是否存在

[[email protected] ~]# cp /var/log/messages  /mnt
[[email protected] ~]# umount /mnt
[[email protected] ~]# mount /dev/sdb /mydata
[[email protected] ~]# ls /mydata/logs
messages


可以看到,btrfs文件系统中存在了此数据

我们还可以使用卷ID的形式挂载子卷

[[email protected] ~]# mount /dev/sdb /mydata
[[email protected] ~]# btrfs subvolume list /mydata
ID 264 gen 69 top level 5 path logs
ID 265 gen 67 top level 5 path cache
[[email protected] ~]# mount -o subvolid=265 /dev/sdb /mnt   ##卷ID形式挂载子卷
[[email protected] ~]# cd /mnt


子卷的删除,并查看

[[email protected] ~]# btrfs subvolume delete /mydata/logs
Delete subvolume (no-commit): '/mydata/logs'
[[email protected] ~]#  btrfs subvolume list /mydata
ID 265 gen 67 top level 5 path cache



以上是关于btrfs及压缩工具的主要内容,如果未能解决你的问题,请参考以下文章

btrfs文件系统学习

+++++++btrfs压缩/解压缩和编程之if和for总结

btrfs

btrfs文件系统管理与应用

btrfs文件系统学习总结

Linux btrfs之透明压缩