Raid
什么是Raid?
Raid是廉价冗余磁盘阵列,简称磁盘阵列
Raid是一种把多块独立的物理磁盘按不同的技术组合起来形成的磁盘组,在逻辑上(做完Raid,装完系统后) 看起来就是一块大的磁盘,可以提供比单个物理磁盘更大的存储容量或更高的储存性能,同时又能提供不同级别数据冗余备份的一种技术
Raid的级别介绍
把多个物理磁盘通过不同技术方式组成磁盘阵列,这个不同的技术方式就被成为Raid级别
Raid级别一般有:Raid0、Raid1、Raid2、Raid3、Raid4、Raid5、Raid6、Raid7、Raid10、Raid53
生产环境常用的Raid级别:Raid0、Raid1、Raid5、Raid10
Raid级别 | 关键优点 | 关键缺点 | 实际应用场景 |
---|---|---|---|
Raid0 | 读写速度快 | 没有任何冗余 | MySQL Slave,集群节点RS |
Raid1 | 100%冗余,镜像 | 读写性能一般成本高 | 单独,数据重要,且不能宕机的业务。监控 ,系统盘。 |
Raid5 | 具有一定的性能和冗余,可以坏一块盘。读性能不错 | 写入性能不高 | 一般业务都可以用 |
Raid10 | 读写性能很快,100%冗余 | 成本高 | 性能和冗余要求都很好的业务。数据库主库和存储的主节点 |
R级别 | 描述 | 速度* | 容错性能 |
---|---|---|---|
RAID0 | 磁盘分段 | 磁盘并行输入/出 | 无 |
RAID1 | 磁盘镜像 | 没有提高 | 有(允许单个磁盘出错) |
RAID2 | 磁盘分段加海明码纠错 | 没有提高 | 有(允许单个磁盘出错) |
RAID3 | 磁盘分段加专用奇偶校验盘 | 磁盘并行输入/出 | 有(允许单个磁盘出错) |
RAID4 | 磁盘分段加专用奇偶校验盘需异步磁盘 | 磁盘并行输入/出 | 有(允许单个磁盘出错) |
RAID5 | 磁盘分段加奇偶校验分布在各个磁盘 | 磁盘并行输入/出比RAID0稍慢 | 有(允许单个磁盘出错) |
RAID10 | 速度快、完全容错 成本高 | 速度快 | 有(允许50%个磁盘出错) |
冗余
冗余,指重复配置系统的一些部件,当系统发生故障时,冗余配置的部件介入并承担故障部件的工作,由此减少系统的故障时间 Redundant,自动备援,即当某一设备发生损坏时,他可以自动作为后备式设备代替设备
Raid分类
大并发需要高性能软Riad性能差
Raid分为两类
软raid 系统层面实现,软件实现性能较差
硬raid 硬件层实现,性能好
主板板载raid:功能弱 0 1
独立raid卡:功能强 ,0/1/5/10 (工作选择)
逻辑卷和raid卡的区别
- LVM:灵活的管理磁盘,有一定冗余和性能,但很弱
- RAID:更侧重性能和数据安全
LVM软件实现的,性能太低。
高并发场景,性能降低5-10%
买服务器时插满磁盘,分区规划好,永远不需要LVM
我们为什么需要磁盘阵列?
磁盘阵列可以把多个磁盘驱动器通过不同的连接方式连接在一起协同工作,大大提高读取速度,同时把磁盘系统的可靠性提高到接近无措的境界,时期可靠性极高。
用RAID最直接的好处:
- 提升数据安全性
- 提升数据读写性能
- 提供更大的单一逻辑磁盘数据容量存储
Raid 0生产应用场景:
- 负载均衡集群下面的多个相同RS节点服务器
- 分布式文件存储下面的主节点或CHUNK SERVER
- MySQL主从复制的多个Slave服务器
- 对性能要求很高,对冗余要求很低的相关业务
以4块盘做Raid 0
关注点 | 描述 |
---|---|
容量 | 是四快盘挤在一起的容量,在raid级别中具备最高储存性能,原理是把现需的数据分散到多个磁盘上存取 |
性能 | 理论上磁盘读写速度比单盘提升四倍,磁盘越多倍数越高 |
冗余 | 无任何冗余,快一块盘,整个raid就不能用了 |
场合 | 适用于大规模并发读写,但对数据安全性能要求不高的情况。 |
特点 | 速度快,无冗余,容量无损失 |
RAID 1级别详解
RAID 1 又称为镜像,特德宗旨是最大限度的保证用户数据的可用性和修复性.
关注点 | 描述 |
---|---|
容量 | 损失50%的数据容量。例如:两块1T盘,做raid之后,容量为1T |
性能 | MIRROR不能调高储存性能。 |
冗余 | 在所有raid级别中,raid 1提供最高的数据安全保障。冗余度100% |
场合 | 使用于重要数据,如服务器系统分区和对性能要求很高的数据库存储等领域 |
特点 | 100%冗余,容量损失一半,只能是两块盘。两块盘大小不一样,取最小盘容量 |
Raid 5描述
Raid 5是一中存储性能、数据安全和存储成本兼顾存储解决方案
Raid 5 需要三块以上的物理磁盘,可以提供热备盘实现故障的恢复;采用奇偶校验,可靠性强,且只有同时损坏两块硬盘是数据才会完全损坏,只坏一块盘是,系统会根据存储的奇偶校验位重建输数据,临时提供服务;此时如果有热备盘,系统还会自动在热备盘上重建故障磁盘上的数据;
Raid 5 可以理解为是Raid 0和Raid 1的折衷方案。
raid5 关键是用了奇偶校验
关注点 | 描述 |
---|---|
容量 | 只损是一块盘容量 |
性能 | Raid5具备和Raid 0相近似的数据读写速度,只是多了一个奇偶校验信息,写入数据的速度较慢 |
冗余 | 可损失一块盘。Raid 5数据安全保障程度比Raid1低,二磁盘空间利用率要比Raid高 |
场合 | Raid 5可以理解为是Raid 0 和Raid 1的折衷方案。适用于性能和冗余都有一定要求,又不是十分高的情况下。MySQL的主从库都可以,存储也可以。普通服务器为了减少成本,又保持一定的冗余和读写性能都可以做Raid 5 |
特点 | 容量损失一块盘,无论多少块盘组合,写数据通过奇偶教验,是Raid 0 和Raid 1的折衷方案 |
对性能和安全要求高,追求速度不用raid5
Raid 5 优缺点
优点 | 缺点 |
---|---|
很高的读取效率 | 硬盘的故障会对吞吐量造成中等影响 |
中等写入效率 | 控制器的设计较为复杂 |
很低的ECC硬盘数量占用率 | 相对于RAID-1来说,因硬盘故障而重新构建RAID体系比较麻烦 |
良好的几何数据传输率 | 个别数据块的传输率相当于单个硬盘相当 |
适用领域: 文件与应用服务器 数据库服务器 Web/E-Mail以及新闻服务器 Riad-5是适用于用于多领域的 |
Raid10(01)
Raid10和Raid01试讲磁盘按照不同的方式进行逻辑组合。
Raid10是先将四块硬盘在纵向上分别两两做镜像,镜像后再在横向上做条带。简而言之:Raid 10是先作镜像后做条带。这种情况如果只是坏掉其中一个硬盘,对Raid组影响不大,只要不是同时坏掉其中的一个硬盘和他的镜像盘,Raid组不会崩溃
Raid01 是先将四块硬盘中横向两两做条带,然后再纵向上作镜像。这种情况如果两个条带上的任意两块硬盘坏掉了,则整个Raid组都将崩溃。不管发生介质损坏的两块硬盘是否是镜像盘。
关注点 | 描述 |
---|---|
容量 | 损失一半盘的容量 |
性能 | 大于1和5,小于0 |
冗余 | 可损失两块,大于5和0,小于1 |
场合 | 高并发存储数据库系统 |
磁盘分区
磁盘在linux里的命名
IDE /dev/hda hdb
SAS /dev/sda sdb
磁盘分区类型
主分区
主分区他是系统中必须要存在的分区,系统盘选择主分区安装
主分区数字编号只能是1-4
主分区最多四个,最少一个扩展分区
扩展分区相当于一个独立的磁盘
自己独立的分区表
不能独立存在,既不能直接存放数据
必须在扩展分区上建立逻辑分区,才能存放数据。
扩展分区会占用主分区的编号(主分区+扩展分区)小于等于4扩展分区可以没有,有只能存在一个逻辑分区
数字编号从5开始
逻辑分区存放与扩展分区之上
可以存放任何普通数据
磁盘分区的工作原理
磁盘分区按柱面分区。
磁盘分区登记地点叫做磁盘分区表
用来存放分区结果的信息
0磁道0磁头1扇区占用1扇区的前446字节(存放系统引导信息的)后面的64字节(分区表),剩下2字节为结束标志
磁盘分区表是有限的,64字节 一个分区固定占16字节,只能分4个分区(主分区+拓展分区)64/16=4
分区实战
磁盘分区本质就是改64字节的分区表
fdisk 更改那个64 字节,修改MBR分区表 ,MBR格式
被修改的磁盘,磁盘容量小于2T
磁盘分区其他命令parted gpt分区格式,既能修改小于2T也能修改大于2T
[root@oldboyedu ~]# fdisk /dev/sdb #fdisk 加磁盘路径(需要分区的磁盘)
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x12967dd6.
Command (m for help):
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition #删除所创建的分区
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu#帮助命令
n add a new partition #创建一个新的分区
o create a new empty DOS partition table
p print the partition table #打印分区表
q quit without saving changes #退出不保存
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit #保存退出
x extra functionality (experts only)
Command (m for help): n #创建一个新的分区
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p #选择创建分区
Partition number (1-4, default 1): #选择主分区号(主分区为1--4,第一个默认为1)
First sector (2048-2097151, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): +150M #分区大小
Partition 1 of type Linux and of size 150 MiB is set
Command (m for help): n #继续创建分区
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p #创建主分区
Partition number (2-4, default 2): #显示还能创建2--4号的主分区
First sector (309248-2097151, default 309248): #开始的扇区数
Using default value 309248
Last sector, +sectors or +size{K,M,G} (309248-2097151, default 2097151): +150M #分区大小
Partition 2 of type Linux and of size 150 MiB is set
Command (m for help): N
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): P
Partition number (3,4, default 3):
First sector (616448-2097151, default 616448):
Using default value 616448
Last sector, +sectors or +size{K,M,G} (616448-2097151, default 2097151): +150M
Partition 3 of type Linux and of size 150 MiB is set
Command (m for help): n
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): e
Selected partition 4
First sector (923648-2097151, default 923648):
Using default value 923648
Last sector, +sectors or +size{K,M,G} (923648-2097151, default 2097151):
Using default value 2097151
Partition 4 of type Extended and of size 573 MiB is set
Command (m for help): n
All primary partitions are in use
Adding logical partition 5
First sector (925696-2097151, default 925696):
Using default value 925696
Last sector, +sectors or +size{K,M,G} (925696-2097151, default 2097151): +150M
Partition 5 of type Linux and of size 150 MiB is set
Command (m for help): n
All primary partitions are in use
Adding logical partition 6
First sector (1234944-2097151, default 1234944):
Using default value 1234944
Last sector, +sectors or +size{K,M,G} (1234944-2097151, default 2097151): +150M
Partition 6 of type Linux and of size 150 MiB is set
Command (m for help): n
All primary partitions are in use
Adding logical partition 7
First sector (1544192-2097151, default 1544192):
Using default value 1544192
Last sector, +sectors or +size{K,M,G} (1544192-2097151, default 2097151): #磁盘剩余空间都给最后一个分区
Using default value 2097151
Partition 7 of type Linux and of size 270 MiB is set
Command (m for help): p #查看分区表
Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x12967dd6
Device Boot Start End Blocks Id System
/dev/sdb1 2048 309247 153600 83 Linux
/dev/sdb2 309248 616447 153600 83 Linux
/dev/sdb3 616448 923647 153600 83 Linux
/dev/sdb4 923648 2097151 586752 5 Extended
/dev/sdb5 925696 1232895 153600 83 Linux
/dev/sdb6 1234944 1542143 153600 83 Linux
/dev/sdb7 1544192 2097151 276480 83 Linux
Command (m for help): w #保存退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.