RAID、LVM和btrfs文件系统
一、RAID:
Redundant Arrays of Inexpensive Disks,廉价磁盘冗余阵列;
Redundant Arrays of Independent Disks,独立磁盘冗余阵列;
将多个相对廉价的IDE接口的磁盘组合成一个"阵列",并不是将磁盘简单的罗列在一起,而是根据特定规则进行组合,从而可以实现提高IO性能,实现磁盘冗余容错,或者此二功能兼具;
RAID的好处:
提高IO性能:磁盘并行读写机制;
提高磁盘耐用性:通过磁盘冗余实现容错;
RAID的级别:
多块磁盘组织在一起的工作方式;
RAID的实现方式:
基于硬件实现:
外接式磁盘阵列:通过扩展接口或扩展插槽提供具有RAID功能的适配硬件设备;
式磁盘阵列:主板集成的RAID控制器;
基于软件模拟实现:
通过应用程序模拟硬件功能;
RAID的功能级别:
RAID-0:条带卷,strip
读写性能提升
磁盘可用空间:N*min(S1,S1,...)
磁盘空间利用率:100%
无容错能力
至少需要2块磁盘
RAID-1:镜像卷,mirror
读性能提升,写性能有所下降;
磁盘可用空间:1*min(S1,S2,...)
磁盘利用率:1/N
具备容错能力
至少需要2块磁盘
RAID-5:带有奇偶校验信息的条带卷;
读写性能均提升
可以磁盘空间:(N-1)*min(S1,S2,...)
磁盘利用率:(N-1)/N
具备容错能力
至少需要3块磁盘
RAID-6:双重奇偶校验的条带卷;
读写性能均提升
可以磁盘空间:(N-2)*min(S1,S2,...)
磁盘利用率:(N-2)/N
具备容错能力
至少需要4块磁盘
RAID的混合级别:
RAID-10:读、写性能提升
具备容错能力
磁盘利用率:1/2
至少需要4块磁盘
RAID-01:读、写性能提升
具备容错能力
磁盘利用率:1/2
至少需要4块磁盘
RAID-50
读、写性能提升
具备容错能力
至少需要6块磁盘
JBOD:Just a Bunch Of Disks,仅仅是一组磁盘;将多块磁盘的空间合并成一个更大的连续的存储空间;有人将此方式称为"跨区";
对于RAID,常用的级别:RAID-0, RAID-1, RAID-5, RAID-10, RAID-50,JBOD
二、CentOS下软件RAID的实现:
利用内核中的md(multi devices)模块
mdadm:模块化的工具
格式:mdadm [mode] <raiddevice> [options] <component-devices>
[mode]:
创建模式:-C, --create
装配模式:-A, --assemble
监控模式:-F, --follow, --monitor
管理模式:无选项开关
增长模式:-G, --grow
混杂模式:-D, -S
create, build, or grow:
-n, --raid-devices=
指定参与软RAID的磁盘的数量;
-l, --level=
When used with --create, options are: linear, raid0, 0, stripe, raid1, 1, mirror, raid4, 4, raid5, 5, raid6, 6, raid10, 10, mul tipath, mp, faulty, container.
-x, --spare-devices=
指定阵列中空闲的用于自动故障倒换使用的设备数量;
-c, --chunk=
指定条带化级别的RAID中,每个区块(CHUNK)的大小;
-a, --auto{=yes,md,mdp,part,p}{NN}
自动创建目标RAID设备文件;
管理模式:
-a, --add:向阵列中添加新设备;
-r, --remove:从阵列中移除设备;
-f, --fail:将设备标记为失效;
混杂模式:
-D, --detail:显示阵列信息;
通过输出重定向保存阵列的装配记录:
mdadm -D --scan >> /etc/mdadm.conf
-S, --stop:停止阵列功能;
示例:
mdadm -C md0 -n 4 -l 5 -a yes /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm -S /dev/md0
查看md设备的信息:
mdadm -D
保存装配信息:
mdadm -D --scan >> /etc/mdadm.conf
重新装配md阵列:
mdadm -A /dev/md0
三、逻辑卷管理
LVM:逻辑卷管理器,使用纯软件的方式组织一个或多个底层的物理块设备,将他们重新定义为一个逻辑块设备
利用linux内核中的dm(device mapper)模块实现,可以将一个或多个底层设备,按照预期规划组织成特定的形式,从而实现更高级的逻辑磁盘管理方式
使用DM模块实现LVM管理的一般性步骤:
1.创建并标识物理卷,PV
2.基于PV创建卷组,即逻辑块设备(VG),同时指定PE的大小;
注意:一旦卷组创建完成,则PE的大小将固定下来,其值无法再次进行修改;如果想要调整PE大小,只能重新定义卷组;
3.在已有的卷组中,创建逻辑卷;
4.需要在逻辑卷中创建文件系统(高级格式化);
5.挂载;
物理卷的管理:
注意:如果想要让一个基本分区成为物理卷,必须将分区的系统ID修改为83
物理卷管理的相关命令:
pvcreate:将普通的块设备创建为物理卷设备;创建物理卷;
pvremove:将物理卷设备转变为普通块设备;删除物理卷;
pvdisplay:显示物理卷的详细信息;
pvs:显示物理卷的简短信息;
pvmove:将某个物理卷中的所有被LV占用的PE移动到其他的物理卷中;
卷组管理的相关命令:
vgcreate
格式:vgcreate [OPTIONS] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
-s, --physicalextentsize PhysicalExtentSize[bBsSkKmMgGtTpPeE]
用于指定PE的大小,默认单位为MiB,默认的大小为4MiB;
vgreduce:从卷组中移除物理卷;
注意:必须保证被移除的物理卷上没有被占用的PE;如果有,则需要先对物理卷执行pvmove命令,再执行移除操作;
vgextend:向卷组中添加物理卷;
vgdisplay:显示卷组的详细信息;
vgs:显示卷组的简短信息;
逻辑卷管理的相关命令:
lvcreate:创建逻辑卷
-L, --size LogicalVolumeSize[bBsSkKmMgGtTpPeE]
指定逻辑卷的大小,其值不能超出卷组的容量;
-l, --extents LogicalExtentsNumber[%{VG|PVS|FREE|ORIGIN}]
在创建逻辑卷时,指定逻辑卷中包含的LE的数量或者某个特定值的百分比;
-i, --stripes Stripes
在创建逻辑卷时,以条带的方式创建,并指明在逻辑卷上的条带的数量;
-n, --name LogicalVolume{Name|Path}
指明逻辑卷的名称;
-s, --snapshot OriginalLogicalVolume{Name|Path}
创建快照卷;
-p, --permission {r|rw}
创建逻辑卷时指明此逻辑卷的操作权限;
-a, --activate {y|ay|n|ey|en|ly|ln}
-ay:创建逻辑卷的命令执行之后立即激活逻辑卷
-an:创建逻辑卷的命令执行之后将逻辑卷设置为停用状态;
lvs:显示逻辑卷简要信息
lvdisplay:显示逻辑卷信息
lvextend:扩展逻辑卷的物理边界;
-L [+]SIZE[kKmMgGtT] /PATH/TO/LV
resize2fs [-f] /PATH/TO/LV
注意:扩展逻辑卷的空间,可以在线进行;
扩展逻辑卷的示例:(逻辑卷的路径通常为/dev/卷组名/逻辑卷名)
lvextend -L +10G 逻辑卷的路径
resize2fs -f 逻辑卷的路径 //将逻辑边界扩展到物理边界的大小
lvreduce:缩减逻辑卷的物理边界;
lvreduce -L [-]SIZE[kKmMgGtT] /PATH/TO/LV
resize2fs [-f] /PATH/TO/LV LV_SIZE 缩减逻辑卷的逻辑边界
注意:
1.在缩减逻辑卷空间时,先缩减逻辑边界,再缩减物理边界;
2.缩减逻辑卷空间前,先卸载并停用逻辑卷,缩减之后,再启用挂载即可;
3.建议在缩减逻辑卷之前,对文件系统进行检测,以保证数据一致性;
缩减逻辑卷的示例:
umount 挂载逻辑卷的目录 //缩减逻辑卷不能在线进行,必须先解除挂载
e2fsck 逻辑卷的路径 //检查并修复逻辑卷
resize2fs -f 逻辑卷的路径 10G //减少逻辑边界到10G
lvchange -an 逻辑卷的路径 //修改逻辑卷为停用状态
lvreduce -L 10G 逻辑卷的路径 //减少逻辑卷物理边界到10G
lvchange -ay 逻辑卷的路径 //修改逻辑卷为激活状态
mount 逻辑卷的路径 挂载逻辑卷的目录 //挂载逻辑卷
四、逻辑卷的快照
1.快照的定义:
1)其本身也是逻辑卷,可以将其视为做快照的目标逻辑卷的另外一个访问路径;
2)快照卷是一种特殊的逻辑卷,在其创建之初,其存储空间并没有任何消耗;只有当原来的逻辑卷中数据发生变化时,才会消耗快照卷空间;
3)快照卷中只包含原有逻辑卷中被更改的数据或自生成快照逻辑卷之后快照卷中更改的数据;
4)快照卷也可以使用lvextend进行扩容;
5)通常来说,快照卷和原卷会共用很多的PE,因此快照卷与原卷就必须在同一VG上;在从快照卷备份数据的过程中,必须要保证,变化的数据文件的总量不能超过快照卷大小;
2.创建快照卷:
lvcreate -L SIZE_SNAPSHOP -s -p r -n LV_NAME_SNAPSHOT /PATH/TO/LV_ORIGIN
示例:
lvcreate -L 5G -s -p r -n lv_snap /dev/vg/lv
mkdir /mnt/snapshot
mount /dev/vg/lv_snap /mnt/snapshot/
完成数据的备份之后:
umount /mnt/snapshot/
lvremove /dev/lv_snap
五、btrfs文件系统
1.btrfs的特性:
1)可扩展性:
2)多物理卷支持;
3)写时复制的数据更新机制(CoW);
更新、修改等操作是在复制之后替换指针;
4)数据及元数据的校验码;
5)子卷管理;
6)快照,快照的快照;文件的快照;
7)透明压缩,隐形压缩;
2.btrfs命令:
格式:btrfs <command> [<args>]
<command>
filesystem:
btrfs-filesystem - control btrfs filesystem
btrfs filesystem <subcommand> <args>
df [options] <path> 显示btrfs文件系统的空间使用率;
label [<dev>|<mountpoint>] [<newlabel>] 查看或设置btrfs文件系统的卷标;
resize [<devid>:][+/-]<size>[kKmMgGtTpPeE]|[<devid>:]max <path> 在线修改文件系统的大小;
show [--mounted|--all-devices|<path>|<uuid>|<device>|<label>] 查看btrfs文件系统相关的信息;
sync <path> 强制将内存中的数据同步至文件系统;
usage [options] <path> [<path>...] 查看btrfs文件系统上各硬件设备的磁盘使用率;
device:
btrfs-device - control btrfs devices
btrfs device <subcommand> <args>
add [-Kf] <dev> [<dev>...] <path> 向btrfs文件系统中添加新设备;
delete <dev> [<dev>...] <path> 从btrfs文件系统中删除设备;
balance:btrfs-balance - balance btrfs filesystem
btrfs balance <subcommand> <args>
start [options] <path> 在线调整跨设备的chunk;修改数据及元数据的组织方式;
-d[<filters>]
-dconvert={raid0, raid1, raid10, raid5, raid6, single.}
-m[<filters>]
-mconvert={raid0, raid1, raid10, raid5, raid6, dup, single.}
-s[<filters>]
-sconvert={raid0, raid1, raid10, raid5, raid6, single.}
pause <path> 暂停正在运行的平衡操作;
cancel <path> 撤销此前的正在运行或暂停的平衡操作;
status [-v] <path> 查看平衡过程的状态;
resume <path> 恢复被打断的平衡过程;
subvolume:
btrfs-subvolume - control btrfs subvolume(s)
btrfs subvolume <subcommand> [<args>]
create [-i <qgroupid>] [<dest>]<name> 创建子卷;
delete [options] <subvolume> [<subvolume>...] 删除子卷;
snapshot [-r] <source> <dest>|[<dest>/]<name> 为指定的子卷创建快照卷;
五、ext系列文件系统和btrfs之间安全转换
btrfs-convert命令
btrfs-convert [options] <device>
从ext转换至btrfs:
btrfs-convert /dev/sde1
从btrfs回滚至ext:
btrfs-convert -r /dev/sde1
注意:转换操作需要提前将设备卸载;
转载于:https://blog.51cto.com/papapa213/2094484
RAID、LVM和btrfs文件系统的更多相关文章
- Btrfs 文件系统
btrfs文件系统简介 btrfs文件系统:技术预览版(Centos7) Btrfs(B-tree.Butter FS.Better FS),GPL授权,Orale2007提出是想用来取代Ext文 ...
- Linux学习笔记之Btrfs 文件系统
0x00 btrfs文件系统简介 btrfs文件系统:技术预览版(Centos7)Btrfs(B-tree.Butter FS.Better FS),GPL授权,Orale2007提出是想用来取代Ex ...
- Linux btrfs文件系统
btrfs,它名字挺多:B-tree fs;Butter fs;Better fs 开源协议是GPL,2007年由Oracle研发 核心特性: 多物理卷支持,btrfs可由多个物理卷组成:支持RAID ...
- Linux学习笔记之 Btrfs文件系统简介及使用
Btrfs 也有一个重要的缺点,当 BTree 中某个节点出现错误时,文件系统将失去该节点之下的所有的文件信息.而 ext2/3 却避免了这种被称为”错误扩散”的问题. Btrfs相关介绍: Btrf ...
- RAID&LVM有关磁盘的故障
目录 RAID&LVM有关磁盘的故障 RAID 注意:RAID硬盘失效处理--热备和热拔插 RAID实战 LVM介绍 磁盘故障 RAID&LVM有关磁盘的故障 RAID 好处:1.更多 ...
- btrfs文件系统简单学习
1 btrfs文件系统 btrfs文件系统在生产环境应用还不多,因此,本文仅仅简单学习. 1.1 btrfs文件系统核心特性 1)多物理卷支持:btrfs可由多个底层物理卷组成(可以是单块物理磁盘,也 ...
- 存储那些事儿(五):BTRFS文件系统之Btree结构详解
Btree数据结构可以说是BTRFS文件系统的基础.它提供了一个通用的方式去存储不同的数据类型.它仅仅存储3个数据类型:key, item和block header. btrfs_header的定义如 ...
- linux磁盘限额和进阶文件系统的管理 quota RAID LVM
概念: Quota 的一般用途: 针对 WWW server ,例如:每个人的网页空间的容量限制! 针对 mail server,例如:每个人的邮件空间限制. 针对 file server,例如:每个 ...
- 文件系统的几种类型:ext3, swap, RAID, LVM
分类: 架构设计与优化 1. ext3 在异常断电或系统崩溃(不洁关机, unclean system shutdown ).每个已挂载ext2文件系统计算机必须使用e2fsck程序来检查其一致性 ...
随机推荐
- iapp,iapp http请求,iapp解析json数据
iapp发送http请求,并解析json数据 //http操作 t() { s a = "http://wap.baidu.com/" //目标url hs(a, null, nu ...
- CF633(div.2)A. Filling Diamonds
题目描述 http://codeforces.com/contest/1339/problem/A 给定一个 \(n(1\le n \le 10^9)\) ,问用一个由两个三角形组成的菱形,填充下面这 ...
- 【php】面向对象(二)
一. 封装: a) 描述:使用成员修饰符修饰成员属性和成员方法,能够最大限度的隐藏对象内部的细节,保证对象的安全 b) PPP修饰符:public(公共的),protected(受保护的),priva ...
- MTK Android Driver :Audio音频参数
音频参数集成(具体参数由硬件提供) 1.ring/key/mic/fmr/speech/sidetone/media/matv增益: \mediatek\custom\k9\cgen\inc\audi ...
- 《闲扯Redis四》List数据类型底层编码转换
一.前言 Redis 提供了5种数据类型:String(字符串).Hash(哈希).List(列表).Set(集合).Zset(有序集合),理解每种数据类型的特点对于redis的开发和运维非常重要. ...
- 让 .NET 轻松构建中间件模式代码(二)
让 .NET 轻松构建中间件模式代码(二)--- 支持管道的中断和分支 Intro 上次实现了一个基本的构建中间件模式的中间件构建器,现在来丰富一下功能,让它支持中断和分支,分别对应 asp.net ...
- 数据结构和算法(Golang实现)(5)简单入门Golang-接口
接口 在Golang世界中,有一种叫interface的东西,很是神奇. 一.数据类型 interface{} 如果你事前并不知道变量是哪种数据类型,不知道它是整数还是字符串,但是你还是想要使用它. ...
- AJ学IOS(15)UI之曾经大热的打砖块小游戏
AJ分享,必须精品 先看效果图 代码 // ViewController.m // 打砖块 // // Created by liufan on 13-8-17. // Copyright (c) 2 ...
- 深入理解new运算符
在 JavaScript 中,new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例.创建一个对象很简单,为什么我们还要多此一举使用 new 运算符呢?它到底有什么样的魔力? 认 ...
- python批量添加hexo文章封面
❝ 本文需要工具: 「excel」 「python3.x」 ❞ 今天突然觉得,我的博客的文章更新这么多了竟然还没有一个封面,觉得首页相当低调了- 首页 正好皮肤带有文章封面功能,所以我觉得要将文章批量 ...