btrfs文件系统的简单使用方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了btrfs文件系统的简单使用方法相关的知识,希望对你有一定的参考价值。

简单介绍btrfs文件系统的使用,包括创建、挂载、子卷的创建、挂载、快照、在线添加和移除物理设备、重新均衡数据


btrfs的特性:

    多块磁盘支持:btrfs可由多个底层磁盘组成,支持RAID,可以联机添加、移除、修改磁盘。

    写时复制更新机制:复制、更新时直接替换指针,而非直接更新。

    数据和元数据校验码:checksum

    支持子卷

    快照

    透明压缩功能


以Centos 7 系统为例 ,首先在虚拟机上添加3块大小为10G的硬盘 /sdb、/sdc、/sdd

一、

1、文件系统的创建:

    命令格式介绍:mkfs.btrfs[选项]<设备>(<设备>…)

                        -b:字节数<大小> 指定文件系统的大小。默认整个设备空间。

                        -L:文件系统的标签

                        -d:数据类型,可以是RAID(0、1、5、6、10)single

                        -m:元数据类型,可以是RAID(0、1、5、6、10)single

    开始创建:

        mkfs.btrfs -L "test" -d raid1 -m raid1 /dev/sdb /dev/sdc

技术分享图片

我们用了两块磁盘 设置卷标为 test、数据和元数据类型为raid1 大小为默认整个磁盘空间20G,但我们数据存储用的是RAID1所以

如果挂载后应该是显示可用空间为10G,信息如上图所示

 我们用命令:btrfs filesystem show  可以显示所有的btrfs文件系统的属性信息

技术分享图片

我们还可以用命令:blkid /dev/sdb /dev/sdc命令来查看他们的信息

技术分享图片

上图中可以看书他们的UUID是相同的,因为他们组成了一个文件系统,但是UUID_SUB是不同的


2、挂载文件系统根目录下创建/testdata目录,并将其挂载上去

技术分享图片

用mount 查看挂载情况

技术分享图片

显示已经挂载成功,注意此时的/dev/sdb、/dev/sdc 组成一个文件系统,所以显示哪个都是一样的

进入cd /testdate/ 目录我们就可以正常操作了,我们将 /boot/initramfs-3.10.0-693.el7.x86_64.img 复制到/testdate/目录下名称不变,并查看了当前目录大小:为28M

技术分享图片

df -h查看分区使用情况:

技术分享图片

显示其大小为10G


命令 umount /testdate 将其卸载


3、下面演示透明btrfs文件系统的透明压缩功能,命令为 mount -o compress=lzo /dev/sdb /testdata

技术分享图片

4、更改文件系统大小命令格式为: btrfs filesystem resize [devid:][+/-]<newsize>[kKmMgGtTpPeE]|[devid:]max <path>

现在我们将其大小减5G,命令为 btrfs filesystem resize -5G /testdata

 然后查看其属性信息

技术分享图片

发现/dev/adb 空间由10G缩减到了5G

再用df -h 命令查看分区空间使用情况:

技术分享图片

可用空间由10G缩减为7.5G ,因为是RAID1 减少了5G,空间就相当于缩减了2.5G

还可以用 btrfs filesystem resize max /testdata ,将其扩到最大

技术分享图片


二、下面我们演示: 向btrfs文件系统,添加和移除底层磁盘设备 ,添加的dev/sdd,

然后更改数据的存储方式为RAID5试试效果,命令格式为:

btrfs device [add delete remove ][options] <device> [<device>...] <path>       

        添加、删除、移除底层磁盘设备

1、我们添加/dev/sdd磁盘:

 这里先用命令更改下btrfs文件数据的存储格式:命令 btrfs balance start -dconvert=raid0 /testdata 将数据的存储方式改为raid0

技术分享图片

   添加/dev/sdd

命令为:btrfs device add /sdd /testdata /testdata

然后查看其属性: 

技术分享图片

现在testdata由三块磁盘组成

但此时三块磁盘存储的数据不均衡,


3、btrfs balance命令格式:

    btrfs balance [options] <path>
        Balance chunks across the devices
    btrfs balance [start、pause、cancel、status]<path>
       开始、暂停、继续、取消、平衡操作、查看状态
我们开始平衡数据:

    btrfs balance start /testdata

技术分享图片

这个操作会暂用资源,主要看数据量,现在数据均衡存储在三块盘上

如果要移除其中一块盘,数据会自动移动到其他两块盘上,然后删除,不需要人工转移数据:

下面演示: btrfs device remove /dev/sdd /testdata

移除后我们查看/testdata中的数据并没有丢失。

测试完后将其加回然后再做数据均衡 btrfs device add /dev/sdd /testdata;btrfs balance start /testdata


4、接下来演示数据和元数据的组织机制转换

命令格式为: btrfs balance start <-d -m -s><convert>=<[raid0,raid1,raid5...single]> <path>

我们将其数据和元数据的组织机制改为:raid5

技术分享图片

更改完成后:用命令 btrfs filesystem usage /testdata 查看详细信息:

技术分享图片

显示已经改变


三、subvolume

1、创建子卷

查看子卷命令:btrfs subvolume list /testdata

创建格式:  btrfs subvolume <subcommand>

                                create [-i <qgroupid>] [<dest>/]<name>
                                创建子卷        
                                delete [options] <subvolume> [<subvolume>...]
                                删除子卷

下面我们创建一个名为volume1的子卷:

btrfs subvolume create /testdata/subvolume1

技术分享图片

子卷创建成功,

查看子卷:btrfs subvolume list /testdata

技术分享图片


因为子卷在主卷当中所以挂载主卷就可以进入子卷,也可以单独挂载子卷,

比如将子卷挂载到/mnt 目录下

我们先卸载/testdata

然后挂子卷

umount /testdata

mount -o subvol=subvolume /dev/sdb /mnt   (挂载子卷的方法)

cd /mnt 进入/mnt

cp /etc/passwd ./ 复制文件到当前目录下


将/dev/sdb 挂载 到/testdata 上去


5、给子卷创建快照

命令   btrfs subvolume snapshot /testdata/subvolume1 /testdata/subvolume1_snapshot (注意快照卷需要和其原卷在同一个文件系统上)

技术分享图片

快照卷创建成功,更改快照原卷当中的文件,然后查看快照卷当中是否发生变化。


四、ext文件系统与btrfs文件系统的转换

下面我们将/dev/sdd 从btrfs文件系统中删掉然后格式化成ext4类型的文件系统

技术分享图片

上图以改为ext4文件系统,下面进行转换

转换前我们对其进行卸载然后强制检测:

技术分享图片

上图转换成功,

blkid 查看格式:

技术分享图片

转换会原来的格式 :btrfs-convert -r /dev/sdd

技术分享图片



完成。

写的粗糙,,,,,



以上是关于btrfs文件系统的简单使用方法的主要内容,如果未能解决你的问题,请参考以下文章

btrfs文件系统的简单管理及应用

btrfs的介绍与使用

btrfs使用方法

Linux初学之btrfs文件系统及磁盘配额

Linux 文件系统之btrfs

linux高级文件系统管理——btrfs