硬盘 连续空间 无法 扩容
lvm 非连续空间 可以动态扩容
raid 备份, 提高读写性能,不能扩容
raid 是磁盘的集合,按照排列组合的方法不 一,给 raid 去了不同的名字 raid0 raid1 raid5 raid10
什么是 RAID
"RAID" 一词是由 David Patterson, Garth A. Gibson, Randy Katz 于 1987 年在加州大学伯克利分校发明 的。在1988 年 6 月 SIGMOD 会议上提交的论文 "A Case for Redundant Arrays of Inexpensive Disks”" 中 提出,当时性能最好的大型机不断增长的个人电脑市场开发的一系列廉价驱动器的性能所击败。尽管故障与驱动器数量的比例会上升,但通过配置冗余,阵列的可靠性可能远远超过任何大型单个驱动器的可靠性。
独立硬盘冗余阵列 ( RAID , R edundant A rray of I ndependent D isks ),旧称 廉价磁盘冗余阵列 ,简称磁盘阵列 。利用虚拟化存储技术把多个硬盘组合起来,成为一个或多个硬盘阵列组,目的为提升性能或数据冗余,或是两者同时提升。RAID 层级不同,数据会以多种模式分散于各个硬盘,RAID 层级的命名会以 RAID 开头并带数字,例如: RAID 0 、 RAID 1 、 RAID 5、 RAID 6 、 RAID 7 、 RAID 01 、 RAID 10 、 RAID 50 、 RAID 60 。每种等级都有其理论上的优缺 点,不同的等级在两个目标间获取平衡,分别是增加数据可靠性以及增加存储器群)读写性能。
简单来说, RAID 把多个硬盘组合成为一个逻辑硬盘,因此操作系统只会把它当作一个实体硬盘。 RAID 常被用在服务器电脑上,并且常使用完全相同的硬盘作为组合。由于硬盘价格的不断下降与RAID 功能更 加有效地与主板集成,它也成为普通用户的一个选择,特别是需要大容量存储空间的工作,如:视频与音频制作。
RAID 功能实现
提高 IO 能力 (提高数据传输速度)
提高耐用性
磁盘冗余备份
RAID 实现的方式
外接式磁盘阵列:通过扩展卡提供适配能力
内接式 RAID :主板集成 RAID 控制器,安装 OS 前在 BIOS 里配置
软件 RAID :通过 OS 实现,比如:群晖的 NAS 存储
1. 硬件方式 通过 raid 卡
2. 软件方式 通过 raid 软件方式
raid 级别
RAID-0 :条带卷, strip RAID-1:镜像卷, mirror RAID-2 ...... RAID-5 RAID-6
RAID-7 RAID-10 RAID-01 RAID-50
RAID-0
因为读写时都可以 并行处理 ,所以在所有的级别中, RAID 0 的 速度是最快 的。但是 RAID 0 既没有冗余功能,也不具备容错能力,如果一个磁盘(物理)损坏,所有数据都会丢失。 读、写性能提升可用空间:N*min(S1,S2,...)
无容错能力
最少磁盘数:2块
服务器只能识别一种模式,没有混杂模式
直通模式:没有做 raid
raid 模式: 做了 raid
raid 0 1 块没有提高性能的效果
RAID-1
也称为镜像 , 两组以上的N个磁盘相互作镜像 ,在一些多线程操作系统中能有很好的读取速度,理论上读取速度等于硬盘数量的倍数,与RAID 0 相同。另外写入速度有微小的降低。
读性能提升、写性能略有下降
磁盘利用率 50%
有冗余能力
最少磁盘数:2n (n>=1)
RAID-5
读、性能提升
写的性能略微降低
利用率: n-1 留出做计算结果
有容错能力:允许最多1块磁盘损坏
最少磁盘数: 3 (>=3)
RAID-10
读、写性能提升
可用空间:n/2
有容错能力:每组镜像最多只能坏一块
最少磁盘数:4 (偶数>=4)
实现 软raid
mdadm 工具:为软 RAID 提供管理界面,为空余磁盘添加冗余,结合内核 md(multidevices)RAID 设
备可命名 为 /dev/md0 、 /dev/md1 、 /dev/md2 、 /dev/md3 等做raid (分区)
建立文件系统
挂载
常用选项说明
mdadm [mode] <raiddevice> [options] <component-devices>
命令 模式 阵列名字(md0) 选项 选择/dev/sdb /dev/sdd
mdadm -Cv /dev/md0 -l 10 -n 4 -x 1 /dev/sd[bcde] {b,c,d,e,f}
模式:
创建: -C
装配: -A
监控: -F
管理: -f, -r, -a
<raiddevice>: /dev/md#
<component-devices>: 任意块设备
-C: 创建模式
-n #: 使用 # 个块设备来创建此 RAID
-l # :指明要创建的 RAID 的级别 0 1 5 10
-c CHUNK_SIZE: 指明块大小 , 单位 k
-x #: 指明空闲盘的个数 热备 盘 -x 1 /dev/sd#
-D :显示 raid 的详细信息
mdadm -D /dev/md#
软 raid 名字
管理模式:
-f: 标记指定磁盘为损坏
-a: 添加磁盘
-r: 移除磁盘
观察md的状态: cat /proc/mdstat
例子
#使用mdadm创建并定义RAID设备
mdadm -C /dev/md5 -l 5 -n 3 -x 1 /dev/sd{b,c,d, e}1
命令 raid 名 raid级别 硬盘数 热备
madam -Cv /dev/md5 -l 5 -n 3 /dev/sd[bcd]1 -x 1 /dev/sde1
命令 raid名 raid级别 硬盘数 热备
#用文件系统对每个RAID设备进行格式化 mkfs.xfs /dev/md0
#使用mdadm检查RAID设备的状况 mdadm --detail /dev/md0 或 mdadm -D /dev/md0
#增加新的成员 mdadm -G /dev/md0 -n4 -a /dev/sdf1
#模拟磁盘故障 mdadm /dev/md0 -f /dev/sda1
#移除磁盘 mdadm /dev/md0 -r /dev/sda1
#在备用驱动器上重建分区 mdadm /dev/md0 -a /dev/sda1 (要先关闭设备)
#删除raid信息: mdadm --zero-superblock /dev/sdb1
#系统日志信息: cat /proc/mdstat
生成配置文件: mdadm -D -s >> /etc/mdadm.conf
停止设备: m dadm -S /dev/md0 (要先解挂载)
激活设备:mdadm -A -s /dev/md0
强制启动:mdadm -R /dev/md0
删除raid信息:mdadm --zero-superblock /dev/sdb1
建立 raid5
建立 raid 10
mdadm -A -s /dev/md0
mdadm -R /dev/md0
mdadm --zero-superblock /dev/sdb1
建立raid5
添加4个硬盘,创建bcde硬盘分区: fdisk /dev/sdb (n t fd w)
创建并定义RAID: mdadm -Cv /dev/md5 -l 5 -n 3 /dev/sd[bcd]1 -x 1 /dev/sde1
格式化: mkfs.xfs /dev/md5
挂载: mkdir /home/raid5
(临时) mount /dev/md5 /home/raid5
(永久) vim /etc/fstab
/dev/md5 /home/raid5 xfs defaults 0 0
mount -a
查看状态: cat /proc/mdstat 或 mdadm -D /dev/md0
每5秒看一次: watch -n 5 'cat /proc/mdstat'
模拟故障: mdadm /dev/md5 -f /dev/sdb1 (让sdb1故障)
查看 mdadm -D /dev/md5
mdadm /dev/md5 -r /dev/sdb1 (删除sdb1)
mdadm /dev/md5 -a /dev/sdb1 (重建分区)
建立raid10
// 先做两个raid1
mdadm -Cv /dev/md0 -l1 -n2 /dev/sd[bc]1
mdadm -D /dev/md0
mdadm -Cv /dev/md1 -l1 -n2 /dev/sd[de]1
mdadm -D /dev/md1
cat /proc/mdstat
创建raid10
mdadm -Cv /dev/md10 -l1 -n2 /dev/md1 /dev/md0
mdadm -D /dev/md10 cat /proc/mdstat
格式化: mkfs.xfs /dev/md10
挂载: mkdir /home/raid10
mount /dev/md10 /home/raid10
# 创建 RAID10 ( 先做镜象,再做条带 )
mdadm -Cv /dev/md0 -l1 -n2 -x1 /dev/sd[bc]1 20G
mdadm -Cv /dev/md1 -l1 -n2 -x1 /dev/sd[de]1 20G
mdadm -Cv /dev/md10 -l0 -n2 /dev/md0 /dev/md1 40G