一, 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
注意: 转换操作需要提前将设备卸载;
来源: http://www.bubuko.com/infodetail-2548920.html