博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Btrfs介绍与使用
阅读量:6904 次
发布时间:2019-06-27

本文共 7980 字,大约阅读时间需要 26 分钟。

 btrfs(B-tree filesystem),由Oracle 2007年后研发,这是一个技术预览版的文件系统,推出用于弥补、替换Linux中的Ext系列文件系统。

  重要技术特性:
   1)支持写时复制(COW),保证数据的可靠性
   2)更好的扩展性支持,利用动态inode创建、Extent、B-tree实现
   3)支持非常大的单个文件与总容量
   4)支持文件快速检查功能,基于数据及元数据校验码机制,将数据、元数据的某些属性保存下来,下次读取时可根据这些属性快速检测是否受损,如果损坏还能尝试修复,这样极大的提高数据的准确性
   5)支持将多个物理卷组成一个Btrfs文件系统,并内置RAID,支持将数据、元数据以RAID、single、dup等方式在多个物理卷中存储。
   6)支持创建子卷,可以创建多个子卷,子卷可以单独挂载
   7)支持透明压缩功能,自动占用CPU资源对传入/出的文件进行压缩/解压
   8)支持快照,支持对子卷、文件进行快照,还能对快照进行快照
   
  Ext系列对比Btrfs系统:
   参考:

btrfs 文件系统管理命令:

  btrfs subvolume     用于管理子卷
  btrfs filesystem    用于管理文件系统
  btrfs balance    用于调整数据、元数据存储负载均衡
  btrfs device    用于管理设备
  btrfs rescue    用于救援
  btrfs quota     用于设置磁盘配额
一、将多个设备文件创建为一个Btrfs文件系统

mkfs.btrfs [options] Device ...    -L  指定卷标    -m  指定元数据如何跨设备文件存储,可以为 raid0, raid1, raid5, raid6, raid10, single or dup。    -d  指定数据如何跨设备文件存储,可以为raid0, raid1, raid5, raid6, raid10 or single or dup    -f  强制格式化[root@localhost ~]# mkfs.btrfs  -f  -L  myBtrfs  /dev/sdb /dev/sdcbtrfs-progs v4.4.1See http://btrfs.wiki.kernel.org for more information.Label:              myBtrfsUUID:               144d67a0-5235-491b-bc0c-5edeb63e94f4Node size:          16384Sector size:        4096Filesystem size:    40.00GiBBlock group profiles:  Data:             RAID0             2.01GiB       发现数据以RAID0存放  Metadata:         RAID1             1.01GiB       发现元数据以RAID1存放  System:           RAID1            12.00MiBSSD detected:       noIncompat features:  extref, skinny-metadataNumber of devices:  2Devices:   ID        SIZE  PATH    1    20.00GiB  /dev/sdb    2    20.00GiB  /dev/sdc

二、调整Btrfs逻辑边界

查看Btrfs文件系统由sdb、sdc组成,大小为40G[root@localhost ~]# btrfs filesystem show /data/ Label: 'myBtrfs'  uuid: 144d67a0-5235-491b-bc0c-5edeb63e94f4        Total devices 2 FS bytes used 896.00KiB        devid    1 size 20.00GiB used 2.01GiB path /dev/sdb        devid    2 size 20.00GiB used 2.01GiB path /dev/sdc将Btrfs文件系统缩减10G的大小[root@localhost ~]# btrfs  filesystem resize   -10G /data/Resize '/data/' of '-10G'[root@localhost ~]# btrfs filesystem show /data/ Label: 'myBtrfs'  uuid: 144d67a0-5235-491b-bc0c-5edeb63e94f4        Total devices 2 FS bytes used 896.00KiB        devid    1 size 10.00GiB used 2.01GiB path /dev/sdb        devid    2 size 20.00GiB used 2.01GiB path /dev/sdc

三、为原Btrfs文件系统添加、删除物理设备

添加sdd、sde设备[root@localhost ~]# btrfs  device add  /dev/sdd  /dev/sde /data/[root@localhost ~]# btrfs  filesystem show  /data/Label: 'myBtrfs'  uuid: 144d67a0-5235-491b-bc0c-5edeb63e94f4        Total devices 4 FS bytes used 896.00KiB        devid    1 size 10.00GiB used 2.01GiB path /dev/sdb        devid    2 size 20.00GiB used 2.01GiB path /dev/sdc        devid    3 size 20.00GiB used 0.00B path /dev/sde        devid    4 size 20.00GiB used 0.00B path /dev/sdd删除sde设备[root@localhost ~]# btrfs device  del  /dev/sde /data[root@localhost ~]# btrfs filesystem show /dataLabel: 'myBtrfs'  uuid: 144d67a0-5235-491b-bc0c-5edeb63e94f4        Total devices 3 FS bytes used 896.00KiB        devid    1 size 10.00GiB used 2.01GiB path /dev/sdb        devid    2 size 20.00GiB used 2.01GiB path /dev/sdc        devid    4 size 20.00GiB used 0.00B path /dev/sdd相比LVM ,Btrfs不需要人工把数据此该磁盘中移出来,Btrfs自动完成,功能更为强大四、管理数据、元数据存放磁盘及方式当新添加一块硬盘进来后,需要将数据均匀存放到各个磁盘上,此时可以这样做:[root@localhost ~]# btrfs  balance  start /data/Done, had to relocate 3 out of 3 chunks当数据过大时可以使用pause暂停,resume恢复。修改数据的存放方式为RAID5:[root@localhost ~]# btrfs  balance start -dconvert=raid5 /data/Done, had to relocate 1 out of 3 chunks修改元数据的存放方式为RAID1:[root@localhost ~]# btrfs  balance start -mconvert=raid1 /data/Done, had to relocate 2 out of 4 chunks

五、启用透明压缩机制

压缩算法有lzo与zlib两种,通过mount重新挂载时选择[root@localhost ~]# mount -o remount,compress=lzo /dev/sdb /data/[root@localhost ~]# cp /var/log/messages /data/对比查看还是有点效果的,原来128K现在压缩后127K...[root@localhost ~]# ll -h /var/log/messages /data/messages -rw-------. 1 root root 127K Jan  4 06:24 /data/messages-rw-------. 1 root root 128K Jan  4 06:25 /var/log/messages

六、管理子卷

创建子卷log、Coo:[root@localhost ~]# btrfs  subvolume  create  /data/logCreate subvolume '/data/log'[root@localhost ~]# btrfs  subvolume  create  /data/CooCreate subvolume '/data/Coo'查看子卷的简要信息:[root@localhost data]# btrfs  subvolume list /data/ ID 264 gen 95 top level 5 path logID 265 gen 92 top level 5 path Coo查看子卷的详细信息:[root@localhost ~]# btrfs  subvolume  show  /data/log//data/log        Name:                   log         #子卷名字        UUID:                   b22a5c9d-05f7-da41-89c7-d4dcceae9a0e    #子卷UUID        Parent UUID:            -        Received UUID:          -        Creation time:          2018-01-04 06:32:19 -0800        Subvolume ID:           264             #子卷ID        Generation:             91        Gen at creation:        91        Parent ID:              5        Top level ID:           5        Flags:                  -        Snapshot(s):[root@localhost ~]# btrfs  subvolume  show  /data/Coo/data/Coo        Name:                   Coo        UUID:                   a5552185-a8b4-2543-b2ac-f0e348668c8e            Parent UUID:            -        Received UUID:          -        Creation time:          2018-01-04 06:32:46 -0800        Subvolume ID:           265        Generation:             92        Gen at creation:        92        Parent ID:              5        Top level ID:           5        Flags:                  -        Snapshot(s):挂载子卷,一般如果挂载父卷则自动挂载所有子卷。还能单独挂载子卷:[root@localhost ~]# mount  -o subvol=log  /dev/sdb /mnt/[root@localhost ~]# mount | grep mnt/dev/sdb on /mnt type btrfs (rw,relatime,seclabel,compress=lzo,space_cache,subvolid=264,subvol=/log)[root@localhost ~]# mount -o  subvolid=265 /dev/sdb /media/ [root@localhost ~]# mount | grep media/dev/sdb on /media type btrfs (rw,relatime,seclabel,compress=lzo,space_cache,subvolid=265,subvol=/Coo)

七、快照卷的管理

创建快照卷:[root@localhost ~]# btrfs subvolume  snapshot  /data/log /data/log_snapCreate a snapshot of '/data/log' in '/data/log_snap'查看子卷的信息:[root@localhost data]# btrfs  subvolume list /data/ ID 264 gen 95 top level 5 path logID 265 gen 92 top level 5 path CooID 266 gen 93 top level 5 path log_snap删除快照卷:[root@localhost data]# btrfs  subvolume  delete /data/log_snap/Delete subvolume (no-commit): '/data/log_snap'对快照卷做快照:注:创建快照之前最好将磁盘设为只读挂载[root@localhost data]# btrfs  subvolume  snapshot /data/log_snap/ /data/log_snap_snapCreate a snapshot of '/data/log_snap/' in '/data/log_snap_snap'对文件做快照(只能在Btrfs中实现):[root@localhost data]# cp --reflink  1.t  1.t_snap恢复快照卷:[root@localhost data]# btrfs  subvolume  delete  logDelete subvolume (no-commit): '/data/log'[root@localhost data]# mv  log_snap log

八、文件系统转换、回退

将EXT4转换为Btrfs:[root@localhost ~]# fsck -f /dev/sde            #检查磁盘是否损坏、剩余空间fsck from util-linux 2.23.2e2fsck 1.42.9 (28-Dec-2013)Pass 1: Checking inodes, blocks, and sizesPass 2: Checking directory structurePass 3: Checking directory connectivityPass 4: Checking reference countsPass 5: Checking group summary information/dev/sde: 11/1310720 files (0.0% non-contiguous), 126322/5242880 blocks[root@localhost ~]# btrfs-convert  /dev/sde         #开始转换create btrfs filesystem:        blocksize: 4096        nodesize:  16384        features:  extref, skinny-metadata (default)creating btrfs metadata.copy inodes [o] [         0/        11]creating ext2 image file.cleaning up system chunk.conversion complete.[root@localhost ~]# btrfs  filesystem show Label: 'myBtrfs'  uuid: 144d67a0-5235-491b-bc0c-5edeb63e94f4        Total devices 3 FS bytes used 10.77MiB        devid    1 size 10.00GiB used 3.00GiB path /dev/sdb        devid    2 size 20.00GiB used 2.31GiB path /dev/sdc        devid    4 size 20.00GiB used 2.31GiB path /dev/sddLabel: none  uuid: 3e61c271-cfcb-42c0-b3f5-a62e9dc8b98a        Total devices 1 FS bytes used 494.21MiB        devid    1 size 20.00GiB used 20.00GiB path /dev/sde回滚:[root@localhost ~]# btrfs-convert  -r  /dev/sde rollback complete.[root@localhost ~]# blkid  /dev/sde/dev/sde: UUID="39eb4603-ad53-4fb7-8d23-d69732921539" TYPE="ext4"

转载于:https://blog.51cto.com/jying/2058542

你可能感兴趣的文章
使用jconsole监控tomcat性能情况
查看>>
ligerui grid行编辑示例
查看>>
linux安装或移植zencart系统
查看>>
动态权限
查看>>
MySQL 主从复制
查看>>
LayoutBuilder 构建一个窗口大小的widget树。 并可以获取widget 的狂宽高
查看>>
Python OpenCV学习笔记之:图像金字塔
查看>>
3月上旬中国数据域名总量跌至22.8万个 增长略有波动
查看>>
9月15日全球域名商(国际域名)解析量排行榜TOP20
查看>>
12月初全球域名商解析新增保有量15强:万网称王
查看>>
3月末全球域名商域名解析量23强:爱名网跌至第十七
查看>>
web报表开发FineReport教程之父子格设置
查看>>
无功功率补偿的方法
查看>>
Linux监控平台搭建(添加自定义监控项目、配置邮件告警、测试告警、不发邮件的问题处理)...
查看>>
shell编程(告警系统主脚本、告警系统配置文件、告警系统监控项目)
查看>>
yii2 资源目录问题
查看>>
Percona Toolkit 使用(一)
查看>>
mcs的方式创建的虚拟机,鼠标定位不准的问题处理
查看>>
专注docker安全:Security Scanning
查看>>
MongoDB 4.0 RC 版本强势登陆
查看>>