一、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文件系统性能对比 参考网址:Btrfs文件系统的趋势:https://www.chiphell.com/thread-1431457-1-1.html
raid:level
能够保证,硬件损坏时,业务不会终止 建议以后做存储,放在有容错级别的raid上 LVM:volume //多个物理设备组织成一个逻辑设备 需要内核中的驱动模块支持 |_______lv______|__lv2__|.....| |_________________vg__________| |disk1 | disk2, | .... | //假如底层硬件设备损坏,会影响上层的数据 snapshot:主要是为了让备份操作更流畅 因为直接进行复制的话,很有可能数据会不一致//在复制的时候,也在发生改变 //在复制的过程中,是不允许file的最近一次修改的时间戳不一致的 btrfs:了解即可