btrfs
btrfs即B-tree 文件系统,这种文件系统最重要的特性是写时复制机制,它的出现主要是为了取代ext3/ext4。btrfs的几个核心特性:多物理卷支持、写时复制(C-o-W)更新机制、数据及元数据校验码机制、子卷、透明压缩。
btrfs的几个常用子命令:
1、btrfs subvolum :
btrfs subvolum create 创建子卷;
btrfs subvolum delete 删除子卷;
btrfs subvolum list 列出子卷;
btrfs subvolum show 显示子卷的详细信息;
2、btrfs filesysytem :
btrfs filesystem df 显示btrfs的空间大小
btrfs filesystem show 显示已有的btrfs
btrfs filesystem syn 同步内存上的数据到磁盘上
btrfs filesystem resize 动态调整btrfs大小
btrfs filesystem lable 加卷标
3、btrfs balance :(原有的数据移动一部分到新增的物理卷上)
btrfs balance start 启用balance
btrfs balance pause 停止balance
btrfs balance cancle 取消balance
btrfs balance status 查看balance状态
4、btrfs device:
btrfs device add 添加一个物理卷
btrfs device delete 删除一个物理卷
5、btrfs scrub(擦除数据)
创建B-tree文件系统的命令:mkfs.btrfs。
mkfs.btrfs在centos7或者更新版本的ubuntu或者suse中才会有此命令,此命令可跟相应的参数来设置创建的btrfs。
-L|--lable <name> 设置btrfs的名称
-m|--metadata <profile> 设置元数据跨设备的存放机制,比如你想要元数据存放的更安全可以使用RAID1镜像机制来存放。
-d|--data <type> 设置数据跨设备的存放机制
-O|--feature <feature1> [,<feature2>...] 设置格式化时直接开启btrfs的哪些特性。
使用命令mkfs.btrfs -O list-all 列出当前支持的所有特性。某些特性需要内核中的某些功能启动以后才可以使用。
mkfs.btrfs -L mybtrfs /dev/sdb /dev/sdc 将sdb和sdc两个设备创建为B-tree文件系统。
btrfs filesystem show 查看创建的文件系统是否成功,如下图所示。
在上图中可以看到有三个btrfs,第一个是系统自己创建的,后两个是我创建的。btrfs也有UUID,我们使用blkid /dev/sdc 和blkid /dev/sdb查看这两个设备的UUID,发现他们的UUID与上图中mybtrfs的UUID是一样的。
使用man btrfs-filesystem命令,可查看btrfs filesystem的更为详细的使用方法,如下图所示:
由上图可知,btrfs filesystem show 后可带参数:
显示已挂载的btrfs:btrfs filesystem show --mounted
显示所有的btrfs:btrfs filesystem show --all-devices
显示设备/dev/sdb 的信息:btrfs filesystem show /dev/sdb,使用此命令展现的结果如下图所示:
查看设备的卷标:btrfs filesystem label /dev/sdb
文件系统创建好之后,就可以挂载了。
mount -t btrfs /dev/sdb(sdc) /mydata
挂载时使用透明压缩机制:mount -o compress={lzo|zlib} DEVICE MOUNT_POINT
调整文件系统的大小。
此操作需将btrfs挂载然后再进行:btrfs filesystem resize -10G /mydata(mydata是挂载点,减少的10G的空间是挂载至该挂载点的btrfs),调整完后使用btrfs filesystem df /mydata查看文件系统实际空间大小,也可通过df -hl查看文件系统使用的大概信息。需要注意的是文件系统的大小调整需要根据实际的物理磁盘的空间大小来调整,如果我们不知道物理设备究竟有多大,可以使用btrfs filesystem -max /mydata命令来调整文件系统使用物理设备的所有空间。
当然,如果我们的物理设备的空间不够使用了,还可以添加物理设备来增加文件系统的空间,添加方法为(使用man btrfs-device命令查看该命令的使用方法):btrfs device add /dev/sdd /mydata,添加完成之后使用df -hl查看btrfs文件系统大小
数据均衡分布。
当我们添加了一块物理设备之后,想要使原btrfs中的数据分布在/dev/sdd上,使用btrfs balance start /mydata即可。
动态修改组织机制。
btrfs balance start {-m|-d|-s}convert=raid1 /mydata 修改mydata下的btrfs的{元数据、数据、系统数据}的组织机制为raid1(如果设备不足够的话是不支持raid5组织机制的)。
创建子卷。
在mydata挂载点下的btrfs中创建子卷logs:btrfs subvolume create /mydata/logs
查看子卷:btrfs subvolume list /mydata,子卷的ID也在此处查看。
子卷的挂载:如果我们将名为mybtrfs的B-tree文件系统挂载,那么其下的子卷均会被挂载。如果我们只想挂载其中的子卷,那么我们需要先将mybtrfs卸载,再挂载相应的子卷:
mount -o subvol=logs /dev/sdb /mnt 或者mount -o subvolid=logs的id /dev/sdb /mnt ,将logs子卷挂载至/mnt中。
删除子卷。
btrfs subvolume delete /mydata/logs
查看子卷是否被删除: btrfs subvolume list /mydata
创建快照卷。
btrfs subvolume snapshot /mydata/logs /mydata/logs_snapshot 在mydata下创建logs的快照卷logs_snapshot。
此时查看子卷会发现在mydata下有两个 子卷:logs和logs_snapshot,假如创建快照之前logs下有passwd这个文件,那么做了快照之后,在logs_snapshot快照下仍然有passwd这个文件。现在我们在原文件(/mydata/logs/passwd)中加入一行字母“aaaa”,再在快照中查看,如下图所示。
删除快照卷与删除子卷是一样的:btrfs subvolume delete /mydata/logs_snapshot
对单个文件做快照。
cp --reflink /mydata/logs/passwd(原文件) /mydata/logs/passwd1(快照文件),效果与上图是一样的。
本文出自 “123” 博客,谢绝转载!