返回顶部

Linux btrfs文件系统管理与应用

btrfs文件系统详解及使用

 btrfs文件系统的核心特性:

       多物理卷支持:btrfs可由多个底层物理卷组成;支持RAID,以联机“添加”、移除,修改;

       写时复制更新机制(CoW):复制、更新及替换指针,而非就地更新;

       修改一个文件,不知直接修改源文件,而是将文件先复制一份,对目标新复制的文件进行修改,然后将文件名本来是指向原来的文件空间转而转向新空间

       数据及元数据效验码:chechsum

       子卷:sub_volume

       快照:支持快照的快照;

       透明压缩;自动在存储时实现压缩,读取时自动解压缩

文件系统创建:

       mkfs.btrfs

           -L 'LABEL'  指明卷标

           -d <type>:raid0,raid1,raid5,raid6,radi10,single

           -m<profile>:raid0,raid1,raid5,raid6,radi10,single,dup

属性查看:

       btrfs filesystem show

挂载文件系统:

       mont -t btrfs  /dev/sdb/  MOUNT_POINT

透明压缩机制:

       mount -o compress={lzo|zlib}  DEVICE MOUNT_POINT

扩展文件系统:

       btrfs  filesystem  resize max /mydata

添加新的磁盘到文件系统中

        btrfs  device add  /dev/sdd /mydata

 删除文件系统中的磁盘:

        btrfs  device delete  /dev/sdd  /mydata

在我们生产环境中可以使用多块硬盘直接用btrfs文件系统组合成RAID来使用

实例演示

先在虚拟机中添加三块磁盘大小分别是20G的磁盘,/sdb,/sdc,/sdd

然后将sdb与sdc创建成btrfs文件系统

mkfs.btrfs -L mydata /dev/sdb /dev/sdc

 使用btrfs filesystem show这个命令来查看一下系统中的使用btrfs的分区

btrfs filesystem show

 将创建好的文件系统挂载的/mydata目录

mount  -t  btrfs  /dev/sdb  /mydata

让数据已透明压缩的方式存储到此文件系统中

umount /dev/sdb
mount -o compress=lzo /dev/sdb  /mydata/

 缩减文件系统的大小

btrfs filesystem resize -10G  /mydata

 添加新的磁盘到文件系统中

btrfs  device add  /dev/sdd  /mydata

 我们可以将原有数据均衡到三块磁盘中

btrfs balance start  /mydata

 当我们需要缩减存储空间时,可以使用命令直接移除磁盘,被移除的磁盘中的数据会自动同步到其它的磁盘上面

btrfs device delete  /dev/sdb  /mydata

 更能文件系统默认的存储方式

  • 首先我们先来查看一下文件系统的的基本信息
  • 这里我们可以看到数据是以single单文件格式存储的
  • 元数据是以RAID1方式存储的
  • 下面我们将存储方式全部更改为RAID5级
btrfs filesystem df /mydata

 将第二块磁盘重新添加进来

btrfs device add /dev/sdb  /mydata
btrfs balance start -dconvert=raid5  /mydata
btrfs balance start -mconvert=raid5  /mydata

注意我们在修改raid级别时,要确保底层硬盘的数量能够组成相应的raid级别

 创建子卷

我们在/mydata文件系统下创建两个子卷test跟test2,并将test单独挂载到/mnt目录下  

创建子卷 test test2

btrfs  subvolume create  /mydata/test
btrfs  subvolume create  /mydata/test2
btrfs  subvolume list /mydata

umount /mydata/
mount -o subvol=test /dev/sdb /mnt

我们复制一个文件到test子卷挂载的目录中,然后挂载/mydata进行验证一下  

cp /etc/mtab /mnt/
umount /mnt/
mount /dev/sdb /mydata/
ls /mydata/test

如果想要删除子卷的话只需要使用下面的命令即可

btrfs  subvolume  delete  /mydata/test2

 为子卷创建快照

btrfs subvolume snapshot  /mydata/test   /mydata/test_snap
btrfs subvolume list  /mydata/

为了验证我们在test目录中任意创建一个文件,然后切换到快照中发现新创建的文件不存在即快照创建成功

cd /mydata/test
touch test.txt
ls /mydata/test_snap/  

 

posted @ 2019-10-15 00:13  Crazymagic  阅读(795)  评论(0编辑  收藏  举报