btrfs文件系统详解及使用

btrfs文件系统的核心特性

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

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

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

       数据及元数据效验码:chechsum

       子卷:sub_volume

       快照:支持快照的快照;

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

常用命令:

文件系统创建:

       mkfs.btrfs

扫描二维码关注公众号,回复: 4070482 查看本文章

           -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来使用


示例:接下来我们来演示一下用btrfs文件系统三块磁盘组成一个RAID组来使用

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

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

image.png


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

image.png

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

mount  -t  btrfs  /dev/sdb  /mydata

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

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

缩减文件系统的大小

btrfs filesystem resize -10G  /mydata

image.png

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

btrfs  device add  /dev/sdd  /mydata

image.png

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

btrfs balance start  /mydata

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

btrfs filesystemd del  /dev/sdb  /mydata

image.png

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

首先我们先来查看一下文件系统的的基本信息

这里我们可以看到数据是以single单文件格式存储的

元数据是以RAID1方式存储的

下面我们将存储方式全部更改为RAID5级别

image.png

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

btrfs device add /dev/sdb  /mydata

btrfs balance start -dconvert=raid5  /mydata

btrfs balance start -mconvert=raid5  /mydata

image.png

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


创建子卷

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

btrfs  subvolume create  /mydata/test

btrfs  subvolume create  /mydata/test2

btrfs  subvolume list /mydata

image.png

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

image.png

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

btrfs  subvolume  delete  /mydata/test2


为子卷创建快照

btrfs subvolume snapshot  /mydata/test   /mydata/test_snap

image.png

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

image.png

当我们不需要快照时可以使用一下命令进行快照的删除

btrfs  subvolume delete /mydata/test_sanp 删除快照

猜你喜欢

转载自blog.51cto.com/11970509/2316898