一、LVS和btrfs
btrfs自己就支持动态扩展,所以不必建立lvm
1.LVS
pv-->vg--->lv
PE:由PE指定,划分为lv后,变为LE
LV中的PE叫做LE
快照卷的大小:取决于快照要存活多长时间
dd:复制
2.Btrfs (B-tree,Butter FS,Better FS),GPL //oracle 2007年后开始研发,最主要的特性:支持写时复制
//BTREE稳定性不够,支持快照,可以对快照进行快照
//可以对单个文件进行快照
//主要是用来取代ext3,4,Centos上出现了另外一种方案,xfs
//xfs以前是unix上使用的,后期开源了,支持
//ext文件系统的反删除功能不是特别好
//可以实现组织多个硬盘为一个
核心特性:
1.支持将多个物理设备组织成一个设备来使用,多物理卷支持,支持raid。以联机“添加”,“移除”,“修改“
2.写时复制更新机制(coW)
//对文件进行修改的时候,复制一份,对附件进行操作,完成后,把文件名的指针指向附件,原有数据还在,便于恢复
//复制更新,及替换指针,而非就地更新源文件
3.数据和元数据校验机制;//是否修复,以及自动修复,保证数据的安全性
4.子卷:sub_volume,每个子卷可以单独使用和挂载
5.快照:子卷的一个副本而已,非完全复制,基于coW机制,
支持快照的快照:类似于增量的快照
6.透明压缩,存储的数据自动压缩,在使用的时候,自动解压缩
但是会消耗更多的cpu时钟周期 //用时间换取空间
二、使用
btrfs//现在大多的命令都使用,很多子命令,和主命令结合使用
//例如lvcreate,lvdisplay 等
btrfs-convert :将ext动态转换为btrfs,也能降级为ext
btrfsck :自动检测
btrfs --help //帮助
1.mkfs.btrfs
-L 卷标
-m {raid0,1,5,6,10,single}元数据如何存放
//元数据是如何跨多设备存放的
-d data数据是如何跨多设备存放的
//raid0,1,5,6,10,single
-O 指定特性,在格式化时启用的特性
mkfs.btrfs -O list-all //查看所有特性
-U 指定uuid
//可以使用多块硬盘直接组织成btrfs文件系统
关闭虚拟机,添加3块硬盘,都是20G,sdb,c,d
mkfs.btrfs -L mydata /dev/sdb /dev/sdc
btrfs filesystem show //
blkid /dev/sd{b,c} //UUID是一样的,但是UUID_SUB子卷UUID是不一样的
man btrfs //btrfs有很多子命令,
btrfs filesystem show --all-device
btrfs filesystem show --mounted
2.btrfs filesystem :
df //查看空间挂载空间使用情况,-k,m,g,h
show --mounted/--all-devices
sync //同步到磁盘
defragment //碎片整理,为...整理碎片
resize //调整代销
label //指定或者显示卷标
btrfs filesystem label /dev/sdb
//创建btrfs之后,就可以直接挂载
//mount -t btrfs /dev/sdb /test ,可以不指定fs,只需要指定其中一个成员即可
//umount /dev/sdb
2.1 resize
btrfs filesystem resize -10G /mydata/ //直接减小,联机进行,已经挂载,df 查看
btrfs filesystem resize +5G /mydata
btrfs filesystem df -h /mydata //查看
btrfs filesystem resize max /mydata/ //使用所有可用空间
3.透明压缩机制
mount -o compress={lzo|zlib} DEVICE MOUNT_POINT
mount -o compress=lzo /dev/sdb /mydata
4.btrfs device
add //自动执行扩展,此前的数据不会存储到新加的硬盘
btrfs device add /dev/sdd /mydata
delete //拆除一个屋里设备,在线执行,他可以自动移动数据,然后拆除
//btrfs device delete /dev/sdd /mydata
ready 转为备用状态
scan
stats IO统计数据
usage
5.balance //实现均衡操作,均衡数据在多块硬盘上
cancel //取消
pause //暂停
start
status
resume 重新开始,pause之后
btrfs balance status /mydata
btrfs balance start /mydata
//修改meta data和data的级别,也是在balance中修改
start
-d 修改data chunks
-m 修改medata chunks
-s 修改system chunks
convert {raid0,1,5,6,single}
btrfs balance start -dconvert=raid5 /mydata
//设备如果不够的话,raid级别是不支持的,两块硬盘是不能做raid5的
三、创建子卷
man btrfs-subvolume
create
//只需要指定名字即可,其实就是在父卷上创建一个子卷目录名而已
//btrfs subvolume create /mydata/logs
btrfs subvolume create /mydata/catch //创建2个子卷
// btrfs subvolume list /mydata/ 查看子卷
//挂载的话,假如挂载了顶级卷,他的所有的卷都会自动挂载,也可以指定挂载单个子卷
//mount -o subvol=logs /dev/sdb /mydata/ 只挂载子卷
cp /var/log/messages /mydata //复制文件到子目录
btrfs subvolume show /mydata/ //查看子卷详细信息
卸载logs子卷,然后挂载父卷
ls /mydata/messages 可以查看
btrfs subvolume delete /mydata/logs //删除子卷
delete
list
snapshot //子卷的快照必须与子卷在同一个父卷中
btrfs subvolume snapshot /mydata/catch /mydata/catch_snapshot
//修改/mydata/catchs/messages原有的文件的数据,校验快照是否起作用
//查看/mydata/catchs_snapshot 中的文件没有发生改变
btrfs subvolume delete /mydata/catch_snapshot/
get-default
set-default
list
show //查看子卷相信信息
btrfs subvolume list /mydata/ 查看subvolid ,
四、对文件进行快照
cp --reflink grub2.cfg grub2.cfg_snapshot //另外一个地方最好在当前卷上的一个目录上
是因为写时复制机制导致的
五、转换ext为btrfs
btrfs balance start -dconvert=single /mydata
btrfs balance start -mconvert=raid1 /mydata
btrfs device delete /dev/sdd /mydata //拆除sdd
//sdd新建一个分区,5G,mkfs.ext4
//mount /dev/sdd1 /mnt
//cp /etc/fstab /mnt/
转换格式:
umount /mnt
fsck /dev/sdd1 -f //强制检测,为了安全起见
btrfs-convert /dev/sdd1
btrfs-convert -r /dev/sdd1 回滚
umount /mnt
blkid /dev/sdd1 //查看类型
六、ext&xfs&btrfs对比
ext3,ext4,xfs和btrfs文件系统性能对比
参考网址:http://www.cnblogs.com/tommyli/archive/2013/07/19/3201047.html
Btrfs文件系统的趋势:https://www.chiphell.com/thread-1431457-1-1.html
raid:level
能够保证,硬件损坏时,业务不会终止
建议以后做存储,放在有容错级别的raid上
LVM:volume //多个物理设备组织成一个逻辑设备
需要内核中的驱动模块支持
|_______lv______|__lv2__|.....|
|_________________vg__________|
|disk1 | disk2, | .... |
//假如底层硬件设备损坏,会影响上层的数据
snapshot:主要是为了让备份操作更流畅
因为直接进行复制的话,很有可能数据会不一致//在复制的时候,也在发生改变
//在复制的过程中,是不允许file的最近一次修改的时间戳不一致的
btrfs:了解即可
本文转自MT_IT51CTO博客,原文链接:http://blog.51cto.com/hmtk520/1950137,如需转载请自行联系原作者