btrfs

来源:互联网 发布:java软件理论基础 编辑:程序博客网 时间:2024/04/30 02:20

Btrfs相关介绍:

Btrfs 是一个 Linux 中的新的写时复制(copy-on-write (COW))的文件系统,目的是实现高级功能的同时着重与容错功能,修复功能以及易于管理。目前由Oracle, Red Hat, 富士通, Intel, SUSE以及其他组织共同开发,在 GPL 许可证下发行,同时向任何人公开代码。


Btrfs核心特性:

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



写时复制更新机制(CoW):复制、更新及替换指针,而非“就地”更新;在文件进行修改的时候,首先将文件复制一份出来,在复制出来的文件上进行修改,修改完成之后,将指向原有文件的指针修改指向到修改完成的文件上,若修改完成的文件出现了错误,则我们可以通过原文件进行修复


数据及元数据校验码:checksum ,当存储某个文件时,checksum会将数据的源数据和数据的校验码,分别通过文件的属性扩展进行保存,当我们再次读取数据时可以方便的检测数据是否受损,如果文件受损系统可以完成自动修复;


子卷:sub_volume,在一个卷上创建多个子卷,在每一个子卷上创建文件系统,并挂载使用;



快照:支持快照的快照;因此可以实现类似增量快照的机制


透明压缩 :如果我们在存储文件时,进行压缩存储,那么在文件发往btrfs时,会自动的占用时钟周期,完成数据的压缩存放,而用户并不知道,在用户读取文件时,会自动的进行文件的解压缩,可以实现节约磁盘空间。但是压缩和解压缩会占用时钟周期;


创建btrfs文件系统


先进行挂载(2种方式)

1、

1)sudo mount /dev/sdx 或 /dev/sdxN /mnt

然后执行

sudo mkfs.btrfs -L "mydata" /dev/sdx

之后可以把硬盘加入到mnt中

sudo btrfs device add /dev/sdx 或 /dev/sdxN /mnt

2)如果之前就已经规划好了要用btrfs创建一个跨多个硬盘的文件系统,可以用如下:

sudo mkfs.btrfs -L "mydata" -d single /dev/sda /dev/sdb /dev/sdc 

解释:

-d single:raid0

-d raid1,raid2、raid5、raid10等

把物理硬盘格式化成一个资源池(raid)

2、btrfs filesystem 来管理资源池(查看,减小,扩充等操作)[扩充受底层的物理硬盘大小限制]

     可以用blkid查看设备属性(/dev/sda)

3、btrfs device 管理物理硬盘设备(添加,删除,扫描,状态等)

     决定了上层btrfs文件系统的可用大小限制

4、子卷

1)创建子卷

btrfs subvolume create /PATH 此路径必须是在btrfs文件系统的挂载目录下


btrfs subvolume create /mydata/subvol1 

btrfs subvolume create /mydata/subvol2

2)查看子卷信息:

btrfs subvolume list /mydata

3)挂载子卷:

mount -o subvol=subvol1 /dev/sdx /mnt   (此时的/dev/sdx是btrfs文件系统的一个表示最好用UDDI或是LABLE)

        mount  /dev/sdx /mnt (可以直接挂载父卷[btrfs文件系统],子卷也自动进行挂载可以识别子卷里面的信息),如果只挂载子卷父卷内容不可见子        卷内容可见,如果挂载父卷,子卷和父卷内容均可见

4)删除子卷:

btrfs subvolume delete  /mydata/subvol

5、创建子卷快照:(对某一时间点的子卷进行备份)

btrfs subvolume snapshot /mydata/subvol1 /mydata/subvol1_snapshot

6、ext和btrfs之间的相互转换

1) btrfs-convert [-r] Device

-r:加-r参数,普通文件系统转换btrfs,不加则btrfs回滚到普通文件系统

     btrfs-convert -r /dev/sdd1


6、btrfs修复

命令格式: btrfs balance start [OPTIONS] <FILTERS> MOUNT_POINT

常用选项有:

-d: 指定数据的组织机制

-s:指定元数据的组织机制

-m:指定文件系统的组织机制

ext->btrfs

1) 如有物理硬损坏,raid5类型,需要先将对raid5降级才可去除坏的硬盘

    文件系统的组织形式(由raid5到raid1):raid5降级:btrfs balance start -mconvert=raid1 /mydata 

     数据的组织形式:btrfs balance start -dconvert=raid1 /mydata

    之后移除坏的设备:btrfs device delete /dev/sdd /mydata 

   fdisk /dev/sdd 分区

   mkfs.ext4 /dev/sdd1 

   mount /dev/sdd1 /mnt

  cp /etc/fstab /mnt

   强制检测

   fsck -f /dev/sdd1

    btrfs-convern /dev/sdd1 

     btrfs filesystem show


btrfs->ext

umount /mnt

btrfs-covnert -r /dev/sdd1 

mount /dev/sdd1 /mnt

blkid /dev/sdd1


如果磁盘出现故障

如果某个磁盘出现故障,我们则需要从文件系统中将其移除以便剩下的磁盘正常工作,此时可以使用如下命令:

sudo mount -o degraded /dev/sdb /mnt

然后再用如下命令修复文件系统:

sudo btrfs device delete missing /mnt

如果你没有启用 RAID1 或 RAID10,磁盘损坏后该硬盘上的数据将会丢失。



















0 0